図2は本発明の第1の実施例のパケット中継処理装置の構成を示す図である。
同図において、11はサーバであり、ネットワーク制御部12を備えており、ネットワーク制御部12は、管理者が入力したルーティング情報を制御情報通信部31を通して、ネットワーク接続装置20のルーティングテーブル23aに書き込む。制御情報通信部31は、例えばPCI(Peripheral Components Interconnect)バスやシリアルインターフエースである。
20はネットワーク接続装置であり、本実施例のネットワーク接続装置20は、図39に示した複数のネットワーク接続装置104を統合したものであり、パケット処理部21、セッション管理部22、セッションテーブル22a、ルーティング処理部23、ルーティングテーブル23aを備え、前記図38のサーバが行っていた、パケット処理、セッション管理、ルーティング処理等は、ネットワーク接続装置20で行われる。
図2において、ネットワークから入力された図3に示すパケットは、ネットワーク接続部30を通してネットワーク接続装置20のパケット処理部21に送られる。ネットワーク接続部30は、例えばイーサネット(登録商標)コントローラである。
パケット処理部21では、後述する図4のフローチャートに示す処理を行い、パケットをセッション管理部22に送る。セッション管理部22では、後述する図5のフローチャートに示すようにセッション管理を行い、パケットをパケット処理部21に渡す。
パケット処理部21は、後述する図4に示すようにパケットの処理を行い、パケットをネットワーク接続部30を介して、ネットワークに出力する。
図4に上記パケット処理部の処理フローを示す。
同図に示すように、パケット処理部21は、ネットワークから入力されたパケットのバッファリングを行い(ステップS1)、チェックサムのチェックを行う(ステップS2)。ついで、パケット処理部21は、パケットのデフラグメンテーションを行い(ステップS3)、パケットをセッション管理部22へ送る(ステップS4)。
そして、パケット処理部21は、セッション管理部22から送られてくるパケットのフラグメンテーション(ステップS5)、チェックサム再計算を行い(ステップS6)、パケットをネットワークに出力する。なお、パケット処理部21における処理は従来のパケット処理部における処理と同じである。
図5に上記セッション管理部22の処理フローを示す。
同図に示すように、セッション管理部22にパケットが送られてくると、セッション管理部22では、そのパケットに対応するセッションデータをセッションテーブル22aから検索する(ステップS11)。セッションテーブル22aは、セッションを管理するためのセッションデータを格納するテーブルである。図6にセッションテーブル22aの構成例を示す。図6に示すように、セッションデータは、セッションを識別するセッションID(IDentifier)、セッションを一意に決定するためのセッション検索キー(宛先/送信元アドレス、宛先/送信元ポート、プロトコル)、セッションの状態、および出力先などを項目として持つ。
ステップS11において、セッション管理部22は、パケットのIPヘッダ内の送信元/宛先IPアドレス、及びTCPヘッダ内のプロトコル、送信元/宛先ポート等の情報をキーにしてセッションテーブル22aを検索する。
セッション管理部22に送られてきたパケットのヘッダ内の情報とセッション検索キーが一致するセッションデータが、セッションテーブル22aに登録されていない場合には(ステップS12:No)、その送られてきたパケットは、あるセッションの最初のパケットであるので、セッション管理部22は、セッションテーブル22aにそのセッションに関するセッションデータを登録する(ステップS13)。すなわち、ステップS13において、セッション管理部22は、送られてきたパケットのヘッダ内の情報に基づいて、図6に示すセッションテーブル22aにセッション検索キー(宛先/送信元アドレス、宛先/送信元ポート、プロトコル)や、セッションの状態を書き込む。
ついで、ルーティング処理部23でルーティングテーブル23aの検索を行い、検索の結果として得られた出力先をセッションテーブル22aに書き込む(ステップS14)。
一方、セッションテーブル22aにそのパケットのヘッダ内の情報とセッション検索キーが一致するセッションデータが登録されている場合には(ステップS12:Yes)、セッション管理部22は、そのセッションの状態を検査して、状態が遷移するかどうかを判定する(ステップS15)。そして、状態が遷移する場合には(ステップS15:Yes)、セッション管理部22は、セッションテーブル22a内のセッション状態を書き換える(ステップS16)。
そして、セッション管理部22は、セッションの状態遷移が終わりセッションクローズの場合、すなわちセッション状態がTIME_WAIT及びCLOSEDになっている場合には(ステップS17:Yes)、そのセッションに関するセッション検索キー、セッション状態および出力先等をセッションテーブル22aのエントリから削除する(ステップS18)。そして、処理が終わったパケットは出力先に送られる。セッションの状態がセッションクローズになっていない場合は(ステップS17:No)、セッション管理部22はステップS18を行わず、処理が終わったパケットは出力先に送られる。
上記状態遷移は、TCPとその他のプロトコルではその判断が異なる。以下、TCPとその他のプロトコルを分けて説明する。
図7にTCPの場合のセッション状態を示す。TCPの場合、セッション状態
には図7に示すように、CLOSED、SYN_RECV、ESTAB、FIN_RECV、FIN_SENT、TIME_WAITの6つの状態を設定する。
セッションテーブル22aのセッション状態には、図6に示すようにCLOSEDを除く上記5つの状態のうち、どの状態であるかが書き込まれている。
セッションが登録されていない時には状態がCLOSEDになっており、この状態でSYNパケットが到着した場合、セッション状態はSYN_RECVに状態遷移する。その際、セッション管理部22は、セッションテーブル22aの「セッション状態」をSYN_RECVに書き換える。ついで、セッション状態は、ESTAB〈Established〉状態に遷移し、パケットが送受信される。そして、FINパケットによりセッションは終了する。以下同様にして、SYNパケットとFINパケットの到着を検知することにより、セッション管理部22は、セッションの開始と終了を検知することができる。
図8にTCPの場合のセッション開始からセッション終了までの状態遷移の様子の一例を示す。
同図に示すように、クライアントとサーバ間で通信を行う場合、まずクライアントからSYNパケットを送信する。ついで、サーバからSYN_ACKパケットを返し、これに応答してクライアントからサーバにACKパケットを送信する。これにより、セッション状態は、SYN状態からESTAB(Established)状態に遷移し、以後、クライアントとサーバは、相互にパケットを送受信する。そして、セッションを終了する際、例えばクライアントからFINパケットをサーバに送信し、サーバがFIN_ACKパケットをクライアントに送信し、これに応答してクライアントからACKパケットをサーバに送信することによりセッションが終了する(CLOSED状態となる)。
これに対し、TCP以外では、パケットにSYNやFINのフラグが存在しない。図9に一例としてUDPの場合の状態遷移を示す。図9に示すようにセッションテーブル22aに登録されていないセッションに属するパケットが届いた場合には、セッション管理部22は、そのセッションの状態をESTABとする。セッションの終了は検知することができないので、セッション管理部22は、タイマーによって一定時間パケットの通過が無い場合にはそのセッションをセッションテーブル22aから削除することによって対応する。
以上説明したように、本実施例においては、ネットワーク接続装置20にセッション管理に基づくパケット中継処理機能を設け、従来サーバ11上に配置していた機能をネットワーク接続装置20が果たすようにしたので、サーバ11のCPUの使用率を下げることができる。
また、ネットワーク接続装置20にセッション管理部22を設け、セッション開始時にセッションテーブル22aに出力先を登録しているので、セッションの途中でルーティングテーブル23aのエントリが変更されても、現在継続中のセッションについては、一貫性を保持できる。
図10は本発明の第2の実施例のパケット中継処理装置の構成を示す図である。本実施例は、前記図2に示した第1の実施例のパケット中継処理装置において、セッション情報をサーバ11に転送するサーバ転送部24、セッション情報の通信を行うセッション情報通信部32、外部セッション管理部13、外部セッションテーブル13aを設けたものである。そして、ネットワーク接続装置20のセッションテーブル22aが一杯になったとき、サーバ11に設けた外部セッション管理部13によりセッション管理を行う。その他の動作は第1の実施例と同様である。
図11に本実施例におけるセッション管理部、外部セッション管理部における処理フローを示す。
同図に示すように、セッション管理部22にパケットが送られてくると、セッション管理部22、外部セッション管理部13では、パケットのヘッダに格納された情報を検索キーとしてセッションテーブル22a、外部セッションテーブル13aを検索する(ステップS21)。セッションテーブル22a、13aは前記図6で説明したセッションを管理するための情報を格納したテーブルである。
セッション管理部22に送られてきたパケットのヘッダ内の情報とセッション検索キーが一致するセッションデータがセッションテーブル22a及び外部セッションテーブル13aに登録されていない場合には(ステップS22:No)、そのパケットは、あるセッションの最初のパケットであるので、まず、セッション管理部22は、セッションテーブル22aが一杯かを調べる(ステップS23)。
セッションテーブル22aが一杯でない場合には(ステップS23:No)、セッション管理部22は、前記したようにセッションテーブル22aにそのセッションのセッションデータの登録を行う(ステップS24)。ついで、ルーティング処理部23でルーティングテーブル23aの検索を行い、結果をセッションテーブル22aに出力先を書き込む(ステップS25)。
また、セッションテーブル22aに、パケットのヘッダ内の情報とセッション検索キーが一致するセッションデータが登録されている場合には(ステップS22:Yes)、セッション管理部22はセッション状態を検査して、状態が遷移するかどうかを判定する(ステップS26)。そして、状態が遷移する場合には(ステップS26:Yes)、セッション管理部22は、セッションテーブル22aに格納されたセッションデータのセッション状態を書き換える(ステップS27)。
そして、セッションの状態遷移が終わった後、セッションクローズの場合には(ステップS28:Yes)、セッション管理部22は、セッションテーブル22aのエントリからそのセッションデータを削除する(ステップS29)。処理が終わったパケットは出力先に送られる。
一方、セッションの最初のパケットを登録する際、セッションテーブル22aが一杯の場合には(ステップS23:Yes)、サーバ11の外部セッション管理部13で上記と同様の処理を行う。
すなわち、前記ステップS24およびステップS25で説明したようにして、外部セッション管理部13は、外部セッションテーブル13aにそのパケットのセッションのセッションデータを登録し(ステップS30)、ルーティング処理部23は、ルーティングテーブルの検索を行って、結果を外部セッションテーブル13aに出力先を書き込む(ステップS31)。
また、外部セッションテーブル13aにそのパケットのヘッダ内の情報とセッション検索キーが一致するセッションデータが登録されている場合には(ステップS22:Yes)、外部セッション管理部13は、外部セッションテーブル13aのセッション状態を検査して、セッション状態が遷移するかどうかを判定する(ステップS26)。状態が遷移する場合には、外部セッション管理部13は、外部セッションテーブル13aの「セッション状態」を書き換える(ステップS27)。そして、セッションの状態遷移が終わった後、セッションクローズの場合には(ステップS28:Yes)、外部セッション管理部13は、セッションテーブル13aのエントリからそのセッションデータを削除する(ステップS29)。
以上のように、本実施例においては、ネットワーク接続装置20にセッション管理に基づくパケット中継処理機能を設け、従来サーバ11上に配置していた機能をネットワーク接続装置20が果たすようにしたので、第1の実施例と同様、サーバ11のCPUの使用率を下げることができる。また、第1の実施例と同様、セッションの途中でルーティングテーブルが変更されても、現在継続中のセッションについては、一貫性を保持できる。
さらに、セッション数がネットワーク接続装置20のセッションテーブルに登録できる数を上回った場合、サーバ11に設けた外部セッション管理部13でセッション管理を行っているので、ネットワーク接続装置20で溢れた分をサーバ11で管理することが可能となる。
なお、上記説明ではサーバ11に外部セッション管理部13を設けてサーバ11でセッション管理を行っているが、サーバ11に外部セッションテーブル13aのみを設け、セッション管理はネットワーク接続装置20のセッション管理部22で行い、セッションテーブル22aで溢れたセッションを上記外部セッションテーブル13aに登録するようにしてもよい。
図12は本発明の第3の実施例のパケット中継処理装置の構成を示す図である。本実施例によれば、ネットワーク接続装置20に処理振分部26とサービス処理部27とポリシーテーブル25を設け、サーバ11により設定されるポリシーに従って、ネットワーク接続装置20がフィルタリング、負荷分散、NAT等のサービス処理を実行する。
同図において、11はサーバであり、サーバ11はサービス制御部14を備えており、サービス制御部14は、制御情報通信部31を通して、ネットワーク接続装置20のポリシーテーブル25にポリシーを書き込む。ここで、ポリシーとは、フィルタリング、負荷分散等のサービスを実行するためのルールである。例えば、フィルタリングの場合には、ポリシーに基づいて、ポリシー検索キーの範囲でパケットを廃棄するか通過させるかが設定される。負荷分散の場合には、ポリシーに基づいて、仮想(代表)IPアドレス:ポート番号と、振分先全てのサーバのIPアドレス:ポート番号が設定される。NATの場合には、ポリシーに基づいて、変換後IPアドレス:ポート番号が設定される。
20はネットワーク接続装置であり、本実施例のネットワーク接続装置20は、第1の実施例と同様、パケット処理部21、セッション管理部22、セッションテーブル22a’を備え、さらに、上記ポリシーテーブル25、処理振分部26及び複数のサービス処理部27を備える。サービス処理部27は、パケットに適用されるサービスのタイプに応じて複数備えられる。
本実施例によれば、セッション管理部22は、パケットを受信した場合、受信したパケットのヘッダ内の情報を用いて、セッションテーブル22a’からセッションデータを検索する。そして、そのパケットのヘッダ内の情報が示すセッションデータがセッションテーブル22a’に登録されている場合、上記とほぼ同様な処理が行われる。
一方、そのパケットのヘッダ内の情報によって示されるセッションデータがセッションテーブル22a’に登録されていない場合、セッション管理部22は、ポリシーテーブル25を参照し、そのパケットに適用されるべきポリシーに基づいて、セッションデータを作成し、作成したセッションデータをセッションテーブル22a’に格納する。
処理振分部26は、パケットに対する適用サービスをセッションテーブル22a’に格納されたセッションデータに基づいて判別し、判別された適用サービスに対応するサービス処理部27に処理を振り分ける。複数のサービス処理部27は、各サービスに必要な処理を行う。
以下、図13及び図14を用いて、本実施例に係わるセッションテーブル22a’及びポリシーテーブル25について説明する。図13に、本実施例に係わるセッションテーブル22a’の構造例を示す。セッションテーブル22a’は、前記したようにセッションを管理するセッションデータを格納するテーブルである。セッションデータは、セッションID、セッション検索キー(宛先/送信元アドレスおよびポート、プロトコル等)や、セッションの状態、および出力先等を項目として含む。本実施例においては、図13に示すように、セッションデータは、上記情報に加えて、さらに、適用サービスタイプ(フィルタリングや負荷分散など)、そのサービス固有情報(振分先アドレスなど)、一貫性保持時間、イベントフラグ等を項目として含む。適用サービスタイプは、パケットに適用するべきサービスを示す。サービス固有情報は、適用するべきサービスに固有な情報を示す。例えば、適用サービスタイプが負荷分散である場合、サービス固有情報として振分先のアドレスが考えられる。一貫性保持時間は、セッションが終了してからセッションデータを保持すべき時間を示す。つまり、一貫性保持時間が経過するまで、セッションが終了してもセッションデータはセッションテーブル22a’から削除されない。イベントフラグは、そのパケットまたはパケットのヘッダのログを採取するべきか否かを示す。イベントフラグが「オン」である場合、そのパケットまたはパケットのヘッダは、サーバに転送され、サーバによってログが採取される。
図14に、ポリシーテーブルの構成例を示す。ポリシーテーブルは、パケットに対してサービスを実行するためのルールであるポリシーを格納する。図14に示すようにポリシーは、ポリシーID、ポリシー検索キー、適用サービスタイプ、サービス固有情報、優先度、グループID、イベントフラグ、一貫性保持時間及びポリシーヒット数を含む。
ポリシーIDは、ポリシーを識別する情報である。ポリシー検索キーは、パケットに適用するべきポリシーを決定するための情報である。適用サービスタイプは、ポリシーに基づいてパケットに適用されるサービスを示す。サービス固有情報は、セッションデータと同様に、適用サービスに固有な情報を示す。優先度は、ポリシーの優先順位を示す数値である。優先度の値が低いほど、そのポリシーは優先される。優先度は、パケットのヘッダ内の情報が、複数のポリシーのポリシー検索キーに一致した場合、どのポリシーを優先すべきか決定する際に用いられる。グループIDは、ポリシーが属するグループを識別する情報である。イベントフラグ及び一貫性保持時間は、セッションデータと同様である。ポリシーヒット数は、そのポリシーに該当したセッションのカウント値を格納する。
イベントフラグ、一貫性保持時間、グループID及びポリシーヒット数を用いた処理についての説明は、各変形例の変形例として後述する。
以下、図12に示す第3実施例にかかわるパケット中継処理装置の動作について図15から図19を用いて説明する。
まず、図12に示すパケット中継処理装置において、ネットワークから入力されたパケットは、ネットワーク接続部30を通り、パケット処理部21に送られる。
パケット処理部21は、前記した図4の処理フローに示したように、入力したパケットのバッファリングとチェックサムのチェック、デフラグメンテーションを行った後、そのパケットをセッション管理部22へ送る。そして、パケット処理部21は、セッション管理部22から送られてきたパケットに対して、フラグメントとチェックサム再計算を行い、ネットワーク接続装置30を介して、ネットワークに出力する。
本実施例のセッション管理部22の処理フローを図15に示す。
同図に示すように、パケットがセッション管理部22に送られてくると、セッション管理部22は、そのパケットのヘッダ内の情報を用いて図13に示すセッションテーブル22a’からセッションデータを検索する(ステップS41)。
セッションテーブルの検索は、第1の実施例と同様、パケットのIPヘッダ内の送信元/宛先IPアドレス、及びTCPヘッダ内のプロトコル、送信元/宛先ポートの情報をキーにして行われる。
パケットのヘッダ内の情報とセッション検索キーが一致するセッションデータがセッションテーブル22a’に登録されていない場合(ステップS42:No)、セッションの最初のパケットであるので、セッション管理部22は、そのセッションに対する適用サービスを判定するため、パケットのヘッダ内の情報を用いて、図14に示すポリシーテーブル25からポリシーを検索する(ステップS43)。
ポリシーテーブル25は、ルーティング情報を持つとともに、サービスを適用する範囲を指定するポリシー検索キー(宛先/送信元アドレスおよびポート、プロトコル。任意や範囲指定でもよい)や適用サービスタイプ(フィルタリング廃棄や負荷分散など)、そのサービス固有の情報(全ての振り分け先アドレスなど)、および、優先度を持つ。
検索の結果、ポリシーテーブル25のエントリとパケットのヘッダ内の情報がマッチした場合、そのポリシーをセッションテーブル22a’の適用サービスタイプの欄に書き込む。つまり、セッション管理部22は、パケットのヘッダに格納された情報と適合するポリシー検索キーを持つポリシーをポリシーテーブル25から取得する。続いて、セッション管理部22は、パケットのヘッダ内の情報をセッション検索キーとするセッションデータを作成し、セッションテーブル22a’に登録する。さらに、セッション管理部22は、ポリシーに含まれる適用サービスタイプ及びサービス固有情報を、それぞれ登録したセッションデータの適用サービスタイプ欄及びサービス固有情報欄に書き込む(ステップS44)。
ただし、複数のポリシーにマッチした場合には、ポリシーテーブル25の優先度が高い順に処理する。また、同一サービスが複数マッチした場合には、優先度が最も高いものを採用し、残りを無効とする。
以下、ポリシーテーブル25を検索した際、パケットのヘッダに格納された情報と適合するポリシー検索キーを持つポリシーが複数存在した場合の処理について、より具体的に説明する。
まず、取得した複数のポリシーに含まれる適用サービスタイプが互いに競合しない場合、セッション管理部22は、ポリシーの優先度の値が低い順に(つまり、優先順位が高い順に)、複数の適用サービスタイプをセッションデータの適用サービスタイプの欄に書き込む。これにより、そのパケットは、優先順位が高い順に複数の適用サービスをうけることになる。
また、取得した複数のポリシーに含まれる適用サービスタイプが互いに競合する場合、セッション管理部22は、複数のポリシーのうち、ポリシーの優先度の値が最も低いポリシーの適用サービスタイプのみをセッションデータの適用サービスタイプの欄に書き込む。これにより、そのパケットは、最も優先順位が高い適用サービスのみを受けることとなる。
以下、具体例を挙げて説明する。あるパケットのヘッダに格納された情報と適合するポリシー検索キーを持つポリシーとして、以下の6ポリシーが取得されたとする。
ポリシー1:適用サービス=フィルタ通過、優先度=10
ポリシー2:適用サービス=フィルタ通過、優先度=100
ポリシー3:適用サービス=フィルタ通過、優先度=200
ポリシー4:適用サービス=負荷分散、優先度=1000
ポリシー5:適用サービス=負荷分散、優先度=2000
ポリシー6:適用サービス=負荷分散、優先度=3000
この場合、フィルタ通過と負荷分散は、互いに競合しない適用サービスタイプである。また、ポリシー1からポリシー3までの適用サービスタイプは全てフィルタ通過であるため、互いに競合する。同様に、ポリシー4からポリシー6までの適用サービスタイプは全て負荷分散であるため、互いに競合する。セッション管理部22は、適用サービスタイプがフィルタ通過であるポリシーのうち、最も優先度の値が低いポリシー1及び、適用サービスタイプがフィルタ通過であるポリシーのうち、最も優先度の値が低いポリシー4を採用する。続いて、ポリシー1のフィルタ通過の優先度は、ポリシー4の負荷分散の優先度よりも低いため、セッション管理部22は、セッションデータの適用サービスタイプの欄に、フィルタ通過を先にして、フィルタ通過及び負荷分散を書き込む。これにより、そのパケットは、フィルタ通過の後に負荷分散サービスを受けることになる。
ステップS42でYesであった場合に行われるステップS45からステップS48までのセッション状態遷移に関する処理は、第1の実施例で説明したのと同様である。すなわち、セッションテーブル22a’にセッションデータの登録がある場合には、セッション管理部22は、セッションテーブル22a’のセッション状態を検査して、状態が遷移するかどうかを判定する(ステップS45)。そして、セッションの状態が遷移する場合には(ステップS45:Yes)、セッション管理部22は、セッションテーブル22a’の状態を書き換える(ステップS46)。そして、セッションの状態遷移が終わった後、セッション管理部22は、そのセッションのセッションデータをセッションテーブル22a’のエントリから削除する(ステップS48)。処理が終わったパケットは、処理振分部26に送られる(ステップS49)。
処理振分部26/サービス処理部27の処理フローを図16に示す。
処理振分部26/サービス処理部27では、パケットに対して適用サービスを判別し、各サービスに必要な処理を行う。
図16において、パケットが処理振分部26に入力されると、処理振分部26は、そのパケットのヘッダ内の情報を用いてセッションテーブル22a’から、入力したパケットに対応するセッションデータを検索する。検索の結果、得られたセッションデータで示される適用サービスタイプが、ルーティング処理である場合(ステップS51)、処理振分部26は、ルーティング処理を行うサービス処理部27に処理を振り分ける。
入力パケットに対応するセッションテーブル22a’に、ルーティング先が書き込まれていない場合、ポリシーテーブル25のルーティングテーブル(不図示)を引き、出力先インターフェースと宛先MACアドレスをセッションテーブル22a’に書き込む。
より具体的に説明すると、処理振分部26は、そのセッションデータにルーティング先が含まれているか否か判定する(ステップS51)。セッションデータにルーティング先が含まれていない場合(ステップS51:Yes)、処理を振り分けられたサービス処理部27は、そのセッションデータに含まれる宛先IPアドレスを用いてルーティングテーブル(図12では不図示)を検索し、検索の結果得られた出力先インターフェースと宛先MACアドレスをルーティング先として決定し(ステップS52)、決定されたルーティング先をそのセッションデータに書き込む(ステップS53)。以後、そのセッションデータに対応するセッションのパケットは、決定されたルーティング先に転送される。続いて、サービス処理部27は、ステップS56へ進む。
また、処理振分部26が、セッションテーブル22a’を検索した結果得られたセッションデータの適用サービスタイプ欄を参照し、入力パケットが、負荷分散サービスを受けるべきパケットであり、且つ セッションデータに振分先サーバが含まれていない、つまり、振分先サーバがまだ決定していないと判定した場合と判定した場合(ステップS56:Yes)、処理振分部26は、負荷分散処理を行うサービス処理部27に処理を振り分ける。処理を振り分けられたサービス処理部27は、振分先サーバを決定し(ステップS57)、決定された振分先のアドレスを対応するセッションテーブル22a’のサービス固有情報欄に書き込み(ステップS58)、ステップS61に進む。
また、処理振分部26が、セッションテーブル22a’を検索した結果得られたセッションデータの適用サービスタイプ欄を参照し、入力パケットがフィルタリング廃棄サービスを受けるべきパケットであると判定したならば(ステップS61:Yes)、処理振分部26は、パケット廃棄処理を行うサービス処理部27に処理を振り分ける。処理を振り分けられたサービス処理部27は、そのパケットを廃棄し(ステップS62)、処理を終了する。ステップS61の判定でNoである場合、ステップS63に進む。
処理振分部26が、セッションテーブル22a’を検索した結果得られたセッションデータの適用サービスタイプ欄を参照し、入力パケットが、負荷分散もしくはNATサービスを実行するパケットならば、その入力パケットはヘッダ書換を受けるべきパケットであると判定する(ステップS63:Yes)。処理振分部26は、ヘッダ書換処理を行うサービス処理部27に処理を振り分ける。処理を振り分けられたサービス処理部27は、そのパケットのIPヘッダとTCPヘッダ上の送信元/宛先IPアドレス、送信元/宛先ポート等を、セッションテーブル22a’に格納されたセッションデータに従って書き換え、(ステップS64)処理を終了する。なお、セッションデータに複数の適用サービスが格納されている場合、格納されている順に、入力パケットに該複数の適用サービスを実行する。
以上のように、本実施例においては、第1の実施例と同様、サーバ11のCPUの使用率を下げることができ、また、セッションの途中でルーティングテーブルが変更されても、現在継続中のセッションについては、一貫性を保持できる。
さらに、処理振分部26と複数のサービスに対応した複数のサービス処理部27を、サーバ11より高速に処理できるネットワーク接続装置20に配置したので、サーバのCPUの使用率を小さくすることができるとともに、サービス処理を高速化することができる。
さらに、また、本実施例によれば、サービスに応じて複数のサービス処理部27をネットワーク接続装置20に備えることとしている。これにより、新たなサービスが必要になった場合、必要となったサービスに対応する新たなサービス処理部27をネットワーク接続装置20に追加することにより、容易に対応することが可能な柔軟な構成を実現する。例えば、新たに、VPN(Virtual Private Network )暗号化サービスや復号化サービスが必要になった場合、新たに、VPN暗号化サービスを行うサービス処理部27及び復号化サービスを行うサービス処理部27を追加することにより対応することが可能である。
以下、図17を用いて、より詳しくヘッダ書換処理について説明する。図17に、本実施例においてネットワーク接続装置20が負荷分散サービスを行う場合のパケットフローを示す。なお、図17に示すパケットフローは、図13に示すセッションテーブル22a’内のセッションIDが2及び3であるセッションデータに対応している。また、矢印の方向は、パケットの送信される方向を示す。
アドレスが10.25.1.230 であるクライアントからアドレスが192.168.100.75であるサーバへパケットが送信される場合、まず、矢印A1に示すように、クライアントからネットワーク接続装置20へ「宛先アドレス:192.168.100.75、送信元アドレス:10.25.1.230 」をヘッダに格納したパケットP1が送信される。ネットワーク接続装置20のセッション管理部22は、パケットP1に含まれる送信元アドレス10.25.1.230 及び宛先アドレス192.168.100.75等をキーとして図13に示すセッションテーブル22a’を参照し、セッションID=3であるセッションデータを取得する。
取得されたセッションデータ内の適用サービスタイプは「ヘッダ書換」であるため、ネットワーク接続装置20内の処理振分部26は、ヘッダ書換処理を行うサービス処理部27に処理を振り分ける。そのセッションデータ内の固有情報は「宛先アドレス:192.168.100.100 」であるため、処理を振り分けられたサービス処理部27は、パケットP1内の宛先アドレスを「192.168.100.75」から「192.168.100.100 」に書き換える。この結果、矢印A2に示すように、ネットワーク接続装置20からアドレスが192.168.100.100である振分先サーバへ「宛先アドレス:192.168.100.100 、送信元アドレス:10.25.1.230」をヘッダに格納したパケットP2が送信される。
逆に、アドレスが192.168.100.100 である振分先サーバからアドレスが10.25.1.230 であるクライアントへパケットが送信される場合、まず、矢印A3に示すように、振分先サーバからネットワーク接続装置20へ「宛先アドレス:10.25.1.230 、送信元アドレス:192.168.100.100 」をヘッダに格納したパケットP3が送信される。ネットワーク接続装置20のセッション管理部22は、パケットP3に含まれる送信元アドレス及び宛先アドレスをキーとして図13に示すセッションテーブル22a’を参照し、セッションID=2であるセッションデータを取得する。
取得されたセッションデータ内の適用サービスタイプ欄のエントリは「ヘッダ書換」であるため、ネットワーク接続装置20内の処理振分部26は、ヘッダ書換処理を行うサービス処理部27に処理を振り分ける。処理を振り分けられたサービス処理部27は、そのセッションデータ内の固有情報に基づいて、パケット内の送信元アドレスを「192.168.100.100」から「192.168.100.75」に書き換える。この結果、矢印A4に示すように、ネットワーク接続装置20からアドレスが10.25.1.230であるクライアントへ「宛先アドレス:10.25.1.230、送信元アドレス:192.168.100.75」をヘッダに格納したパケットP4が送信される。このようにして、ネットワーク接続装置20は、パケットのヘッダを書き換える事により、パケットの宛先サーバの負荷を分散させることができる。
図18は本発明の第4の実施例のパケット中継処理装置の構成を示す図である。本実施例は、上記第3の実施例のパケット中継処理装置において、処理振分部26にサーバ転送機能を設けるとともに、サーバ11に外部サービス処理部15を設け、サービス処理を、ネットワーク接続装置20とサーバ11の両方で実行できるようにしたものである。本実施例において、サービス処理をサーバ11で実行する場合には、ポリシーテーブル25にサービスの内容だけでなく、サーバ11に転送することを設定しておく。その他の動作は第3の実施例と同様である。
図18に示すように、外部サービス処理部15は、第3実施例に係わるサービス処理部27と同様に、適用サービスタイプに応じて複数の外部サービス処理部15をサーバ11に備えられる。従って、第3実施例におけるサービス処理部27と同様に、新たなサービスタイプが必要になった場合、新たなサービスタイプに対応する新たな外部サービス処理部15をサーバ11に追加することにより、容易に対応することが可能である。
本実施例にかかわるセッションテーブル22a’及びポリシーテーブル25の構成は、第3実施例とほぼ同様であるため、詳しい説明は省略する。異なる点は、第4実施例によれば、サービス処理部27で行うサービスの内容に加えて、サーバ11に転送して外部サービス処理部15で行うサービスの内容をセッションテーブル22a’及びポリシーテーブル25に設定することができることである。
以下、本実施例の処理振分部26、サービス処理部27及び外部サービス処理部15における処理の手順を図19に示す。図19において、ステップS51からステップS64までの処理は図16と同じである。例えば、入力パケットに対応するセッションテーブル22a’内のセッションデータで、適用サービスタイプが「ルーティング」が書き込まれ、且つ、ルーティング先が書き込まれていない場合、サービス処理部27は、ポリシーテーブル25のルーティングテーブルを引き、出力先インターフェースと宛先MACアドレスをセッションテーブル22a’内のセッションデータに書き込む。
このように、セッションテーブル22a’の適用サービスタイプを参照し、適用サービスタイプにサーバ転送が設定されていない場合には、前記図16で説明したように、適用サービスタイプに応じた処理を行い、ヘッダ書換えパケットの場合、ヘッダの書換処理を行う。
さらに、本実施例によれば、サービスの一部をサーバ11内の外部サービス処理部15が行う。そのために、処理振分部26は、図16のステップS51からステップS64の処理に加えて、以下の手順を行う。
すなわち、処理振分部26は、セッションテーブル22a’を検索して得られたセッションデータの適用サービスタイプ欄を参照し、入力パケットが、サーバ11へ転送されるべきパケットであるか否かを判定する(ステップS71)。セッションデータの適用サービスタイプ欄に「サーバ転送:ON」及び適用サービスタイプが設定されている場合には(ステップS71:Yes)、処理振分部26は、パケットに転送用ヘッダを付す処理を行うサービス処理部27に処理を振り分ける。処理を振り分けられたサービス処理部27は、そのパケットに転送用ヘッダを付す。転送用ヘッダの内容は、例えば、適用サービスタイプ、そのパケットのセッションデータのセッションID及び入力インターフェースである。続いて、サービス処理部27は、パケット通信部33を介してパケットをサーバ11の外部サービス処理部15に転送する(ステップS72)。適用サービスタイプに対応する外部サービス処理部15は、受信したパケットを処理する(ステップS73)。
外部サービス処理部15の処理フローは前記した図16と同様である。例えば、セッションデータ内でルーティング先が未決定の場合、外部サービス処理部15は、ルーティング先を決定し、出力先インターフェースと宛先MACアドレスをセッションテーブル22a’に書き込む。
また、入力パケットが、負荷分散サービスをうけるべきパケットであり、セッションデータ内で振分先がまだ決定していない場合、外部サービス処理部15は、振分先サーバを決定し、対応するセッションテーブル22a’内のセッションデータのサービス固有情報欄に書き込む。入力パケットがフィルタリング廃棄サービスを受けるべきパケットならば、外部サービス処理部15は、パケットを廃棄する。
そして、入力パケットが、負荷分散もしくはNATサービスを受けるべきパケットならば、外部サービス処理部15は、そのパケットのIPヘッダとTCPヘッダ上の送信元/宛先IPアドレス、送信元/宛先ポート等を、セッションテーブル22a’内のセッションデータに従って書き換える。
なお、以上では、外部サービス処理部15が、ネットワーク接続装置20におけるサービス内容と同じサービスを行う場合について説明したが、外部サービス処理部15で、例えば、暗号化、復号化、プロキシ、コンテンツ変換、プロトコル変換等のネットワーク接続装置20上で行わないサービス処理を行うようにしてもよい。
以上のように本実施例においては、ネットワーク接続装置20にセッション管理に基づくパケット中継処理機能を設け、従来サーバ上に配置していた機能をネットワーク接続装置20が果たすようにする。これにより、第1の実施例と同様、サーバのCPUの使用率を下げることができる。また、第1の実施例と同様、セッションの途中でルーティングテーブルが変更されても、現在継続中のセッションについては、一貫性を保持できる。さらに、処理振分部26にパケットをサーバへ転送する機能を設けるとともに、サーバ11に外部サービス処理部15を設け、サービス処理を、ネットワーク接続装置20とサーバ11の両方で実行できるようにしたので、ネットワーク接続装置20上で実現するのは困難なサービス処理をサーバ11で行うことができ、ネットワークサービスが複雑な処理を必要とする場合でも対応することができる。
次に、第5実施例について説明する。図20は本発明の第5の実施例のパケット中継処理装置の構成を示す図である。図21に示すように、本実施例に係わるパケット中継処理装置は、第3実施例に係わるパケット中継処理装置を構成するサーバ11にパケット詳細解析部16を更に備える。このように構成することにより、ネットワーク接続装置20の処理振分部26が、与えられた条件によってパケットをサーバ11に転送し、サーバ11内のパケット詳細解析部16がパケットを解析してサービスを決定し、決定したサービス内容をネットワーク接続装置20に設定する。そして、設定以後同じセッションに対して、ネットワーク接続装置20は、上記決定されたサービス内容に基づき中継処理を行うようにしたものである。
図20において、11はサーバであり、サーバ11は前記第3、第4の実施例と同様、サービス制御部14を備えており、サービス制御部14は、前記したように制御情報通信部31を通して、ネットワーク接統装置20のポリシーテーブル25にポリシーを書き込む。更に、サービス制御部14は、サーバ11が備える詳細解析用ポリシーテーブル(図20では不図示)にもポリシーを書き込む。
また、サーバ11はパケット詳細解析部16を備えており、パケット詳細解析部16は、不図示のパケット詳細解析用のセッションテーブル及びポリシーテーブルに基づいて、パケットを解析してそのパケットを含むセッションに対するサービスを決定し、決定したサービス内容をネットワーク接続装置20のセッションテーブル22a’のセッションデータを設定しなおす。再設定後、ネットワーク接続装置20は上記サービス内容に基づき中継処理を行う。詳細解析用のセッションテーブル及びポリシーテーブルのデータ構成については後述する。
第3及び第4実施例のサービス処理部27や外部サービス処理部15と同様に、パケット詳細解析部16も、適用サービスタイプに応じてサーバ11に複数備えられる。従って、新たなサービスタイプが必要になった場合、新たなサービスタイプに対応する新たなパケット詳細解析部16をサーバ11に追加することにより、容易に対応することが可能である。
20はネットワーク接続装置であり、本実施例のネットワーク接続装置20は、第3の実施例と同様、パケット処理部21、セッション管理部22、セッションテーブル22a’、ポリシーテーブル25、処理振分部26、サービス処理部27を備えており、さらに処理振分部26はパケットをサーバへ転送する機能を備えている。
上記パケット処理部21、セッション管理部22、処理振分部26、サービス処理部27の動作は前記第3の実施例と同様である。本実施例に係わるポリシーテーブル25のデータ構成は第3実施例と同様であるため、説明は省略する。本実施例にかかわるセッションテーブル22a’のデータ構成については、後述する。
また、本実施例においては、予めサーバ11によりポリシーテーブル25の適用サービスの欄に、上記パケット詳細解析部16に転送するパケットと適用サービスの適用範囲(例えばhttpはURLフィルタリング適用対象のパケットである等)を設定する。処理振分部26は、前記第4の実施例で説明したのと同様に、ポリシーテーブル25を参照してサーバ11に転送するパケットを判断し、該当パケットのヘッダに適用サービスタイプの種類を付した後、そのパケットをパケット通信路33を介してサーバ11のパケット詳細解析部16に転送する。
以下、図21から図26を用いて、本実施例にかかわる各テーブルのデータ構成について説明する。まず、図21から図24を用いて本実施例にかかわるセッションテーブル22a’について説明する。図21から図24に示すように、セッションテーブル22a’に格納されるセッションデータに含まれる項目は、図13に示すセッションテーブル22a’と同様である。しかし、本実施例によれば、セッションデータがセッションテーブル22a’に登録された後、パケット詳細解析部16が、パケットを解析し、解析結果に基づいてセッションテーブル22a’のセッションデータを再設定する。
図21及び図22に、セッション管理部22が、ポリシーテーブル25に基づいてセッションデータを登録した際のセッションテーブル22a’の一例を示す。図21から図22に示すように、まだパケット詳細解析部16による解析が行われていないため、各セッションデータの適用サービスタイプの欄において、「サーバ転送:ON」となっている。従って、セッションデータに対応するセッションのパケットは、サーバ11に転送される。
図23及び図24に、パケット詳細解析部16が、パケットの解析結果に基づいてセッションデータを再設定した後のセッションテーブル22a’の一例を示す。図23及び図24に示すように、パケット詳細解析部16による解析が行われたため、各セッションデータの適用サービスタイプの欄において、「サーバ転送:OFF」となっている。従って、以後、各セッションデータに対応するセッションのパケットは、サーバ11に転送されない事となる。
また、パケット詳細解析部16によってセッションデータが再設定された結果、図21及び図22に示すセッションテーブル22a’と、図23及び図24に示すセッションテーブル22a’とは、さらに、以下の点が異なる。
・図21に示すようにセッションID=0及び1であるセッションデータの適用サービスタイプの欄に「URLフィルタリング」が格納されている。一方、パケット詳細解析部16によるパケット解析の結果、パケットを通過させることが決定されたため、図23に示す同じセッションIDのセッションデータの同欄には、「フィルタリング通過」が格納されている。
・図21に示すように、セッションID=2から5であるセッションデータの適用サービスタイプの欄に「URL負荷分散」が格納されているが、固有情報の欄に振分先サーバに関する情報は格納されていない。一方、パケット詳細解析部16によるパケット解析の結果、振分先サーバが決定されたため、図23に示すように、セッションID=3及び4であるセッションデータは削除され、セッションID=2及び5であるセッションデータの適用サービスタイプの欄に「ヘッダ書換」が格納され、固有情報の欄に振分先サーバに関する情報が格納されている。
・図22に示すように、セッションID=6及び7であるセッションデータの適用サービスタイプの欄に「FTP(File Transfer Protocol)フィルタリング」が格納されている。その後パケット詳細解析部16によるパケット解析の結果、そのセッションのパケットを通過させると決定されたため、図24に示すように、セッションID=6及び7である制御コネクションのためのセッションデータに加えて、新たにセッションID=8及び9であるデータコネクションのためのセッションデータが登録され、そのセッションデータの適用サービスタイプの欄に「フィルタリング通過」が格納されている。
次に、図25及び図26を用いて、パケット詳細解析部16が備えるテーブルについて説明する。パケット詳細解析部16は、パケットを解析するために、詳細解析用セッションテーブル及び詳細解析用ポリシーテーブルを備える。
図25に、詳細解析用セッションテーブルの構成例を示す。図25に示す詳細解析用セッションテーブルは、図21及び図22に示すセッションテーブル22a’に対応する。図25に示すように、詳細解析用セッションテーブルに格納されるセッションデータは、セッションID、セッション検索キー、セッション状態、関連セッション及び適用サービスタイプを項目として含む。関連セッション以外の項目は、セッションテーブル22a’に格納されるセッションデータと同様である。関連セッションは、パケット詳細解析部16がパケットを解析した結果、関連すると判定されたセッションのセッションIDである。詳細解析用セッションテーブル内のセッションデータは、セッションテーブル22a’に格納されるセッションデータに基づいて、詳細解析を行う際にパケット詳細解析部16によって登録され、詳細解析が終了するとパケット詳細解析部16によって削除される。
図26に、詳細解析用ポリシーテーブルの構成例を示す。図26に示す詳細解析用ポリシーテーブルは、図14に示すポリシーテーブル25よりも詳しいポリシーを格納する。例えば、URLフィルタリングについては、URL毎にパケットを廃棄するか否かを示すURLフィルタリング用URLテーブルが詳細解析用ポリシーテーブルに備えられる。また、例えばFTPフィルタリングについては、IPアドレス及びポート番号ごとに、パケットを通過させるべきか廃棄させるべきかを示すFTPフィルタリング用テーブルが備えられる。更にまた、例えば、URL負荷分散については、URL毎に振分先サーバの候補のIPアドレス及び振分方法を示すURL負荷分散用テーブル等が備えられる。なお、図25に示す詳細解析用セッションテーブルは、図21から図24に示すセッションテーブル22a’に対応している。
以下、図27を用いて第5実施例に係わるパケット中継処理装置の動作概念について説明する。図27において、実線の矢印は、パケットの進む方向を示し、破線の矢印は、テーブル内のデータの読み込み及びテーブルへのデータ書き込みを示す。
まず、サーバ11内のサービス制御部14は、制御情報通信部31を介して、ネットワーク接統装置20のポリシーテーブル25及びパケット詳細解析部16内の詳細解析用ポリシーテーブルにポリシーを書き込む(矢印A11)。
続いて、ネットワーク接続装置20にパケットが入力されると、セッション管理部22は、パケットのヘッダに格納された情報を用いてポリシーテーブル25を参照し、ヘッダ内の情報とポリシー検索キーがマッチするポリシーを取得し、そのポリシーに基づいてセッションデータを作成し、セッションテーブル22a’に格納する(矢印A12)。
そのセッションデータの適用サービスタイプの欄に「サーバ転送:ON」が格納されている場合、処理振分部26は、パケット通信部33を介してそのパケットをパケット詳細解析部16に転送する。パケット詳細解析16は、詳細解析用ポリシーテーブル及び詳細解析用セッションテーブルを用いてそのパケットを解析する(矢印A13)。パケット詳細解析部16は、パケットの解析結果に基づいて、ネットワーク接続装置20内のセッションテーブル22a’に格納されたセッションデータを再設定する(矢印A14)。パケットの解析後は、ネットワーク接続装置20に入力したパケットは、パケット詳細解析部16によって解析されることなく、サービス処理部27によって処理され、ネットワーク接続装置20から出力される(矢印A15)。
以下、第5実施例に係わるパケット中継処理装置の動作について説明する。パケット処理部21及びセッション管理部22による処理の手順は、第1から第4実施例と同様であるため、説明を省略する。以下、処理振分部26、サービス処理部27及びパケット詳細解析部16による処理の手順に重点をおいて説明する。
図28は処理振分部26及びサービス処理部27の処理フローを示す図である。図28に示す処理のうち、ヘッダ書換処理(ステップS64)までの処理は図19と同じである。さらに、第5実施例によれば、処理振分部26は、セッションデータに含まれる適用サービスタイプに基づいて、入力パケットがサーバ11に転送するべき該当パケットであるか否かを判断する(ステップS81)。適用サービスタイプに「サーバ転送:ON」及び適用サービスタイプが設定されている場合には、振分処理部26は、そのパケットをサーバ11に転送するべきパケットであると判断し(ステップS81:Yes)、パケットに転送用ヘッダを付す処理を行うサービス処理部27に、処理を振り分ける。処理を振り分けられたサービス処理部27は、そのパケットに転送用ヘッダを付す。転送用ヘッダの内容は第4実施例と同様である。転送用ヘッダを付されたパケットは、パケット通信部33を介して、サーバ11のパケット詳細解析部16に転送される(ステップS82)。パケット詳細解析部16は、受信したパケットを解析し、解析結果に基づいて、制御情報通信部31を介して、セッションテーブル22a’に格納されたセッションデータを再設定する(ステップS83)。
図29は、パケット詳細解析部16の処理の手順を示すフローチャートである。図29に示す処理は、図28のステップS83に相当する。本実施例においては、例として、URLフィルタリング、URL負荷分散、及びFTPフィルタリングサービスをパケット詳細解析部16を用いて提供する場合について説明する。
まず、URLフィルタリングサービスについて説明する。
予めサーバ11のサービス制御部14が、「パケット詳細解析部16へパケットを転送しURLフィルタリングを行う」というポリシーを、制御通信情報部31を介してポリシーテーブル25に設定する。
設定された条件から、ネットワーク接続装置20の処理振分部26が、該当パケットをパケット詳細解析部16に転送する。
パケット詳細解析部16では、受信したパケットの転送用ヘッダ内に含まれる適用サービスタイプ「URLフィルタリング」に基づいて、そのパケットがURLフィルタリングサービスを受けるべきパケットであることを判定する。パケット詳細解析部16は、受信したパケットに含まれる情報に基づいてセッションデータを作成し、詳細解析用セッションテーブルに格納する(ステップS91:Yes)。以後、パケット詳細解析部16は、そのセッションの状態を管理し、HTTPのGETリクエストを受信するまで、受信したパケットをそのままネットワークへ出力させる。
セッション状態がESTABとなった後、HTTPのGETリクエストを受信した場合(ステップS92:Yes)、パケット詳細解析部16は、URLを判定し、パケットの通過/廃棄を決定する。すなわち、パケット詳細解析部16は、そのパケットに含まれるURLを用いて、予め設定された詳細解析用ポリシーテーブルに含まれるURLフィルタリング用URLテーブルを参照することにより、そのパケットの通過/廃棄を判定する(ステップS93)。
パケットを廃棄すると判定した場合には(ステップS93:Yes)、パケット詳細解析部16は、そのセッションのパケットを廃棄する(ステップS103)。更に、パケット詳細解析部16は、パケットに含まれるセッションIDを用いてセッションテーブル22a’を参照し、セッションIDに対応するセッションデータの適用サービスタイプの欄を、「サーバ転送:ON・URLフィルタリング」から「廃棄」に書き換える(不図示)。
また、パケットを通過させると判定したの場合には(ステップS93:No)、パケット詳細解析部16は、セッションテーブル22a’を参照し、パケットに含まれるセッションIDに対応するセッションデータの適用サービスタイプの欄を「サーバ転送:ON・URLフィルタリング」から「フィルタリング通過」に書き換える(ステップS94)。図21及び図23に示すセッションテーブル22a’においてセッションID=0及び1であるセッションデータは、それぞれ、URLフィルタリングの場合の、パケット解析前後のセッションデータの一例である。
セッションテーブル22a’内のセッションデータを再設定した後、パケット詳細解析部16は、詳細解析用セッションテーブルから、そのセッションIDに対応するセッションデータを削除する(不図示)。
上記のように、パケット詳細解析部16が、ネットワーク接続装置20のセッションテーブル22a’内のセッションデータの適用サービスタイプを、「サーバ転送:ON」から「フィルタリング通過」または「廃棄」に設定し直すと、ネットワーク接続装置20は上記通過条件に従い、以後のパケットを処理する。すなわち、ネットワーク接続装置20は、サーバ11のパケット詳細解析部16にパケットを転送することなく、パケットを通過させたり、廃棄する。
図30は、上記URLフィルタリングの動作を説明する図である。
クライアント、サーバ間で、SYN、SYN_ACK、ACKパケットを交換する。そのセッションがESTABの状態に遷移するまでは、ネットワーク接続装置20から上記パケット詳細解析部16にそれらパケットが転送され、パケット詳細解析部16は、そのセッションの状態を管理する。つまり、「ネットワーク接続装置20」及び「サーバ11」で処理が行われる。
セッションがESTAB状態に遷移し、HTTPのGETリクエスト(GET”http://www.xxx.co.jp”のようにURLが付されている)を受信すると、サーバ11のパケット詳細解析部16は、詳細解析用ポリシーに含まれるURLフィルタリング用URLテーブルを参照して上記URLのパケットが廃棄するべきパケットであるか通過させるべきパケットであるかを判定し、判定結果に基づいてセッションテーブル22a’の適用サービスタイプの欄のエントリを「廃棄」または「通過」に書き換える。
以後、ネットワーク接続装置20は、セッションテーブル22a’に設定された適用サービスタイプに応じて、そのセッションが終了するまで、パケットを廃棄または通過させる。つまり、「ネットワーク接続装置20」で処理が行われる。
次に、図29に戻って、URL負荷分散サービスについて説明する。
URL負荷分散において、例えば、クライアントがある代表サーバにアクセスした後に、URLに基づいて代表サーバに接続された他のサーバを振分先サーバとして決定し、その振分先サーバにセッションを振り分けることにより、負荷を複数の振分先サーバに分散させることができる。
URL負荷分散を行う際、まずサーバ11のサービス制御部14が、「パケット詳細解析部16へパケットを転送しURL負荷分散を行う」というポリシーを、制御通信情報部31を介してポリシーテーブル25の適用サービスタイプ欄に設定する。
設定された条件から、ネットワーク接続装置20の処理振分部26が該当パケットをサーバ11のパケット詳細解析部16に転送する。
パケット詳細解析部16では、受信したパケットに含まれる適用サービスタイプ「URL負荷分散」に基づいて、そのパケットがURL負荷分散サービスを受けるべきパケットであることを判定する。パケット詳細解析部16は、URLフィルタリングの場合と同様にして、受信したパケットに含まれる情報に基づいてセッションデータを作成し、詳細解析用セッションテーブルに格納する。さらに、パケット詳細解析部16は、パケットのヘッダに含まれる送信元アドレス、宛先アドレス及びポート番号等に基づいて代理応答を行い、相互に関連するセッションデータを登録し、セッションデータの関連セッションの欄に、関連するセッションデータのセッションIDを格納する(ステップS95:Yes)。
図25に示す詳細解析用セッションテーブルにおいて、セッションID=2から5であるセッションデータは、URL負荷分散の場合のセッションデータの一例である。図25において、セッションID=2であるセッションデータは、セッションID=4であるセッションデータと相互に関連し、セッションID=3であるセッションデータは、セッションID=5であるセッションデータと相互に関連している事がわかる。
パケット詳細解析部16では、クライアントとサーバ11の間にコネクションを確立し、以後、セッションの状態を管理する。また、パケット詳細解析部16は、TCP(Transmission Control Protocol )を終端する機能を有し、振分先サーバが決定するまで、パケット詳細解析部16は、振分先サーバの変わりにクライアントに対する応答を行う。パケット詳細解析部16は、セッションの状態がESTABとなった後、HTTPのGETリクエストを受信した場合(ステップS96:Yes)、パケット詳細解析部16は、パケットに含まれるURLを用いて、予め設定された詳細解析用ポリシーテーブルに含まれるURL負荷分散用テーブルを参照して、振分先サーバを決定する(ステップS97)。その後、サーバ11は、SYN、SYN_ACK、ACKパケットを交換することにより、振分先サーバとコネクションを確立する。
さらに、パケット詳細解析部16は、ネットワーク接続装置20のセッションデータ22a’を参照し、パケットに含まれるセッションIDに対応するセッションデータを取得する。そして、パケット詳細解析部16は、取得したセッションデータに含まれる適用サービスタイプを「サーバ転送:ON・URL負荷分散」から「サーバ転送:OFF・ヘッダ書換」に書き換える。さらに、パケット詳細解析部16は、セッションデータの固有情報の欄に、決定された振分先サーバのIPアドレス等に従って、IPアドレス:ポート番号、およびシーケンス番号/ACK番号差分を設定する(ステップS98)。これにより、相互に関連していると判定された2つのセッションデータを1つのセッションデータにまとめることになるため、2つのコネクションを1つのコネクションとして扱うことが可能となる。さらに、パケット詳細解析部16は、4つのセッションデータのうち、不要になった残りの2つのデータを、セッションテーブル22a’から削除する。
セッションテーブル22a’内のセッションデータを再設定した後、パケット詳細解析部16は、詳細解析用セッションテーブルから、そのセッションIDに対応するセッションデータを削除する(不図示)。そして、サーバ11は、振分先サーバにHTTPのGETリクエストを送出する。
図21及び図23に示すセッションテーブル22a’内のセッションID=2から5であるセッションデータは、それぞれ、URL負荷分散の場合のパケット解析前後のセッションデータの一例である。図21におけるセッションID=2及び4である2つのセッションデータによって示される2つのコネクションは、図23において、セッションID=2であるセッションデータで示される1つのコネクションにまとめられている。同様に、図21におけるセッションID=3及び5である2つのセッションデータによって示される2つのコネクションは、図23において、セッションID=5であるセッションデータで示される1つのコネクションにまとめられている。
パケットの解析後、パケットは、パケット詳細解析部16に送られない。ネットワーク接続装置20のヘッダ書換処理を行うサービス処理部27は、セッションテーブル22a’に格納されたセッションデータ内の固有情報に基づいて、パケット内のIPアドレス:ポート番号、シーケンス番号、ACK番号を書き換えた後、そのパケットをネットワークに出力させる。
図31は、上記URL負荷分散サービスの動作を説明する図である。
図31に示すように、クライアントとパケット中継処理装置の間でSYN、SYN_ACK、ACKパケットを交換する。セッションがESTAB状態に遷移し、HTTPのGETリクエストを受信すると、パケット詳細解析部16は、GETリクエストのURLを判定し、振分先サーバを決定する。
ついで、上記と同様に、パケット中継処理装置と振分先サーバの間でSYN、SYN_ACK、ACKパケットを交換し、振分先サーバにHTTPのGETリクエストを送出する。ここまでは、「ネットワーク接続装置20」+「サーバ11」で処理が行われる。
パケット中継処理装置から振分先サーバにHTTPのGETリクエストを送出した後、セッションが終了するまで、ネットワーク接続装置20が、セッションテーブル22a’に格納されたセッションデータに基づいて、クライアントと振分先サーバとの間の中継処理を行う。
次に、図29に戻って、FTPフィルタリングサービスについて説明する。FTPは、制御用の制御コネクションと、1以上のデータ転送用のデータコネクションとの複数のTCPコネクションからなる。
予めサーバ11のサービス制御部14が、「パケット詳細解析部16へパケットを転送しFTPフィルタリングを行う」というポリシーを、制御通信情報部を介してポリシーテーブル25に設定する。
設定された条件から、ネットワーク接続装置20の処理振分部26が該当パケットを詳細解析部16に転送する。URLフィルタリングの場合と同様に、パケット詳細解析部16は、受信したパケットに含まれる適用サービスタイプに基づいて、そのパケットがFTPフィルタリングサービスを受けるべきパケットであることを判定し、パケット詳細解析部16は、詳細解析用セッションテーブルにセッションデータを格納する(ステップS99:Yes)。続いて、パケット詳細解析部16は、セッション状態を管理し、受信パケットをそのままネットワークへ出力させる。
セッション状態がESTABとなった後、図32に示すように、FTPのPORT命令もしくは、PASV命令のACKパケットを受信すると(ステップS100:Yes)、パケット詳細解析部16は、そのパケットに含まれるIPアドレスとポート番号を判定し、判定結果に基づいて、そのセッションのパケットを通過するか廃棄するかを決定する(ステップS101)。
すなわち、パケット詳細解析部16は、IPアドレスとポート番号を用いて予め設定された詳細解析用ポリシーテーブル内のFTPフィルタリング用テーブルを参照して、そのセッションのパケットを通過させるか廃棄するかを決定する。パケットを廃棄すると決定した場合には(ステップS101:Yes)、パケット詳細解析部16は、セッションテーブル22a’からパケットの転送用ヘッダに含まれるセッションIDに対応するセッションデータを取得し、そのセッションデータの適用サービスタイプの欄に「廃棄」を設定し、そのパケットを廃棄する(ステップS103)。
また、そのパケットを通過させると決定した場合には(ステップS101:No)、パケット詳細解析部16は、先のPORT命令もしくはPASV命令のACKパケットのデータ部分に記述されているIPアドレスとポート番号に基づいて、データコネクションについてのセッションデータをセッションテーブル22a’に登録し、そのセッションデータの適用サービスタイプの欄に「フィルタリング通過」を設定する(ステップS102)。
上記のようにパケット詳細解析部16が、セッションテーブル22a’内のセッションデータを再設定すると、ネットワーク接続装置20は上記通過条件に従い、以後のデータコネクションに関するパケットを処理する。すなわち、サーバ11のパケット詳細解析部16にパケットを転送することなく、パケットを通過させたり、廃棄させたりする。
図32は、上記FTPフィルタリングの動作を説明する図である。クライアント、サーバ11間で、SYN、SYN_ACK、ACKパケットを交換し、ESTABの状態に遷移するまでは、上記パケット詳細解析部16にパケットが転送され、「ネットワーク接続装置20」+「サーバ11」で処理が行われる。
セッションの状態がESTAB状態に遷移し、FTPのPORT命令またはPASV命令のACK(IPアドレスとポート番号が付されている)を受信すると、パケット詳細解析部16は、パケットに含まれるIPアドレスとポート番号を用いて詳細解析用ポリシーテーブルを参照し、そのパケットを廃棄すべきか、通過させるべきかを決定する。そのパケットを廃棄すると決定する場合には、パケット詳細解析部16は、セッションテーブル22a’のセッションデータにパケットを廃棄する旨を設定する。そのパケットを通過させると決定する場合には、パケット詳細解析部16は、セッションテーブル22a’にデータコネクションについてのセッションデータを登録し、適用サービスタイプ欄に「通過」を設定し直す。以後、ネットワーク接続装置20は、パケットの廃棄処理又はデータコネクションのパケットの通過処理を行う。
最後に、パケット中継処理装置がクライアントから制御コネクションのFINパケットを受信すると、ネットワーク接続装置20からパケット通信部33を介して、サーバ11のセッション詳細解析部16にそのパケットが転送される。サーバ11は、セッション詳細解析部16を介してそのセッションのクローズ処理を行う。さらに、セッション詳細解析部16は、パケットの転送用ヘッダに含まれるセッションIDに基づいて、クローズされるセッションに関するセッションデータを削除する。
以下、図33及び図34を用いて、第5実施例におけるパケットのフローについて、URL負荷分散サービスの場合を例にとって説明する。なお、各図は、図21、図23、図25に示すセッションテーブルに格納されたセッションID=2から5のセッションデータに対応する。図33に、パケット詳細解析部16によってセッションデータが再設定される前のパケットフローを示す。
セッションデータが再設定される前において、矢印A21に示すように、アドレス:ポート番号が192.168.30.30:11950 であるクライアントからネットワーク接続装置20へ「宛先アドレス:ポート番号=192.168.200.1:http、送信元アドレス:ポート番号=192.168.30.30:11950 」をヘッダに格納したパケットP11が送信される。ネットワーク接続装置20のセッション管理部22は、ポリシーテーブル25を参照し、ヘッダ内の情報とポリシー検索キーがマッチするポリシーを取得し、そのポリシーに基づいてセッションID=2であるセッションデータを作成し、セッションテーブル22a’に格納する。
セッションデータ内の適用サービスタイプは「サーバ転送:ON・URL負荷分散」であるため、ネットワーク接続装置20内の処理振分部26は、サーバ転送処理を行うサービス処理部27に処理を振り分ける。処理を振り分けられたサービス処理部27がそのパケットに転送用ヘッダを付したのち、矢印A22に示すようにパケットはサーバ11に転送される。サーバ11のパケット詳細解析部16は、転送されたパケットに含まれる情報に基づいて、詳細解析用セッションテーブルにセッションデータを登録する。
同様にして、サーバ11からクライアントへ矢印A23からA28に示すような経路を経てパケットP12、P13及びP14が出力される際に、それぞれ、セッションID=3、4及び5であるセッションデータが、セッションテーブル22a’にセッション管理部22によって格納され、対応するセッションデータが、詳細解析用セッションテーブルにパケット詳細解析部16によって格納される。
セッションデータを各セッションテーブルに登録した後、HTTPのGETリクエストを受信するまで、パケット詳細解析部16は、各セッションの状態を管理し、図33に示すパケットフローに基づいて、受信したパケットをネットワークへ出力する。
その後、セッション状態がESTABとなった後、HTTPのGETリクエストを受信すると、パケット詳細解析部16は、パケットを解析し、解析結果に基づいて、セッションテーブル22a’に格納されたセッションデータを設定しなおす。再設定後のセッションデータは、図23に示す通りである。
図34に、パケット詳細解析部16によってセッションデータが再設定された後のパケットフローを示す。セッションデータが再設定された後において、矢印A31に示すように、振分先サーバからネットワーク接続装置20へ「宛先アドレス:ポート番号として192.168.200.1:3333、送信元アドレス:ポート番号として192.168.200.10:8080」をヘッダに格納したパケットP14が送信されると、ネットワーク接続装置20の処理振分部26は、パケットのヘッダに含まれる情報を用いて、セッションテーブル22a’を参照し、セッションID=5であるセッションデータを取得し、セッションデータに基づいて、ヘッダ書換処理を行うサービス処理部27に処理を振り分ける。サービス処理部27は、そのセッションデータに基づいて、そのパケットのヘッダ内の宛先アドレス及びポート番号を「192.168.30.30:11950 」に、クライアントのアドレス及びポート番号を「192.168.200.1:http 」に書き換えることにより、パケットP12を作成する。その後、矢印A32に示すように、ネットワーク接続装置20は、パケットP12を振分先サーバへそのパケットを出力する。
同様に、矢印A33に示すように、アドレス:ポート番号が192.168.30.30:11950 であるクライアントからネットワーク接続装置20へ「宛先アドレス:ポート番号=192.168.200.1:http、送信元アドレス:ポート番号=192.168.30.30:11950 」をヘッダに格納したパケットP11が送信される。ネットワーク接続装置20の処理振分部26は、パケットのヘッダに含まれる情報を用いて、セッションテーブル22a’を参照し、セッションID=2であるセッションデータを取得する。この例の場合、取得したセッションデータの適用サービスタイプの欄に「サーバ転送:OFF/ヘッダ書換」が格納されているため、処理振分部26は、ヘッダ書換処理を行うサービス処理部27に処理を振り分ける。サービス処理部27は、そのセッションデータに基づいて、そのパケットのヘッダ内の宛先アドレス及びポート番号を振分先サーバのアドレス及びポート番号を「192.168.200.10:8080」に書き換えることにより、パケットP13を作成する。その後、ネットワーク接続装置20は、矢印A34に示すように、パケットP13を振分先サーバへそのパケットを出力する。
このように、セッション詳細解析部16がパケットの解析結果に基づいてセッションデータを書き換えた後は、サーバ11を介さずに、ネットワーク接続装置20によってパケットの中継処理が行われる。
以上のように、本実施例においては、ネットワーク接続装置20にセッション管理に基づくパケット中継処理機能を設け、従来サーバ上に配置していた機能をネットワーク接続装置20が果たすようにしたので、第1の実施例と同様、サーバ11のCPUの使用率を下げることができる。また、第1の実施例と同様、セッションの途中でルーティングテーブルが変更されても、現在継続中のセッションについては、一貫性を保持できる。
さらに、第5実施例によれば、サーバ11のパケット詳細解析部16においてパケットを解析してサービスを決定し、決定したサービス内容をネットワーク接続装置20に設定し、以後同じセッションに対してネットワーク接続装置20が上記決定されたサービス内容に基づき中継処理を行うようにする。従って、サーバ11で全ての処理を行う場合に比べ、サービス処理を高速に実現することができる。
以下、各実施例の変形例について説明する。まず、第1の変形例について説明する。第1実施例から第5実施例において、第1の変形例を適用することにより、セッションが終了した後すぐにセッションデータを削除するのではなく、一定時間経過した後にセッションデータをセッションテーブル22a’することとしてもよい。
そのために、第1の変形例によれば、図13及び図14、図21から図24に示すように、ポリシーテーブル25及びセッションテーブル22a’のエントリに、さらに一貫性保持時間を含む。以下、第1の変形例に係わるパケット中継処理装置が行う処理について説明する。第1の変形例では、セッション管理部22が行う処理の一部が第1から第5実施例と異なる。第1の変形例を適用した場合のセッション管理部22が行う処理について、図5を用いて説明する。
図5のステップS17において、セッション管理部22が、あるセッションがクローズしたと判定した場合(ステップS17:Yes)、セッション管理部22はタイマーを設定する。セッション管理部22は、セッションデータに含まれる一貫性保持時間だけ待機した後に、図5のステップS18に進み、そのセッションデータをセッションテーブル22a’から削除する。
これにより、セッションが終了した後で、一貫性保持時間が経過するまでの間に、そのセッションが再度確立された場合、セッション検索キーに変更がなければ、セッション管理部22は、そのセッションを先に終了したセッションと同じセッションとして扱う事ができるようになる。例えば、負荷分散サービスにおいて、一度終了したセッションと再度確立されたセッションとで同じ振分先サーバにパケットを振り分けることが可能となる。延いては、セッション管理部22によるポリシーテーブル25の検索や処理振分部26によるパケットのサーバ11への転送を省略する事ができるため、高速にパケットを処理することが可能となる。
次に、第2の変形例について説明する。第3実施例から第5実施例において、第2の変形例を適用することにより、セッションに適用するポリシーの切り換えが容易にできるようにすることとしてもよい。そのために、第2の変形例によれば、複数のポリシーをいくつかのグループに分ける。さらに、図14に示すように、ポリシーテーブル25に格納されるポリシーは更に項目として、そのポリシーが属するグループを識別するグループIDを含み、ネットワーク接続装置20は、更に図35に示すフラグテーブルを備える。
以下、図35を用いて、フラグテーブルのデータ構造について説明する。図35に示すように、フラグテーブルは、グループIDに対応して、ポリシーの有効・無効を示すフラグを格納する。図35において、例として、フラグが「オフ(0)」である場合にポリシーは無効であり、フラグが「オン(1)」である場合にポリシーは有効である。
以下、第2の変形例に係わるパケット中継処理装置が行う処理について説明する。第2の変形例では、セッション管理部22が行う処理の一部が第3から第5実施例と異なる。例として、第3実施例に係わるセッション管理部22が行う処理を示す図15を参照しながら、第2の変形例を各実施例に適用することにより、セッション管理部22が行う処理が変化する点について詳しく説明する。
第2の変形例において、セッション管理部22は、図15のステップS43からステップS44の間でさらに、以下の処理を行う。まず、ステップS43で、セッション管理部22は、ポリシーテーブル25を検索し、パケットのヘッダに格納された情報と適合するポリシー検索キーを持つポリシーを取得する。セッション管理部22は、得られたポリシーに含まれるグループIDを用いてフラグテーブルを参照し、そのグループIDに対応するフラグがオンであるかオフであるか判定する。
判定の結果、フラグがオフである場合、セッション管理部22はそのポリシーを採用しない。一方、フラグがオンである場合、セッション管理部22は、そのポリシーを採用する。セッション管理部22は、ステップS44で、そのポリシーに基づいてセッションデータを作成し、セッションテーブル22a’に格納する。これにより、採用するべきポリシーをグループ毎に切り換えることができるようになる。
例えば、複数の通常用のポリシーと複数の非常用のポリシーとを作成した場合、第2の変形例によれば、予め通常用のポリシーからなる通常用グループと、非常用のポリシーからなる非常用グループを定義し、ポリシーテーブル25には、通常用のポリシーも非常用のポリシーも両方登録する。また、フラグテーブルにパケット中継処理装置のユーザが有効にしておきたいグループ、つまり、通常用と非常用いずれかのグループに対応するフラグをオンにする。これにより、通常用のポリシーと非常用のポリシーを、グループ毎に容易に切り換える事が可能となる。
次に、第3の変形例について説明する。第3実施例から第5実施例において、第3の変形例を適用することにより、パケットのログを採取できるようにすることとしてもよい。そのために、第3の変形例によれば、図13及び図14並びに図21から図24に示すポリシーテーブル25及びセッションテーブル22a’に格納されるセッションデータ及びポリシーは、更に項目としてイベントフラグを含む。
イベントフラグには、パケットに関するイベントフラグと、ヘッダに関するイベントフラグとがある。パケットに関するイベントフラグが「オン(1)」である場合、ログ(履歴)を採取するために、そのパケットがサーバ11に転送される。ヘッダに関するイベントフラグがオンである場合、ログを採取するために、そのパケットのヘッダがサーバ11に転送される。サーバ11は、転送されたパケット又はパケットのヘッダを解析し、ログを採取する。これにより、例えば、システムに障害が生じたときに、ネットワーク管理ソフトを用いて、採取したログを解析する事により、障害から復旧するために役に立つ情報を得ることが可能となる。
次に、第4の変形例について説明する。第4の変形例によれば、第1実施例から第5実施例に係わるネットワーク接続装置20は、パケットに関する統計情報を取得するために、更にカウンタ(不図示)を備える。上記サーバ11のネットワーク制御部12又はサービス制御部14は、カウンタの値を参照する。統計情報として、例えば、インターフェースごとのパケット入力数と出力数が考えられる。この統計情報は、クライアント等に課金を行う際等において使用することができる。
また、第3実施例から第5実施例に対しては、更に、統計情報として、ポリシーテーブル25に格納されたポリシー毎に、そのポリシーが適用されたセッションの数、つまり、ポリシーがヒットした回数であるポリシーヒット数を得る事としても良い。
そのために、第4の変形例によれば、図14に示すように、ポリシーテーブル25に格納されるポリシーは、更に項目としてポリシーヒット数を含む。そして、セッション管理部22が、新たなセッションに関するセッションデータをセッションテーブル22a’に登録するために、ポリシーテーブル25を参照して適用するべきポリシーを取得すると、カウンタは、取得されたポリシーのポリシーヒット数をインクリメントする。これにより、ネットワーク管理者は、ポリシーが有効に利用されているか否かを判断するための情報を得る事が可能となる。
また、第3実施例から第5実施例に対しては、更に、統計情報として、負荷分散サービスにおける振分先サーバ毎に、セッションが振り分けられた回数を示す振分先ヒット数を得る事としても良い。
そのために、図14に示すポリシーテーブル25又は、図26に示す詳細解析用ポリシーテーブルに格納された負荷分散サービスにかかわるポリシーは、更に項目として、振分先サーバアドレスごとの振分先ヒット数を含む。そして、サービス処理部27又はパケット詳細解析部16が、セッションの振分先サーバを決定する処理を行うごとに、カウンタは、振分先サーバとして決定されたサーバに対応する振分先ヒット数をインクリメントする。これにより、ネットワーク管理者は、負荷分散の振分方式が有効に動作しているか否かを判断するための情報を得ることが可能となる。
本実施形態において説明したネットワーク接続装置20を構成する各部及びサーバ11を構成する各部が行う処理を示すプログラムは、それぞれRAM(Random Access Memory)やROM(Read Only Memory)等のメモリに記録され、パケット中継処理装置にハードウェア或いはソフトウェアとして備えられても良い。以下、この場合について説明する。
図36にコンピュータ(情報処理装置)の構成を示す。図36に示すように、コンピュータ40は、少なくともCPU41、メモリ42を備える。さらに、コンピュータ40は、入力装置43、出力装置44、外部記憶装置45、媒体駆動装置46、及びネットワークインターフェース47を備えることとしても良い。各装置はバス48により互いに接続されている。
メモリ42は、例えば、ROM、RAM等を含み、処理に用いられるプログラムとデータを格納する。CPU41は、メモリ42を利用してプログラムを実行することにより、必要な処理を行う。
2以上のコンピュータ40に、パケット中継処理装置を構成するサーバ11及びネットワーク接続装置20に相当する機能を実現させる場合、まず、図2、10、12、18、20に示すパケット中継処理装置を構成する各部によって行われる処理を示すプログラムを用意する。そして、サーバ11に備えられる各部によって行われる処理を示すプログラム(以下、サーバ11用のプログラムという)をサーバ11を実現すべきコンピュータ内のメモリ42の特定のプログラムコードセグメントに格納する。
また、ネットワーク接続装置20に備えられる各部によって行われる処理を示すプログラム(以下、ネットワーク接続装置20用のプログラムという)を、ネットワーク接続装置20を実現すべきコンピュータ内のメモリ42の特定のプログラムコードセグメントに格納する。ここで、ネットワーク接続装置20を実現すべきコンピュータのCPUは、例えば、ネットワークプロセッサである。なお、上述の各部によって行われる処理は、上記において、各フローチャートを用いて説明されている。
入力装置43は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。出力装置44は、例えば、ディスプレイやプリンタ等であり、コンピュータ40の利用者への問い合わせ、処理結果等の出力に用いられる。
外部記憶装置45は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。この外部記憶装置45に上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ42にロードして使用することもできる。
媒体駆動装置46は、可搬記録媒体49を駆動し、その記録内容にアクセスする。可搬記録媒体49としては、メモリカード、メモリスティック、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、光ディスク、光磁気ディスク、DVD(Digital Versatile Disk)等、任意のコンピュータで読み取り可能な記録媒体が用いられる。この可搬記録媒体49に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ42にロードして使用することもできる。
ネットワークインターフェース47は、LAN、WAN等の任意のネットワーク(回線)を介して外部の装置を通信し、通信に伴なうデータ変換を行う。また、必要に応じて、上述のプログラムとデータを外部の装置から受け取り、それらをメモリ42にロードして使用することもできる。
図37は、図36のコンピュータにプログラムとデータを供給することができる、コンピュータで読み取り可能な記録媒体及び伝送信号を説明する図である。
記録媒体を用いて、上述のプログラムや各テーブルに格納されるデータを、サーバ11を実現すべきコンピュータ及びネットワーク接続装置20を実現すべきコンピュータに供給することにより、2以上のコンピュータにパケット中継処理装置に相当する機能を行なわせることも可能である。
そのためには、上述のプログラムやデータを、コンピュータで読み取り可能な記録媒体49に予め記憶させておく。そして、図37に示すように、媒体駆動装置46を用いて、記録媒体49からサーバ11用のプログラム等をサーバ11を実現すべきコンピュータに読み出させて、そのコンピュータ(サーバ11)のメモリ42や外部記憶装置45に一旦格納させ、そのコンピュータ(サーバ11)の有するCPU41にこの格納されたプログラムを読み出させて実行させる。
同様に、記録媒体49からネットワーク接続装置20用のプログラム等をネットワーク接続装置20を実現すべきコンピュータのメモリ42等に一旦格納させ、そのコンピュータ(ネットワーク接続装置20)の有するCPU41に格納されたプログラムを読み出させて実行させる。
また、記録媒体49からプログラム等を、サーバ11を実現すべきコンピュータ及びネットワーク接続装置20を実現すべきコンピュータに読み出させる代わりに、プログラム(データ)提供者が有するDB50から、通信回線(ネットワーク)51を介して、プログラムをそれぞれのコンピュータにダウンロードすることとしてもよい。この場合、例えば、DB50を有しプログラムを送信するコンピュータでは、上記プログラムを表現するプログラム・データをプログラム・データ・シグナルに変換し、変換されたプログラム・データ・シグナルをモデムを用いて変調することにより伝送信号を得て、得られた伝送信号を通信回線51(伝送媒体)に出力する。プログラムを受信するコンピュータでは、受信した伝送信号をモデムを用いて復調することにより、プログラム・データ・シグナルを得て、得られたプログラム・データ・シグナルを変換することにより、プログラム・データを得る。
次に、図38を用いて、サーバ11を実現すべきコンピュータ及びネットワーク接続装置20を実現すべきコンピュータへのプログラムやデータのローディングについて、例を挙げてより詳しく説明する。
図38に示すように、サーバ11及びネットワーク接続装置20を実現すべきコンピュータは、各々CPU及びメモリを備え、上述の制御情報通信部31を介して接続されている。また、例えば、制御情報通信部31がPCIバスである場合、ネットワーク接続装置20をPCI用のNIC(Network Interface Card)として実現しても良い。
例えば、サーバ11用のプログラム等及びネットワーク接続装置20用のプログラム等(ファームウェア)を記録した記録媒体がある場合、まず、サーバ11を実現すべきコンピュータに備えられた不図示の媒体駆動装置を用いて記録媒体からサーバ11用のプログラム等及びネットワーク接続装置20用のプログラム等をサーバ11のメモリにロードする(矢印A41)。続いて、サーバ11のメモリに格納されたネットワーク接続装置20用のプログラム等を、制御情報通信部31を介してネットワーク接続装置20のメモリにロードする(矢印42)。このようにして、サーバ11を実現すべきコンピュータ及びネットワーク接続装置20を実現すべきコンピュータに、それぞれに必要なプログラム等を供給することができる。サーバ11のCPUは、サーバ11のメモリにロードされたサーバ11用のプログラムを実行し、ネットワーク接続装置20のCPUは、ネットワーク接続装置20のメモリにロードされたネットワーク接続装置20用のプログラムを実行する。
また、上述のようにプログラム等を記録媒体からロードする代わりに、予めROM等に記録しておくこととしても良い事は言うまでもない。また、記録媒体のかわりに伝送信号を用いてプログラム等をサーバ11を実現すべきコンピュータに供給する事としても良い。
また、ネットワーク接続装置20において、CPUの代わりにASIC(Application Specific Integrated Circuit)を用いて、ネットワーク接続装置20を構成する各部をハードウェアで構成する事としても良い。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、他の様々な変更が可能である。
以上説明したように、本発明においては、以下の効果を得ることができる。
(1)上記ネットワーク接続装置にセッション管理に基づくパケット中継処理部を設け、ネットワーク接続装置により、セッション管理に基づく中継処理を行うようにする。これにより、サーバのCPU使用率を下げることができる。また、ネットワーク接続装置上でセッション管理を行い、セッション開始時にセッションテーブルに出力先を登録することにより、セッションの途中でルーティングテーブルが変更されても、現在継続中のセッションについては、一貫性を保持できる。
(2)パケット中継処理装置のサーバに外部セッション管理機能を設け、ネットワーク接続装置からセッション情報を上記サーバに転送し、サーバによりセッション管理を行うことにより、セッション数がネットワーク接続装置のセッションテーブル登録数を上回った場合でも、ネットワーク接続装置で溢れた分をサーバで管理することができる。
〈3〉処理振分部と複数のサービス処理部をサーバに比べ高速に処理できるネットワーク接続装置に配置することにより、サーバのCPUの使用率を小さくすることができるとともに、サービス処理を高速化することができる。
(4)サーバに外部サービス処理部を設け、サービス処理を、ネットワーク接続装置とサーバの両方で実行できるようにすることにより、ネットワーク接続装置2上で実現するのは困難なサービス処理をサーバで行うことができ、ネットワーク接続装置が上記決定されたサービス内容に基づき中継処理を行うようにすることにより、サーバで全ての処理を行う場合に比べ、サービス処理を高速に実現することが可能となる。
(付記1) ネットワーク接続装置を有するパケット中継処理装置であって、
上記ネットワーク接続装置がセッションを管理するセッション管理部と、
上記セッション管理部によるセッション管理に基づいてパケットを中継するパケット処理部を備えている
ことを特徴とするパケット中継処理装置。
(付記2) 上記ネットワーク接続装置は、更に、上記パケットのルーティング先に関するルーティング情報を格納するルーティングテーブルと、
上記セッションの開始時に、上記ルーティング情報に基づいて上記パケットのルーティング先を決定するルーティング処理部を更に備え、
上記パケット処理部は、上記パケットを上記ルーティング先に出力する、
ことを特徴とする付記1に記載のパケット中継処理装置。
(付記3) 上記パケット中継処理装置は、更に、サーバを備え、
上記サーバは、上記ルーティングテーブルに上記ルーティング情報を書き込むネットワーク制御部を備える、
ことを特徴とする付記1に記載のパケット中継処理装置。
(付記4) 上記パケット中継処理装置は、さらに、サーバを備え、
上記サーバは、上記セッションを管理する外部セッション管理部を備え、
上記セッション管理部は、与えられた条件に応じて上記セッションに関するセッション情報を上記サーバに転送し、
上記外部セッション管理部は、受信した上記セッション情報に基づいて上記セッションを管理する、
ことを特徴とする付記1に記載のパケット中継処理装置。
(付記5) 上記ネットワーク接続装置は、更に処理振分部と複数のサービス処理部を備え、
上記処理振分部は、上記パケットに対するサービスの内容に基づいて、上記複数のサービス処理部のうち少なくとも1つに上記パケットを振り分け、
上記パケットを振り分けられたサービス処理部は、上記パケットに対するサービス処理を実行する、
ことを特徴とする付記1に記載のパケット中継処理装置。
(付記6) 上記パケット中継処理装置は、更にサーバを備え、
上記サーバは、外部サービス処理部を備え、
上記処理振分部は、与えられた条件によって、上記パケットを上記サーバに転送し、
上記外部サービス処理部は、受信したパケットに対するサービスを実行する、
ことを特徴とする付記5のパケット中継処理装置。
(付記7) 上記パケット中継処理装置は、サーバを更に備え、
上記サーバは、パケット詳細解析部を備え、
上記ネットワーク接続装置は、更に処理振分部とサービス処理部を備え、
上記処理振分部が、与えられた条件によって上記パケットを上記パケット詳細解析部に転送し、
上記パケット詳細解析部は、上記パケットを解析することにより上記パケットに対するサービス内容を決定し、決定した上記サービス内容を上記ネットワーク接続装置に設定し、
上記設定後、上記ネットワーク接続装置は、上記決定されたサービス内容に基づいて上記パケットを処理する、
ことを特徴とする付記1に記載のパケット中継処理装置。
(付記8) 上記サービス処理部として、上記パケットのヘッダを書き換える機能を持つことを特徴とする付記5に記載のパケット中継処理装置。
(付記9) 上記サービス処理部として、パケットを廃棄する機能を持つことを特徴とする付記5に記載のパケット中継処理装置。
(付記10) 上記サービス処理部は、上記サーバの負荷分散のために、負荷の振分先を決定する機能を持つことを特徴とする付記5に記載のパケット中継処理装置。
(付記11) 上記ネットワーク接続装置は、上記セッションに関するセッション情報を格納するセッションテーブルと、上記パケットに対するサービスを実行するための規則を記述するポリシーを格納するポリシーテーブルを備え、
上記セッション管理部は、上記パケットを受信した場合、上記パケットに含まれる情報を検索キーとして用いてセッションテーブルを検索し、
上記検索の結果、該当するセッション情報が上記セッションテーブルに登録されていない場合には、上記セッション管理部は、さらに上記パケットに含まれる情報を検索キーに基づいて、上記ポリシーテーブルから上記ポリシーを取得し、上記取得したポリシーに基づいて、上記セッション情報を上記セッションテーブルに書き込み、
上記検索の結果、該当するセッション情報が上記セッションテーブルに登録されている場合には、上記セッション管理部は、上記セッションの状態に基づいて、上記セッションテーブルに格納されたセッション情報を管理することを特徴とする付記5に記載のパケット中継処理装置。
(付記12) 上記パケット中継処理装置はサーバを備え、
上記サーバは、上記ポリシーを上記ポリシーテーブルに書き込むサービス制御部を備える、
ことを特徴とする付記11に記載のパケット中継処理装置。
(付記13) 上記セッションテーブルを検索する際の上記検索キーが、IPパケットの宛先及び送信元IPアドレス、プロトコル、宛先及び送信元ポート番号、入力インタフェースを含むことを特徴とする付記11に記載のパケット中継処理装置。
(付記14)上記セッションテーブルが、上記検索キー、上記セッションの状態、適用サービス及び上記適用サービスに固有な情報をエントリとしてを持つことを特徴とする付記11に記載のパケット中継処理装置。
(付記15) 上記ポリシーテーブルが、IPパケットの宛先及び送信元IPアドレス、プロトコル、宛先及び送信元ポート番号、適用サービスと上記適用サービスに固有な情報、優先度をエントリとして持つことを特徴とする付記11に記載のパケット中継処理装置。
(付記16) 上記セッション管理部は、更に、上記セッションが終了してから所定時間経過した後に、上記終了したセッションに関するセッション情報を上記セッションテーブルから削除することを特徴とする付記1に記載のパケット中継処理装置。
(付記17) 上記ネットワーク接続装置は、更に、パケットに関する統計情報を取得するためのカウンタを備えることを特徴とする付記1に記載のパケット中継処理装置。
(付記18) 複数のポリシーは複数のグループに分けられ、
上記ネットワーク接続装置は、更に、上記グループ毎に各ポリシーが有効であるか否かを設定することを特徴とする付記11に記載のパケット中継処理装置。
(付記19) 上記ネットワーク接続装置は、更に、上記パケットのログを採取するために、上記パケットの少なくとも一部を上記サーバに転送することを特徴とする付記12に記載のパケット中継処理装置。
(付記20) 上記パケットの一部は、上記パケットのヘッダであることを特徴とする付記18に記載のパケット中継処理装置。
(付記21) 上記セッション情報は、上記サーバに上記パケットを転送するべきか否かを示すサーバ転送指示情報を含み、上記処理振分部は、上記サーバ転送指示情報に基づいて、上記パケットを上記サーバへの転送を行うか否かを決定する事を特徴とする付記12に記載のパケット中継処理装置。
(付記22) 上記パケット詳細解析部は、更に、上記サーバに転送された上記パケットがHTTPプロトコルのGETパケットである場合、上記パケットに含まれるURL(Uniform Resource Locator)に基づいて、上記パケットに対するサービスを決定する、
ことを特徴とする付記7に記載のパケット中継処理装置。
(付記23) 上記パケット詳細解析部は、更に、上記サーバに転送された上記パケットがFTPプロトコルのPORT命令、或いはPASV命令のACKである場合、上記セッションのデータコネクションのIPアドレスとポート番号に基づいて、上記パケットに対するサービスを決定する、
ことを特徴とする付記7に記載のパケット中継処理装置。
(付記24) 上記パケット詳細解析部は、上記サーバの負荷を分散させる処理を行う場合、上記負荷の振分先となる振分先サーバが決定されるまで、上記振分先サーバに代わって応答することを特徴とする付記7に記載のパケット中継処理装置。
(付記25) 上記パケット詳細解析部は、上記パケットを解析することにより、上記セッションテーブルに、上記パケットに対するサービスの種類、変換用IPアドレス及びポート番号、シーケンス番号及びACK番号差分を書き込む、
ことを特徴とする付記21に記載のパケット中継処理装置。
(付記26) パケット中継処理装置におけるネットワーク接続装置であって、
上記ネットワーク接続装置がセッションを管理するセッション管理部と、
上記セッション管理部によるセッション管理に基づいてパケットを中継するパケット処理部を備えている
ことを特徴とするネットワーク接続装置。
(付記27) 上記ネットワーク接続装置は、与えられた条件に応じて上記セッションに関するセッション情報を上記パケット中継処理装置に備えられたサーバに転送するサーバ転送部を備え、
上記サーバは転送された上記セッション情報により上記セッションの管理を行う
ことを特徴とする付記26のネットワーク接続装置。
(付記28) 上記ネットワーク接続装置は処理振分部と複数のサービス処理部を更に備え、
上記処理振分部は、上記パケットに対するサービスの内容に基づいて、上記複数のサービス処理部のうち少なくとも1つに上記パケットを振り分け、
上記パケットを振り分けられたサービス処理部は、上記パケットに対するサービス処理を実行する、
ことを特徴とする付記26のネットワーク接続装置。
(付記29) 上記処理振分部は、与えられた条件によって、上記パケットを上記パケット中継処理装置に備えられたサーバに転送し、上記サーバに上記パケットに対するサービス処理を実行させる
ことを特徴とする付記26のネットワーク接続装置。
(付記30) 上記ネットワーク接続装置が処理振分部とサービス処理部を更に備え、
上記処理振分部は、与えられた条件によって上記パケットをパケット中継処理装置に備えられたサーバに、上記パケットに対するサービスを決定するために転送し、
上記サービス処理部は、上記サーバによるサービスの決定以後、上記サーバで決定したサービス内容に基づいて上記セッションのパケットを処理する
ことを特徴とする付記26のネットワーク接続装置。
(付記31) パケットを中継する制御を、ネットワーク接続装置に備えられたコンピュータに実行させるプログラムであって、
セッションを管理し、
上記セッション管理に基づいて上記パケットを中継する
ことを含む処理を上記コンピュータに実行させることを特徴とするプログラム。
(付記32) 与えられた条件に応じて上記セッションに関するセッション情報を上記ネットワーク接続装置に接続されたサーバに、上記サーバに上記セッションの管理を行わせるために転送する、
ことを更に含む処理を上記コンピュータに実行させることを特徴とする付記31に記載のプログラム。
(付記33) 上記パケットに対するサービスの内容に基づいて、上記サービスに対応する処理を行う装置又はプログラムセグメントに、上記パケットを振り分ける、
ことを更に含む処理を上記コンピュータに実行させることを特徴とする付記31に記載のプログラム。
(付記34) 与えられた条件に応じて上記パケットを上記ネットワーク接続装置に接続されたサーバに、上記サーバに上記パケットに対するサービスを実行させるために転送する、
ことを更に含む処理を上記コンピュータに実行させることを特徴とする付記33に記載のプログラム。
(付記35) 与えられた条件に応じて、上記ネットワーク接続装置に接続されたサーバへ、上記パケットに対するサービスを決定するために上記パケットを転送し、
上記サーバによる上記パケットに対するサービスの決定以後、上記決定されたサービス内容に基づきパケットを処理する
ことを含む処理を上記コンピュータに実行させること特徴とする付記31に記載のプログラム。
(付記36) パケットを中継する機能を有するネットワーク接続装置に接続されたサーバに実行させるプログラムであって、
上記ネットワーク接続装置が上記パケットを処理するために、上記パケットに対するサービスを実行するための規則を記述するポリシーを上記ネットワーク接続装置に設定する、 .
ことを含む処理を上記サーバに実行させることを特徴とするプログラム。
(付記37) 上記ネットワーク接続装置から転送された上記パケットを受信し、受信した上記パケットに対するサービスを実行する、
ことを含む処理を上記サーバに実行させることを特徴とする付記36に記載のプログラム。
(付記38) パケットを中継する機能を有するネットワーク接続装置に接続されたサーバに実行させるプログラムであって、
上記ネットワーク接続装置から転送された上記パケットを受信し、
上記パケットを解析することにより、上記パケットに対するサービスの内容を決定し、
上記決定されたサービス内容に基づいて上記ネットワーク接続装置に上記パケットを処理させるために、該決定されたサービスの内容を上記ネットワーク接続装置に設定する、
ことを含む処理を上記サーバに実行させることを特徴とするプログラム。
(付記39) パケットを中継する制御を、ネットワーク接続装置に備えられたコンピュータに実行させるプログラムを記録した記録媒体であって、
セッションを管理し、
上記セッション管理に基づいて上記パケットを中継する
ことを含む処理を上記コンピュータに実行させるプログラムを記録した記録媒体。
(付記40) 与えられた条件に応じて上記セッションに関するセッション情報を上記ネットワーク接続装置に接続されたサーバに、上記サーバに上記セッションの管理を行わせるために転送する、
ことを更に含む処理を上記コンピュータに実行させるプログラムを記録した付記39に記載の記録媒体。
(付記41) 上記パケットに対するサービスの内容に基づいて、上記サービスに対応する処理を行う装置又はプログラムセグメントに、上記パケットを振り分ける、
ことを更に含む処理を上記コンピュータに実行させるプログラムを記録した付記39に記載の記録媒体。
(付記42) 与えられた条件に応じて上記パケットを上記ネットワーク接続装置に接続されたサーバに、上記サーバに上記パケットに対するサービスを実行させるために転送する、
ことを更に含む処理を上記コンピュータに実行させるプログラムを記録した付記39に記載の記録媒体。
(付記43) 与えられた条件に応じて、上記ネットワーク接続装置に接続されたサーバへ、上記パケットに対するサービスを決定するために上記パケットを転送し、
上記サーバによる上記パケットに対するサービスの決定以後、上記決定されたサービス内容に基づきパケットを処理する
ことを更に含む処理を上記コンピュータに実行させるプログラムを記録した付記39に記載の記録媒体。
(付記44) パケットを中継する機能を有するネットワーク接続装置に接続されたサーバに実行させるプログラムを記録した記録媒体であって、
上記ネットワーク接続装置が上記パケットを処理するために、上記パケットに対するサービスを実行するための規則を記述するポリシーを上記ネットワーク接続装置に設定する、 .
ことを含む処理を上記サーバに実行させるプログラムを記録した記録媒体。
(付記45) 上記ネットワーク接続装置から転送された上記パケットを受信し、受信した上記パケットに対するサービスを実行する、
ことを更に含む処理を上記サーバに実行させるプログラムを記録した付記44に記載の記録媒体。
(付記46) パケットを中継する機能を有するネットワーク接続装置に接続されたサーバに実行させるプログラムを記録した記録媒体であって、
上記ネットワーク接続装置から転送された上記パケットを受信し、
上記パケットを解析することにより、上記パケットに対するサービスの内容を決定し、
上記決定されたサービス内容に基づいて上記ネットワーク接続装置に上記パケットを処理させるために、該決定されたサービスの内容を上記ネットワーク接続装置に設定する、
ことを含む処理を上記サーバに実行させるプログラムを記録した記録媒体。