(57)【特許請求の範囲】
【請求項１】
パケットを中継するスイッチであって、第１フローテーブルを備え、前記第１フローテーブルに従って動作するように構成された前記スイッチと、
前記スイッチを制御して通信新経路を決定するコントローラと、
前記スイッチを介して前記コントローラと接続するフロントエンドプロセッサであって、第２フローテーブルを備え、前記第２フローテーブルに従って動作するように構成された前記フロントエンドプロセッサと
を具備し、
前記コントローラは、前記通信新経路を決定するにあたって、前記パケットに対して行うべき処理の内容をフローエントリとして前記第１および前記第２フローテーブルにそれぞれ書き込み、
前記フロントエンドプロセッサは、
前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ７レベルのプロトコルに対応したクエリパケットを生成し、前記クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、前記クエリパケットを宛先に送信するディスパッチャと、
レイヤ７レベルのプロトコルを認識するファイアウォールであって、前記クエリパケットの通過の許否を決定するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作する前記ファイアウォールと、
レイヤ７レベルのプロトコルを認識するロードバランサであって、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行い、前記クエリパケットが最初のクエリパケットである場合、前記スイッチを介して前記クエリパケットを前記コントローラに送信し、前記クエリパケットの経路を確認するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作する前記ロードバランサと
を具備する
フロントエンドシステム。
【請求項２】
請求項１に記載のフロントエンドシステムであって、
前記ディスパッチャは、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサ上で前記ファイアウォール及び前記ロードバランサを立ち上げる処理を行い、前記ファイアウォール及び前記ロードバランサに対して前記クエリパケットを送信する
フロントエンドシステム。
【請求項３】
請求項１又は２に記載のフロントエンドシステムであって、
前記ロードバランサは、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサに対して前記クエリパケットを返信するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作する
フロントエンドシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のフロントエンドシステムであって、
前記第１フローテーブルは、前記パケットに対するルール及びアクションで定義されたフローを含んでおり、
前記スイッチは、
前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを前記第１フローテーブルで確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送するポートと、
レイヤ４レベルのプロトコルを認識するＬ４ファイアウォールであって、前記パケットの通過の許否を決定するという処理のフローエントリが書き込まれた前記第１フローテーブルに従って動作する前記Ｌ４ファイアウォールと、
レイヤ４レベルのプロトコルを認識するＬ４ロードバランサであって、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うという処理のフローエントリが書き込まれた前記第１フローテーブルに従って動作する前記Ｌ４ロードバランサと
を具備し、
前記スイッチは、前記Ｌ４ファイアウォール及び前記Ｌ４ロードバランサを共に稼動させて、前記パケットの通過の許否を決定し、前記パケットのロードバランシングを行い、前記フロントエンドプロセッサへの前記パケットの転送を行わないという処理のフローエントリが書き込まれた前記第１フローテーブルに従って動作することで、前記フロントエンドプロセッサでの処理を不要とする
フロントエンドシステム。
【請求項５】
請求項１乃至３のいずれか一項に記載のフロントエンドシステムであって、
前記フロントエンドプロセッサは、前記スイッチを経由するＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作し、
前記コントローラは、
前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知するＯＳと、
レイヤ７レベルのプロトコルを認識し、前記クエリパケットの通過の許否を決定するＬ７ファイアウォールと、
レイヤ７レベルのプロトコルを認識し、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行うＬ７ロードバランサと
を具備する
フロントエンドシステム。
【請求項６】
請求項１乃至３のいずれか一項に記載のフロントエンドシステムであって、
前記第１フローテーブルは、前記パケットに対するルール及びアクションで定義されたフローを含んでおり、
前記スイッチは、
前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを前記第１フローテーブルで確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送するポートと、
レイヤ４レベルのプロトコルを認識するＬ４ロードバランサであって、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うという処理のフローエントリが書き込まれた前記第１フローテーブルに従って動作するＬ４ロードバランサと
を具備し、
前記コントローラは、
前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知するＯＳと、
レイヤ７レベルのプロトコルを認識し、前記クエリパケットの通過の許否を決定するＬ７ファイアウォールと
を具備し、
前記スイッチは、前記Ｌ４ロードバランサが稼動している場合、前記パケットの経路を前記フロントエンドプロセッサ経由に変更し、前記パケットを前記フロントエンドプロセッサに送信するという処理のフローエントリが書き込まれた前記第１フローテーブルに従って動作し、
前記コントローラは、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記Ｌ７ファイアウォールを稼動させて、前記クエリパケットの通過の許否を決定する
フロントエンドシステム。
【請求項７】
請求項１乃至３のいずれか一項に記載のフロントエンドシステムであって、
前記コントローラは、
レイヤ４レベルのプロトコルを認識し、前記スイッチから前記パケットを受信し、前記パケットの通過の許否を決定し、前記パケットの通過を制限する場合、前記パケットを廃棄し、前記スイッチに対し、前記パケットと同一ルールのパケットを廃棄する旨を通知するＬ４ファイアウォールと、
ネットワーク全体のトポロジー情報を参照し、前記Ｌ４ファイアウォールから前記パケットを受信し、前記スイッチから前記パケットを受信し、前記パケットに対するルール及びアクションを決定し、前記スイッチに通知するＯＳと、
レイヤ７レベルのプロトコルを認識し、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記クエリパケットのロードバランシングを行うＬ７ロードバランサと
を具備し、
前記フロントエンドプロセッサは、前記スイッチを経由するＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作する
フロントエンドシステム。
【請求項８】
請求項１乃至７のいずれか一項に記載のフロントエンドシステムであって、
前記第２フローテーブルは、前記パケットに対するルール及びアクションで定義されたフローを含む
フロントエンドシステム。
【請求項９】
フロントエンドシステムにおけるフロントエンド処理方法であって、
前記フロントエンドシステムは、
パケットを中継するスイッチであって、第１フローテーブルを備え、前記第１フローテーブルに従って動作するように構成された前記スイッチと、
前記スイッチを制御して通信新経路を決定するコントローラと、
前記スイッチを介して前記コントローラと接続されるフロントエンドプロセッサであって、第２フローテーブルを備え、前記第２フローテーブルに従って動作するように構成された前記フロントエンドプロセッサと
を具備し、
前記コントローラは、前記通信新経路を決定するにあたって、前記パケットに対して行うべき処理の内容をフローエントリとして前記第１および前記第２フローテーブルにそれぞれ書き込み、
前記フロントエンドプロセッサは、
ディスパッチャと、
レイヤ７レベルのプロトコルを認識するファイアウォールと、
レイヤ７レベルのプロトコルを認識するロードバランサと
を具備し、
前記フロントエンド処理方法は、
前記フロントエンドプロセッサが、前記スイッチを介して、前記コントローラと接続されることと、
前記フロントエンドプロセッサ上で、前記ディスパッチャが、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ７レベルのプロトコルに対応したクエリパケットを生成することと、
前記フロントエンドプロセッサ上で、前記クエリパケットの通過の許否を決定するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って前記ファイアウォールが動作することと、
前記フロントエンドプロセッサ上で、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行い、前記クエリパケットが最初のクエリパケットである場合、前記スイッチを介して前記クエリパケットを前記コントローラに送信し、前記クエリパケットの経路を確認するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って前記ロードバランサが動作することと、
前記フロントエンドプロセッサ上で、前記ディスパッチャが、前記クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、前記クエリパケットを宛先に送信することと、
を含む
フロントエンド処理方法。
【請求項１０】
請求項９に記載のフロントエンド処理方法であって、
前記フロントエンドプロセッサ上で、前記ディスパッチャが、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサ上で前記ファイアウォール及び前記ロードバランサを立ち上げる処理を行い、前記ファイアウォール及び前記ロードバランサに対して前記クエリパケットを送信すること
を更に含む
フロントエンド処理方法。
【請求項１１】
請求項９又は１０に記載のフロントエンド処理方法であって、
前記ロードバランサが、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサに対して前記クエリパケットを返信するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作すること
を更に含む
フロントエンド処理方法。
【請求項１２】
請求項９乃至１１のいずれか一項に記載のフロントエンド処理方法であって、
前記第１フローテーブルは、前記パケットに対するルール及びアクションで定義されたフローを含んでおり、
前記スイッチは、
レイヤ４レベルのプロトコルを認識するＬ４ファイアウォールと、
レイヤ４レベルのプロトコルを認識するＬ４ロードバランサと
を具備し、
前記フロントエンド処理方法は、
前記パケットが最初のパケットである場合、前記スイッチが、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを前記第１フローテーブルで確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送することと、
前記スイッチ上で、前記パケットの通過の許否を決定するという処理のフローエントリが書き込まれた前記第１フローテーブルに従って前記Ｌ４ファイアウォールが動作することと、
ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うという処理のフローエントリが書き込まれた前記第１フローテーブルに従って前記Ｌ４ロードバランサが動作することと、
前記スイッチが、前記Ｌ４ファイアウォール及び前記Ｌ４ロードバランサを共に稼動させて、前記パケットの通過の許否を決定し、前記パケットのロードバランシングを行い、前記フロントエンドプロセッサへの前記パケットの転送を行わないという処理のフローエントリが書き込まれた前記第１フローテーブルに従って前記スイッチが動作することで、前記フロントエンドプロセッサでの処理を不要とすることと
を更に含む
フロントエンド処理方法。
【請求項１３】
請求項９乃至１１のいずれか一項に記載のフロントエンド処理方法であって、
前記コントローラは、
ＯＳと、
レイヤ７レベルのプロトコルを認識するＬ７ファイアウォールと、
レイヤ７レベルのプロトコルを認識するＬ７ロードバランサと、
を具備し、
前記フロントエンド処理方法は、
前記コントローラ上で、前記ＯＳが、前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知することと、
前記フロントエンドプロセッサが、前記スイッチを経由するＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作することと、
前記コントローラ上で、前記Ｌ７ファイアウォールが、前記クエリパケットの通過の許否を決定することと、
前記コントローラ上で、前記Ｌ７ロードバランサが、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行うことと
を具備する
フロントエンド処理方法。
【請求項１４】
請求項９乃至１１のいずれか一項に記載のフロントエンド処理方法であって、
前記第１フローテーブルは、前記パケットに対するルール及びアクションで定義されたフローを含んでおり、
前記スイッチは、
レイヤ４レベルのプロトコルを認識するＬ４ロードバランサ
を具備し、
前記コントローラは、
ＯＳと、
レイヤ７レベルのプロトコルを認識するＬ７ファイアウォールと
を具備し、
前記フロントエンド処理方法は、
前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを前記第１フローテーブルで確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送することと、
前記コントローラ上で、前記ＯＳが、前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知することと、
前記スイッチ上で、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うという処理のフローエントリが書き込まれた前記第１フローテーブルに従って前記Ｌ４ロードバランサが動作することと、
前記Ｌ４ロードバランサが稼動している場合、前記パケットの経路を前記フロントエンドプロセッサ経由に変更し、前記パケットを前記フロントエンドプロセッサに送信するという処理のフローエントリが書き込まれた前記第１フローテーブルに従って前記スイッチが動作することと、
前記コントローラが、前記フロントエンドプロセッサから前記クエリパケットを受信することと、
前記コントローラ上で、前記Ｌ７ファイアウォールが、前記クエリパケットの通過の許否を決定することと
を更に含む
フロントエンド処理方法。
【請求項１５】
請求項９乃至１１のいずれか一項に記載のフロントエンド処理方法であって、
前記コントローラは、
レイヤ４レベルのプロトコルを認識するＬ４ファイアウォールと、
ＯＳと、
レイヤ７レベルのプロトコルを認識するＬ７ロードバランサと
を具備し、
前記フロントエンド処理方法は、
前記コントローラ上で、前記Ｌ４ファイアウォールが、前記スイッチから前記パケットを受信し、前記パケットの通過の許否を決定し、前記パケットの通過を制限する場合、前記パケットを廃棄し、前記スイッチに対し、前記パケットと同一ルールのパケットを廃棄する旨を通知することと、
前記コントローラ上で、前記ＯＳが、ネットワーク全体のトポロジー情報を参照し、前記Ｌ４ファイアウォールから前記パケットを受信し、前記スイッチから前記パケットを受信し、前記パケットに対するルール及びアクションを決定し、前記スイッチに通知することと、
前記フロントエンドプロセッサが、前記スイッチを経由するＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信するという処理のフローエントリが書き込まれた前記第２フローテーブルに従って動作することと、
前記コントローラ上で、前記Ｌ７ロードバランサが、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記クエリパケットのロードバランシングを行うことと
を更に含む
フロントエンド処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フロントエンドシステムに関し、特に複数の中継機器が混在するフロントエンドシステムに関する。
【背景技術】
【０００２】
企業等の組織内におけるネットワークシステムでは、ＯＳＩ参照モデルのネットワーク層（第３層）以上のデータを認識し、そのデータを基にパケットの行き先を制御するルーティングが行われている。このようなネットワークシステム上に存在するスイッチは、サポートするＯＳＩ参照モデルの層（レイヤ）ごとに、細かく分類されている。主な種別としては、ネットワーク層（第３層）のデータを読むＬ３スイッチ（レイヤ３スイッチ）、トランスポート層（第４層）のデータを読むＬ４スイッチ（レイヤ４スイッチ）、アプリケーション層（第７層）のデータを読むＬ７スイッチ（レイヤ７スイッチ）がある。Ｌ７スイッチは、アプリケーションスイッチと呼ばれることもある。
【０００３】
Ｌ３スイッチは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の中核機器として、ルータの持つパケットの転送機能をハードウエア化し、大幅に高速化したネットワーク機器である。Ｌ３スイッチは、従来のスイッチであるＬ２スイッチ（レイヤ２スイッチ）が進化して生まれた。Ｌ２スイッチは、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  ａｄｄｒｅｓｓ）を基にＬＡＮフレームを中継する機器である。これに対して、Ｌ３スイッチは、ＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を基に中継先を決めるルータ機能も兼ね備える。つまり、Ｌ３スイッチは、Ｌ２スイッチとルータが１台になった装置である。
【０００４】
Ｌ４スイッチは、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等のトランスポート層（第４層）レベルのプロトコルを認識し、ネットワーク層（第３層）を通して送られてきたデータの整序や誤り訂正、及び再送要求を行い、データ転送の信頼性を確保する。
【０００５】
Ｌ７スイッチは、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等のアプリケーション層レベルのプロトコルを認識し、パケットの具体的な通信内容を基に行き先を制御することができる。
【０００６】
また、Ｌ７スイッチと同じアプリケーション層（第７層）では、帯域制御装置によりパケットの帯域制御を行うことができる。更に、アプリケーション層レベルで、ファイアウォール（ＦＷ：ＦｉｒｅＷａｌｌ）によりパケットの通過を制限することや、ロードバランサ（ＬＢ：Ｌｏａｄ  Ｂａｌａｎｃｅｒ（負荷分散装置））によりロードバランシングや冗長化を行うこともできる。
【０００７】
しかし、企業等の組織内における今までのネットワーク構成では、帯域制御装置や、ファイアウォール（ＦＷ）や、ロードバランサ（ＬＢ）として、専用のアプライアンス（ａｐｐｌｉａｎｃｅ）が必要であった。また、インターネットからルータがパケットを受信してから端末に当該パケットが到着するまでの間に、これらの専用のアプライアンスにより、段階的に、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）確保を目的とした帯域制御（ｂａｎｄｗｉｄｔｈ  ｃｏｎｔｒｏｌ）や、ファイアウォール（ＦＷ）による侵入防止や、ロードバランシングが行われていた。
【０００８】
例えば、図１に示すように、今までのネットワーク構成では、ルータがインターネットからパケットを受信し（Ｌ３）、当該パケットを帯域制御装置に転送し（Ｌ７）、帯域制御装置が行った帯域制御に従って当該パケットを第１のＬ３スイッチに転送し（Ｌ３）、第１のＬ３スイッチが当該パケットをファイアウォール（ＦＷ）に転送し（Ｌ７）、ファイアウォール（ＦＷ）が侵入を許可すれば当該パケットを第２のＬ３スイッチに転送し（Ｌ３）、第２のＬ３スイッチが当該パケットをロードバランサ（ＬＢ）に転送し（Ｌ７）、ロードバランサ（ＬＢ）が行ったロードバランシングに従って当該パケットをＬ２スイッチに転送し（Ｌ２）、Ｌ２スイッチが配下の端末に当該パケットを転送していた。
【０００９】
そのため、Ｌ３スイッチで受信したパケットであっても、帯域制御や、侵入防止や、ロードバランシングを行うため、その都度、Ｌ７データを参照したり、Ｌ７スイッチにアクセスしたりする必要があり、データコピー等によるプロトコルオーバーヘッドが多発していた。
【００１０】
なお、ファイアウォール（ＦＷ）に関する先行技術が非特許文献１に開示されている。また、ロードバランサ（ＬＢ）に関する先行技術が非特許文献２に開示されている。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】“Ｄｅｌｅｇａｔｉｎｇ  Ｎｅｔｗｏｒｋ  Ｓｅｃｕｒｉｔｙ  Ｗｉｔｈ  Ｍｏｒｅ  Ｉｎｆｏｒｍａｔｉｏｎ”  Ｊａｄ  Ｎａｏｕｓ，  Ｒｙａｎ  Ｓｔｕｔｓｍａｎ，  Ｄａｖｉｄ  Ｍａｚｉｅｒｅｓ，  Ｎｉｃｋ  ＭｃＫｅｏｗｎ，  Ｎｉｃｋｏｌａｉ  Ｚｅｌｄｏｖｉｃｈ．  ＜ｈｔｔｐ：／／ｗｗｗ．ｓｃｓ．ｓｔａｎｆｏｒｄ．ｅｄｕ／〜ｓｔｕｔｓｍａｎ／ｐａｐｅｒｓ／ｗｒｅｎ２７−ｎａｏｕｓ．ｐｄｆ＞
【非特許文献２】“Ｐｌｕｇ−ｎ−Ｓｅｒｖｅ：  Ｌｏａｄ−Ｂａｌａｎｃｉｎｇ  Ｗｅｂ  Ｔｒａｆｆｉｃ  ｕｓｉｎｇ  ＯｐｅｎＦｌｏｗ”  Ｎｉｋｈｉｌ  Ｈａｎｄｉｇｏｌ，  Ｓｒｉｎｉｖａｓａｎ  Ｓｅｅｔｈａｒａｍａｎ†，  Ｍａｒｉｏ  Ｆｌａｊｓｌｉｋ，  Ｎｉｃｋ  ＭｃＫｅｏｗｎ，  Ｒａｍｅｓｈ  Ｊｏｈａｒｉ．  ＜ｈｔｔｐ：／／ｃｏｎｆｅｒｅｎｃｅｓ．ｓｉｇｃｏｍｍ．ｏｒｇ／ｓｉｇｃｏｍｍ／２００９／ｄｅｍｏｓ／ｓｉｇｃｏｍｍ−ｐｄ−２００９−ｆｉｎａｌ２６．ｐｄｆ＞
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、図２に示すように、外部ネットワークの出入口となるスイッチの近傍に、Ｌ７（レイヤ７）レベルのプロトコルを認識するファイアウォール（ＦＷ）やロードバランサ（ＬＢ）を併せ持つフロントエンドプロセッサ（ＦＥＰ：Ｆｒｏｎｔ  Ｅｎｄ  Ｐｒｏｃｅｓｓｏｒ）を設け、Ｌ７（レイヤ７）処理を一元化したフロントエンドシステムを提供することである。
【課題を解決するための手段】
【００１３】
本発明のフロントエンドシステムは、パケットを中継するスイッチと、スイッチを制御して通信新経路を決定するコントローラと、スイッチを介してコントローラと接続するフロントエンドプロセッサとを具備する。フロントエンドプロセッサは、ディスパッチャと、ファイアウォールと、ロードバランサとを具備する。当該ディスパッチャは、パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ７レベルのプロトコルに対応したクエリパケットを生成し、クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、クエリパケットを宛先に送信する。当該ファイアウォールは、レイヤ７レベルのプロトコルを認識し、クエリパケットの通過の許否を決定する。当該ロードバランサは、レイヤ７レベルのプロトコルを認識し、ネットワークの負荷状況に応じてクエリパケットのロードバランシングを行い、クエリパケットが最初のクエリパケットである場合、スイッチを介してクエリパケットをコントローラに送信し、クエリパケットの経路を確認する。
【００１４】
本発明のフロントエンド処理方法では、フロントエンドプロセッサを、パケットを中継するスイッチを介して、スイッチを制御して通信新経路を決定するコントローラと接続する。また、フロントエンドプロセッサ上で、ディスパッチャにより、パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ７レベルのプロトコルに対応したクエリパケットを生成する。また、フロントエンドプロセッサ上で、レイヤ７レベルのプロトコルを認識するファイアウォールにより、クエリパケットの通過の許否を決定する。また、フロントエンドプロセッサ上で、レイヤ７レベルのプロトコルを認識するロードバランサにより、ネットワークの負荷状況に応じてクエリパケットのロードバランシングを行い、クエリパケットが最初のクエリパケットである場合、スイッチを介してクエリパケットをコントローラに送信し、クエリパケットの経路を確認する。また、フロントエンドプロセッサ上で、ディスパッチャにより、クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、クエリパケットを宛先に送信する。
【発明の効果】
【００１５】
Ｌ７（レイヤ７）処理の一元化を実現することで、エンド・ツー・エンド（Ｅｎｄ  ｔｏ  Ｅｎｄ）での性能向上を図ることができ、ポリシー毎に柔軟にネットワークを構築することができる。
【図面の簡単な説明】
【００１６】
【図１】従来のネットワークシステム（専用のアプライアンスを配置）の構成を示す図である。
【図２】本発明に係るネットワークシステムの構成を示す図である。
【図３】本発明のフロントエンドシステムの基本構成を示す図である。
【図４Ａ】ファイアウォール：ＦＷ（Ｌ４）、ロードバランサ：ＬＢ（Ｌ４）の場合（実施例１）のネットワークシステムの構成を示す図である。
【図４Ｂ】ＦＷ（Ｌ４）、ＬＢ（Ｌ４）の場合（実施例１）のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。
【図４Ｃ】ＦＷ（Ｌ４）、ＬＢ（Ｌ４）の場合（実施例１）のフロントエンドシステムの基本構成を示す図である。
【図５Ａ】ＦＷ（Ｌ７）、ＬＢ（Ｌ７）の場合（実施例２）のネットワークシステムの構成を示す図である。
【図５Ｂ】ＦＷ（Ｌ７）、ＬＢ（Ｌ７）の場合（実施例２）のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。
【図５Ｃ】ＦＷ（Ｌ７）、ＬＢ（Ｌ７）の場合（実施例２）のフロントエンドシステムの基本構成を示す図である。
【図６Ａ】ＦＷ（Ｌ７）、ＬＢ（Ｌ４）の場合（実施例３）のネットワークシステムの構成を示す図である。
【図６Ｂ】ＦＷ（Ｌ７）、ＬＢ（Ｌ４）の場合（実施例３）のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。
【図６Ｃ】ＦＷ（Ｌ７）、ＬＢ（Ｌ４）の場合（実施例３）のフロントエンドシステムの基本構成を示す図である。
【図７Ａ】ＦＷ（Ｌ４）、ＬＢ（Ｌ７）の場合（実施例４）のネットワークシステムの構成を示す図である。
【図７Ｂ】ＦＷ（Ｌ４）、ＬＢ（Ｌ７）の場合（実施例４）のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。
【図７Ｃ】ＦＷ（Ｌ４）、ＬＢ（Ｌ７）の場合（実施例４）のフロントエンドシステムの基本構成を示す図である。
【図８】ＦＷ機能とＬＢ機能の組み合わせのイメージを示す図である。
【図９】ポリシーＤＢのイメージを示す図である。
【図１０】フローテーブルのイメージを示す図である。
【図１１】クエリ（Ｑｕｅｒｙ）パケットのイメージを示す図である。
【図１２】ＦＥＰによるバランシング処理のイメージを示す図である。
【発明を実施するための形態】
【００１７】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００１８】
［基本構成］
図３に示すように、本発明のフロントエンドシステムは、スイッチ１０と、コントローラ２０と、フロントエンドプロセッサ（ＦＥＰ：Ｆｒｏｎｔ  Ｅｎｄ  Ｐｒｏｃｅｓｓｏｒ）３０を備える。
【００１９】
スイッチ１０は、ポート１１と、ファイアウォール（ＦＷ）１２と、ロードバランサ（ＬＢ）１３を備える。
【００２０】
ポート１１は、フローテーブル（Ｆｌｏｗ  Ｔａｂｌｅ）１１１を有する。
【００２１】
コントローラ２０は、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）２１と、ファイアウォール（ＦＷ）２２と、ロードバランサ（ＬＢ）２３を備える。
【００２２】
オペレーティングシステム（ＯＳ）２１は、ポリシーＤＢ（ＤａｔａＢａｓｅ）２１１を有する。
【００２３】
フロントエンドプロセッサ（ＦＥＰ）３０は、ディスパッチャ（ｄｉｓｐａｔｃｈｅｒ）３１と、ファイアウォール（ＦＷ）３２と、ロードバランサ（ＬＢ）３３を備える。
【００２４】
ディスパッチャ３１は、適用ポリシー３１１を有する。
【００２５】
ファイアウォール（ＦＷ）３２は、フローテーブル３２１を有する。
【００２６】
ロードバランサ（ＬＢ）３３は、フローテーブル３３１と、サーバ情報３３２と、セッション維持情報３３３を有する。
【００２７】
なお、ファイアウォール（ＦＷ）１２及びファイアウォール（ＦＷ）２２は、ファイアウォール（ＦＷ）３２と同様の構成にしても良い。すなわち、ファイアウォール（ＦＷ）１２やファイアウォール（ＦＷ）２２も、フローテーブル３３１に相当する情報を有していても良い。
【００２８】
また、ロードバランサ（ＬＢ）１３及びロードバランサ（ＬＢ）２３は、ロードバランサ（ＬＢ）３３と同様の構成にしても良い。すなわち、ロードバランサ（ＬＢ）１３やロードバランサ（ＬＢ）２３も、フローテーブル３３１、サーバ情報３３２、及びセッション維持情報３３３に相当する情報を有していても良い。
【００２９】
［構成の詳細な説明］
スイッチ１０、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０は、それぞれ複数でも良い。また、スイッチ１０、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０の各々は、計算機上に構築された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））環境でも良い。
【００３０】
ここでは、スイッチ１０を介して、コントローラ２０とフロントエンドプロセッサ（ＦＥＰ）３０が接続されている。なお、コントローラ２０とフロントエンドプロセッサ（ＦＥＰ）３０は、一体化していても良い。コントローラ２０とフロントエンドプロセッサ（ＦＥＰ）３０が一体化している場合、コントローラ２０とフロントエンドプロセッサ（ＦＥＰ）３０は、スイッチ１０を介さずに、直接的に通信可能である。
【００３１】
ポート１１は、コントローラ２０とフロントエンドプロセッサ（ＦＥＰ）３０に接続されている。また、ポート１１は、インターネット等の外部ネットワークを介して、外部の通信装置に接続されている。ここでは、ポート１１は、外部の通信装置、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０の相互間でデータを転送する。
【００３２】
ファイアウォール（ＦＷ）１２、ファイアウォール（ＦＷ）２２、及びファイアウォール（ＦＷ）３２は、外部ネットワークを通じて第三者が侵入し、データやプログラムの盗み見・改ざん・破壊等が行なわれることのないように、外部との境界を流れるデータを監視し、不正なアクセスを検出・遮断する機能を有する。
【００３３】
ロードバランサ（ＬＢ）１３、ロードバランサ（ＬＢ）２３、及びロードバランサ（ＬＢ）３３は、外部ネットワークからの要求を一元的に管理し、同等の機能を持つ複数のサーバに要求を分散して転送する機能を有する。なお、ロードバランサ（ＬＢ）によるロードバランシングとの並列処理として、侵入防止システム（ＩＰＳ：Ｉｎｔｒｕｓｉｏｎ  Ｐｒｅｖｅｎｔｉｏｎ  Ｓｙｓｔｅｍ）によりサーバやネットワークへの不正侵入を阻止することもできる。
【００３４】
オペレーティングシステム（ＯＳ）２１は、コントローラ２０がパケットを受信した際、ネットワーク全体のトポロジー情報に従って、ファイアウォール（ＦＷ）やロードバランサ（ＬＢ）等の機能モジュールに通知する。
【００３５】
ディスパッチャ３１は、実行可能なプロセスやタスク等に対してＦＥＰの計算能力を割り当てる。ここでは、ディスパッチャ３１は、受信したパケットに基づいてクエリ（Ｑｕｅｒｙ）パケットを生成する。また、ディスパッチャ３１は、自ＦＥＰや他のＦＥＰの負荷状況を見て、比較的負荷の低いＦＥＰに対して、ファイアウォール（ＦＷ）やロードバランサ（ＬＢ）等の機能モジュールの立ち上げを行い、生成されたクエリ（Ｑｕｅｒｙ）パケットを振り分ける。また、ディスパッチャ３１は、ファイアウォール（ＦＷ）やロードバランサ（ＬＢ）等の機能モジュールからクエリ（Ｑｕｅｒｙ）パケットを受け取り、当該クエリ（Ｑｕｅｒｙ）パケットのポリシーチェックを行った後、問題がなければ当該クエリ（Ｑｕｅｒｙ）パケットを宛先に送信する。
【００３６】
フローテーブル１１１、フローテーブル３２１、及びフローテーブル３３１は、スイッチやノード毎のパス（フローエントリ）を格納したものである。フローとは、所定の規則（ルール）に適合するパケットに対して行うべき所定の処理（アクション）を定義したものである。フローのルールは、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットのヘッダ領域に含まれる入出力ポート情報（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｐｏｒｔ）、宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート番号（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート番号（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。上記のアドレスには、ＭＡＣアドレスやＩＰアドレスを含むものとする。なお、フローテーブル３２１とフローテーブル３３１は、同じフロントエンドプロセッサ（ＦＥＰ）３０内に存在する場合、同一物でも良い。
【００３７】
ポリシーＤＢ２１１は、ネットワーク全体のトポロジー情報を格納する。
【００３８】
適用ポリシー３１１は、スイッチやノード毎のトポロジー情報を格納する。適用ポリシー３１１は、ポリシーＤＢ２１１のトポロジー情報に従って設定される。
【００３９】
サーバ情報３３２は、パケット又はクエリ（Ｑｕｅｒｙ）パケットの宛先となり、接続（コネクション）を確立する対象となる他の通信装置に関する情報を保持する。ここでは、サーバ情報３３２は、ネットワークを介して所定のサービスを提供するサーバのＩＰアドレス等を保持する。
【００４０】
セッション維持情報３３３は、フロントエンドプロセッサ（ＦＥＰ）３０を経由する経路の両端となる２つの通信装置の間、あるいはフロントエンドプロセッサ（ＦＥＰ）３０と他の通信装置の間で確立された接続（コネクション）におけるセッションに関する情報を保持する。セッションとは、コンピュータシステムやネットワーク通信において、接続／ログインしてから、切断／ログオフするまでの、一連の操作や通信のことを示す。
【００４１】
［基本処理］
フロントエンドプロセッサ（ＦＥＰ）３０のディスパッチャ３１は、スイッチ１０からパケットを受信する。その後、ディスパッチャ３１は、受信したパケットに基づいてクエリ（Ｑｕｅｒｙ）パケットを生成し、生成されたクエリ（Ｑｕｅｒｙ）パケットを、ファイアウォール（ＦＷ）３２及びロードバランサ（ＬＢ）３３のうち少なくとも一方に対して送信する。
【００４２】
ファイアウォール（ＦＷ）３２は、ディスパッチャ３１あるいはロードバランサ（ＬＢ）３３からクエリ（Ｑｕｅｒｙ）パケットを受信した場合、フローテーブル３２１を参照し、フローテーブル３２１内に該当するフローが登録されているか確認する。フローテーブル３２１内に該当するフローが登録されている場合、ファイアウォール（ＦＷ）３２は、そのフローに従い、当該クエリ（Ｑｕｅｒｙ）パケットを通過させるか否か判断する。当該クエリ（Ｑｕｅｒｙ）パケットを通過させる場合、ファイアウォール（ＦＷ）３２は、当該クエリ（Ｑｕｅｒｙ）パケットをディスパッチャ３１あるいはロードバランサ（ＬＢ）３３に送信する。当該クエリ（Ｑｕｅｒｙ）パケットを通過させない場合、ファイアウォール（ＦＷ）３２は、当該クエリ（Ｑｕｅｒｙ）パケットを廃棄する。また、フローテーブル３２１内に該当するフローが登録されていない場合、ファイアウォール（ＦＷ）３２は、当該クエリ（Ｑｕｅｒｙ）パケットを最初のクエリ（１ｓｔ（Ｆｉｒｓｔ）  Ｑｕｅｒｙ）パケットであるものと判断して、当該クエリ（Ｑｕｅｒｙ）パケットを通過させてディスパッチャ３１あるいはロードバランサ（ＬＢ）３３に送信する。
【００４３】
ロードバランサ（ＬＢ）３３は、ディスパッチャ３１あるいはファイアウォール（ＦＷ）３２からクエリ（Ｑｕｅｒｙ）パケットを受信した場合、フローテーブル３３１を参照し、フローテーブル３３１内に該当するフローが登録されているか確認する。フローテーブル３３１内に該当するフローが登録されている場合、ロードバランサ（ＬＢ）３３は、そのフローに従い、当該クエリ（Ｑｕｅｒｙ）パケットをロードバランシングしてディスパッチャ３１に送信する。また、フローテーブル３３１内に該当するフローが登録されていない場合、ロードバランサ（ＬＢ）３３は、当該クエリ（Ｑｕｅｒｙ）パケットを最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケットであるものと判断して、スイッチ１０を介して、当該クエリ（Ｑｕｅｒｙ）パケットをコントローラ２０に送信する。なお、最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケットとは、以前に処理されたことのない未知のクエリ（Ｑｕｅｒｙ）パケットという意味である。
【００４４】
スイッチ１０のポート１１は、通常のパケットやクエリ（Ｑｕｅｒｙ）パケットを受信した場合、フローテーブル１１１を参照し、フローテーブル１１１内に該当するフローが登録されているか確認する。フローテーブル１１１内に該当するフローが登録されている場合、ポート１１は、当該パケットに対するフローテーブル１１１内のフロー（ルール＋アクション）の情報に従い、当該パケットを処理する。また、フローテーブル１１１内に一致するパケットが登録されてない場合、ポート１１は、当該パケットを、一旦コントローラ２０に送信する。ポート１１が未知のパケットを一旦コントローラ２０に送信する旨は、フローテーブル１１１内にフローとして予め登録しておいても良い。ここでは、ポート１１は、フロントエンドプロセッサ（ＦＥＰ）３０からクエリ（Ｑｕｅｒｙ）パケットを受信した場合、フローテーブル１１１を参照し、フローテーブル１１１内に該当するフローが登録されているか確認する。当該クエリ（Ｑｕｅｒｙ）パケットは最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケットであり、フローテーブル１１１内に該当するフローが登録されていないため、ポート１１は、当該クエリ（Ｑｕｅｒｙ）パケットをコントローラ２０に送信する。
【００４５】
コントローラ２０のロードバランサ（ＬＢ）２３は、スイッチ１０を介して、フロントエンドプロセッサ（ＦＥＰ）３０からクエリ（Ｑｕｅｒｙ）パケットを受信した場合、
当該クエリ（Ｑｕｅｒｙ）パケットをファイアウォール（ＦＷ）２２やロードバランサ（ＬＢ）２３に送信して処理する。また、ロードバランサ（ＬＢ）２３は、ファイアウォール（ＦＷ）２２又はロードバランサ（ＬＢ）２３での処理結果に応じて、ポート１１のフローテーブル１１１と、ロードバランサ（ＬＢ）３３のフローテーブル３３１と、ファイアウォール（ＦＷ）３２のフローテーブル３２１に対して、当該クエリ（Ｑｕｅｒｙ）パケットに関するフローを新たに登録する。例えば、ロードバランサ（ＬＢ）２３は、各フローテーブルに当該クエリ（Ｑｕｅｒｙ）パケットに関するフローを新たに登録する旨の制御命令を、スイッチ１０やフロントエンドプロセッサ（ＦＥＰ）３０に送信する。なお、ロードバランサ（ＬＢ）２３は、ファイアウォール（ＦＷ）３２のフローテーブル３２１に対しては、直接的にフローを登録するのではなく、ロードバランサ（ＬＢ）３３を介して間接的にフローを登録するようにしても良い。フローテーブル３２１とフローテーブル３３１が同一物であれば問題ない。更に、フロー登録の直後に（或いは同時に）、ロードバランサ（ＬＢ）２３は、スイッチ１０を介して、ロードバランサ（ＬＢ）２３に当該クエリ（Ｑｕｅｒｙ）パケットを返信する。
【００４６】
フロントエンドプロセッサ（ＦＥＰ）３０のロードバランサ（ＬＢ）３３は、スイッチ１０を介して、コントローラ２０からクエリ（Ｑｕｅｒｙ）パケットを受信した場合、フローテーブル３３１を参照し、フローテーブル３３１内に該当するフローが登録されているか確認する。ここでは、コントローラ２０のロードバランサ（ＬＢ）２３により、当該クエリ（Ｑｕｅｒｙ）パケットに関するフローが既にフローテーブル３３１に登録されているため、ロードバランサ（ＬＢ）３３は、当該クエリ（Ｑｕｅｒｙ）パケットをディスパッチャ３１に送信する。このとき、当該クエリ（Ｑｕｅｒｙ）パケットがファイアウォール（ＦＷ）３２を経由するようにしても良い。
【００４７】
ディスパッチャ３１は、当該クエリ（Ｑｕｅｒｙ）パケットに対して、適用ポリシー３１１に基づくポリシーチェックを行い、問題がなければ当該クエリ（Ｑｕｅｒｙ）パケットを宛先に送信する。
【００４８】
［クエリ（Ｑｕｅｒｙ）パケットの経路１：ＦＷ機能とＬＢ機能の個別処理］
ファイアウォール機能（ＦＷ機能）とロードバランシング機能（ＬＢ機能）を個別に（並列処理で）使用する場合について説明する。この場合、ディスパッチャ３１が、ファイアウォール（ＦＷ）３２やロードバランサ（ＬＢ）２３に対して、個別にクエリ（Ｑｕｅｒｙ）パケットを送信し、それぞれから個別に結果を受け取る。そのため、クエリ（Ｑｕｅｒｙ）パケットの経路は、「ディスパッチャ３１→ファイアウォール（ＦＷ）３２→ディスパッチャ３１」と「ディスパッチャ３１→ロードバランサ（ＬＢ）２３（→コントローラ２０→ロードバランサ（ＬＢ）３３：不一致の場合）→ディスパッチャ３１」の２系統となる。これら２系統の経路を通過する順番は、どちらが先でも良いし、同時でも良い。なお、ファイアウォール（ＦＷ）３２がクエリ（Ｑｕｅｒｙ）パケットを廃棄した場合は、「ファイアウォール（ＦＷ）３２からの廃棄通知」、「ファイアウォール（ＦＷ）３２から応答なし」等により、その旨をディスパッチャ３１が把握し、それ以降の処理を行わない。
【００４９】
［クエリ（Ｑｕｅｒｙ）パケットの経路２：ＦＷ機能とＬＢ機能の連続処理］
ファイアウォール機能（ＦＷ機能）とロードバランシング機能（ＬＢ機能）を連続して（直列処理で）使用する場合について説明する。この場合、ディスパッチャ３１が、ファイアウォール（ＦＷ）３２及びロードバランサ（ＬＢ）２３のいずれか一方に対してクエリ（Ｑｕｅｒｙ）パケットを送信し、受信した側が処理後にクエリ（Ｑｕｅｒｙ）パケットを他方（残りの一方）に対して送信し、その他方（残りの一方）が処理後にクエリ（Ｑｕｅｒｙ）パケットをディスパッチャ３１に送信する。そのため、クエリ（Ｑｕｅｒｙ）パケットの経路は、「ディスパッチャ３１→ファイアウォール（ＦＷ）３２→ロードバランサ（ＬＢ）２３（→コントローラ２０→ロードバランサ（ＬＢ）２３：不一致の場合）→ディスパッチャ３１」、又は「ディスパッチャ３１→ロードバランサ（ＬＢ）２３（→コントローラ２０→ロードバランサ（ＬＢ）２３：不一致の場合）→ファイアウォール（ＦＷ）３２→ディスパッチャ３１」となる。
【００５０】
［他の処理例：基本処理の変更］
なお、上記では、ディスパッチャ３１は、クエリ（Ｑｕｅｒｙ）パケットを生成した後、クエリ（Ｑｕｅｒｙ）パケットを、ファイアウォール（ＦＷ）３２及びロードバランサ（ＬＢ）２３に送信し、応答を受信してからポリシーチェックを行い、宛先に送信する例について説明している。しかし、実際には、ディスパッチャ３１は、クエリ（Ｑｕｅｒｙ）パケットを生成した後、直ちにポリシーチェックを行い、その後にクエリ（Ｑｕｅｒｙ）パケットをファイアウォール（ＦＷ）３２及びロードバランサ（ＬＢ）２３に送信するようにしても良い。この場合、ファイアウォール（ＦＷ）３２及びロードバランサ（ＬＢ）２３のいずれかが、クエリ（Ｑｕｅｒｙ）パケットを宛先に送信する。
【００５１】
［ハードウェア構成の例示］
なお、スイッチ１０の例として、ルータ（ｒｏｕｔｅｒ）、スイッチングハブ（ｓｗｉｔｃｈｉｎｇ  ｈｕｂ）、ゲートウェイ（ｇａｔｅｗａｙ）、プロキシ（ｐｒｏｘｙ）等の中継機器が考えられる。スイッチ１０は、マルチレイヤスイッチ（ｍｕｌｔｉ−ｌａｙｅｒ  ｓｗｉｔｃｈ）でも良い。但し、実際には、これらの例に限定されない。
【００５２】
また、コントローラ２０及びフロントエンドプロセッサ（ＦＥＰ）３０の例として、ＰＣ（パソコン）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機が考えられる。但し、実際には、これらの例に限定されない。
【００５３】
スイッチ１０、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０の各々は、通信機能を有する。通信機能を実現するためのハードウェアの例として、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。また、各々を接続するネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。但し、実際には、これらの例に限定されない。
【００５４】
ポート１１、ファイアウォール（ＦＷ）１２、ロードバランサ（ＬＢ）１３、オペレーティングシステム（ＯＳ）２１、ファイアウォール（ＦＷ）２２、ロードバランサ（ＬＢ）２３、ディスパッチャ３１、ファイアウォール（ＦＷ）３２、及びロードバランサ（ＬＢ）３３の各々は、プログラムで駆動される処理装置等のハードウェアと、そのハードウェアを駆動して所望の処理を実行するソフトウェアと、そのソフトウェアや各種データを格納する記憶装置によって実現される。
【００５５】
上記の処理装置の例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、同様の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。但し、実際には、これらの例に限定されない。
【００５６】
上記の記憶装置の例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）やＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等のリムーバブルディスクや記憶媒体（メディア）等が考えられる。但し、実際には、これらの例に限定されない。
【００５７】
＜実施例＞
図４Ａ〜図７Ｃを参照して、様々な環境における本発明の実施例について説明する。
【００５８】
ここでは、本発明のフロントエンドシステムは、スイッチ（コアＳＷ）１０−１と、スイッチ（内蔵ＳＷ）１０−２と、スイッチ（エッジＳＷ）１０−３と、コントローラ２０と、フロントエンドプロセッサ（ＦＥＰ）３０と、クライアント１００と、サーバ２００を備える。
【００５９】
スイッチ（コアＳＷ）１０−１、スイッチ（内蔵ＳＷ）１０−２、及びスイッチ（エッジＳＷ）１０−３の各々は、スイッチ１０の一種である。スイッチ（コアＳＷ）１０−１、スイッチ（内蔵ＳＷ）１０−２、並びにスイッチ（エッジＳＷ）１０−３の各々は、相互に接続されている。スイッチ（コアＳＷ）１０−１は、インターネット等の外部ネットワークを介してクライアント１００と接続されている。スイッチ（内蔵ＳＷ）１０−２は、コントローラ２０及びフロントエンドプロセッサ（ＦＥＰ）３０に接続されている。スイッチ（エッジＳＷ）１０−３は、サーバ２００と接続されている。このとき、スイッチ（コアＳＷ）１０−１、スイッチ（内蔵ＳＷ）１０−２、及びスイッチ（エッジＳＷ）１０−３は、一体化していても良い。
【００６０】
なお、フロントエンドプロセッサ（ＦＥＰ）３０を配置する位置は、外部ネットワークの出入口かつコントローラ２０の近傍（できれば直近）が望ましい。但し、必須ではない。すなわち、フロントエンドプロセッサ（ＦＥＰ）３０は、可能な限りスイッチ（コアＳＷ）１０−１とコントローラ２０の双方の近傍に配置するのが好適である。従って、コントローラ２０とフロントエンドプロセッサ（ＦＥＰ）３０が一体化していると更に好適である。
【００６１】
以下の説明において、ＦＷ（Ｌ４）は、ファイアウォール（ＦＷ）がＬ４（レイヤ４）レベルで稼動する環境を示す。ＬＢ（Ｌ４）は、ロードバランサ（ＬＢ）がＬ４（レイヤ４）レベルで稼動する環境を示す。ＦＷ（Ｌ７）は、ファイアウォール（ＦＷ）がＬ７（レイヤ７）レベルで稼動する環境を示す。ＬＢ（Ｌ７）は、ロードバランサ（ＬＢ）がＬ７（レイヤ７）レベルで稼動する環境を示す。
【００６２】
ファイアウォール（ＦＷ）及びロードバランサ（ＬＢ）は、Ｌ４（レイヤ４）レベルでは通常のパケットに対する処理を行い、Ｌ７（レイヤ７）レベルではクエリ（Ｑｕｅｒｙ）パケットに対する処理を行う。
【００６３】
［実施例１：ＦＷ（Ｌ４）、ＬＢ（Ｌ４）の場合］
図４Ａ〜図４Ｃを参照して、ＦＷ（Ｌ４）、ＬＢ（Ｌ４）の場合について説明する。
ファイアウォール（ＦＷ）及びロードバランサ（ＬＢ）がいずれもＬ４（レイヤ４）レベルで稼動する場合、当該ファイアウォール（ＦＷ）及びロードバランサ（ＬＢ）は、スイッチ（コアＳＷ）１０−１上で稼動する。この場合、フロントエンドプロセッサ（ＦＥＰ）へのパケット送信は不要である。
【００６４】
（１）１ｓｔパケット
スイッチ（コアＳＷ）１０−１は、ネットワークを介して、クライアント１００からパケットを受信した際、当該パケットが１ｓｔパケットであれば、スイッチ（内蔵ＳＷ）１０−２を介して、パケットをコントローラ２０に転送する。当該パケットは、宛先アドレス（ｄｓｔ：Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）が仮想ＩＰアドレス（ＶＩＰ）であり、送信元アドレス（ｓｒｃ：Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）がクライアント１００のＩＰアドレス（ｃｌ  ＩＰ）である。
【００６５】
（２）ルール作成
コントローラ２０は、スイッチ（コアＳＷ）１０−１からパケットを受信すると、ポリシーＤＢ２１１を参照し、仮想ＩＰアドレス（ＶＩＰ）を基に、必要な処理（Ｌ７レベルの処理の必要性等）を決定し、フローテーブル１１１に書き込むフロー（ルール及びアクション）を作成する。そして、コントローラ２０は、フローテーブル１１１に対して、当該パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ２０は、スイッチ（内蔵ＳＷ）１０−２を介してスイッチ（コアＳＷ）１０−１にパケットを返信する。
【００６６】
（３）ＦＷ（Ｌ４）、ＬＢ（Ｌ４）
スイッチ（コアＳＷ）１０−１は、コントローラ２０からの制御命令に応じて、フローテーブル１１１を更新する。また、スイッチ（コアＳＷ）１０−１は、フローテーブル１１１の更新後に、コントローラ２０から返信されたパケット、又は当該パケットと同一ルールのパケットを受信すると、ファイアウォール（ＦＷ）１２及びロードバランサ（ＬＢ）１３にパケットを送る。ファイアウォール（ＦＷ）１２は、Ｌ４レベルのプロトコルを認識し、当該パケットのＩＰヘッダ、ＴＣＰヘッダを参照して、通過可否を判断する。ロードバランサ（ＬＢ）１３は、Ｌ４レベルのプロトコルを認識し、仮想ＩＰアドレス（ＶＩＰ）に基づいて、実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定する。このとき、ロードバランサ（ＬＢ）１３は、負荷状況を見て、仮想ＩＰアドレス（ＶＩＰ）に対応する実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定しても良い。
【００６７】
（４）３ＷＨＳ（対サーバ）
スイッチ（コアＳＷ）１０−１は、パケットがファイアウォール（ＦＷ）１２で破棄されず、ロードバランサ（ＬＢ）１３でサーバ２００宛に振り分けられた場合、スイッチ（エッジＳＷ）１０−３を介して、パケットをサーバ２００へ送信する。このとき、スイッチ（コアＳＷ）１０−１とサーバ２００は、３ＷＨＳ（３−Ｗａｙ  Ｈａｎｄ  Ｓｈａｋｅ）の手順に従って、当該パケットを含めて、パケットの送受信を３回行い、接続（コネクション）を確立する。
【００６８】
（５）データ通信
その後、スイッチ（コアＳＷ）１０−１は、同一ルールのパケットを受信すると、スイッチ（内蔵ＳＷ）１０−２とスイッチ（エッジＳＷ）１０−３を介して、パケットをサーバ２００へ転送する。
【００６９】
［実施例２：ＦＷ（Ｌ７）、ＬＢ（Ｌ７）の場合］
図５Ａ〜図５Ｃを参照して、ＦＷ（Ｌ７）、ＬＢ（Ｌ７）の場合について説明する。
ファイアウォール（ＦＷ）及びロードバランサ（ＬＢ）がいずれもＬ７（レイヤ７）レベルで稼動する場合、当該ファイアウォール（ＦＷ）及びロードバランサ（ＬＢ）は、コントローラ上で稼動する。この場合、フロントエンドプロセッサ（ＦＥＰ）がＴＣＰのセッションを終端する。また、フロントエンドプロセッサ（ＦＥＰ）は、クライアント１００側とサーバ２００側の双方に接続（コネクション）を確立する。
【００７０】
（１）１ｓｔパケット
スイッチ（コアＳＷ）１０−１は、ネットワークを介して、クライアント１００からパケットを受信した際、当該パケットが１ｓｔパケットであれば、スイッチ（内蔵ＳＷ）１０−２を介して、当該パケットをコントローラ２０に転送する。当該パケットは、宛先アドレス（ｄｓｔ）が仮想ＩＰアドレス（ＶＩＰ）であり、送信元アドレス（ｓｒｃ）がクライアント１００のＩＰアドレス（ｃｌ  ＩＰ）である。
【００７１】
（２）ルール作成
コントローラ２０は、スイッチ（コアＳＷ）１０−１からパケットを受信すると、ポリシーＤＢ２１１を参照し、仮想ＩＰアドレス（ＶＩＰ）を基に、必要な処理（Ｌ７レベルの処理の必要性等）を決定し、フローテーブル１１１に書き込むフロー（ルール及びアクション）を作成する。そして、コントローラ２０は、フローテーブル１１１に対して、当該パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ２０は、スイッチ（内蔵ＳＷ）１０−２を介してスイッチ（コアＳＷ）１０−１にパケットを返信する。
【００７２】
（３）３ＷＨＳ（対ＦＥＰ）
スイッチ（コアＳＷ）１０−１は、コントローラ２０からの制御命令に応じて、フローテーブル１１１を更新する。また、スイッチ（コアＳＷ）１０−１は、スイッチ（内蔵ＳＷ）１０−２を介して、返信されたパケットをフロントエンドプロセッサ（ＦＥＰ）３０へ転送する。以降、スイッチ（コアＳＷ）１０−１は、返信されたパケットと同一ルールのパケットを受信すると、返信されたパケットと同様に、スイッチ（内蔵ＳＷ）１０−２を介して、パケットをフロントエンドプロセッサ（ＦＥＰ）３０へ転送する。このとき、スイッチ（コアＳＷ）１０−１とフロントエンドプロセッサ（ＦＥＰ）３０は、３ＷＨＳ（３−Ｗａｙ  Ｈａｎｄ  Ｓｈａｋｅ）の手順に従って、パケットの送受信を３回行い、接続（コネクション）を確立する。
【００７３】
（４）データ転送
フロントエンドプロセッサ（ＦＥＰ）３０は、クライアント１００とフロントエンドプロセッサ（ＦＥＰ）３０間の接続（コネクション）が確立した後に、ＴＣＰのセッションを終端し、パケットを受信する。
【００７４】
（５）クエリ（Ｑｕｅｒｙ）パケット生成
フロントエンドプロセッサ（ＦＥＰ）３０は、受信したパケットからクエリ（Ｑｕｅｒｙ）パケットを生成する。このとき、フロントエンドプロセッサ（ＦＥＰ）３０は、生成されたクエリ（Ｑｕｅｒｙ）パケットが最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケットである場合、当該クエリ（Ｑｕｅｒｙ）パケットをコントローラ２０に送信する。
【００７５】
（６）ＦＷ（Ｌ７）、ＬＢ（Ｌ７）
コントローラ２０は、クエリ（Ｑｕｅｒｙ）パケットを受信すると、当該クエリ（Ｑｕｅｒｙ）パケットをファイアウォール（ＦＷ）２２及びロードバランサ（ＬＢ）２３に送る。ファイアウォール（ＦＷ）２２は、Ｌ７レベルのプロトコルを認識し、当該クエリ（Ｑｕｅｒｙ）パケットのＩＰヘッダ、ＴＣＰヘッダを参照して、通過可否を判断する。ロードバランサ（ＬＢ）２３は、Ｌ７レベルのプロトコルを認識し、仮想ＩＰアドレス（ＶＩＰ）に基づいて、実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定する。このとき、ロードバランサ（ＬＢ）２３は、負荷状況を見て、仮想ＩＰアドレス（ＶＩＰ）に対応する実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定しても良い。
【００７６】
（７）最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケット設定登録
コントローラ２０は、クエリ（Ｑｕｅｒｙ）パケットがファイアウォール（ＦＷ）２２で破棄されず、ロードバランサ（ＬＢ）２３で仮想ＩＰアドレス（ＶＩＰ）に対応する宛先であるサーバ２００宛に振り分けられた場合、クエリ（Ｑｕｅｒｙ）パケットをフロントエンドプロセッサ（ＦＥＰ）３０へ返信する。このとき、コントローラ２０は、フローテーブル３２１及びフローテーブル３２１に書き込むフロー（ルール及びアクション）を作成する。そして、コントローラ２０は、フローテーブル３２１及びフローテーブル３３１に対して、当該クエリ（Ｑｕｅｒｙ）パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。フロントエンドプロセッサ（ＦＥＰ）３０は、コントローラ２０からの制御命令に応じて、フローテーブル３２１及びフローテーブル３３１を更新する。
【００７７】
（８）３ＷＨＳ（対サーバ）
また、フロントエンドプロセッサ（ＦＥＰ）３０は、返信されたクエリ（Ｑｕｅｒｙ）パケットをスイッチ（内蔵ＳＷ）１０−２とスイッチ（エッジＳＷ）１０−３を介して、クエリ（Ｑｕｅｒｙ）パケットをサーバ２００へ送信する。このとき、フロントエンドプロセッサ（ＦＥＰ）３０とサーバ２００は、３ＷＨＳ（３−Ｗａｙ  Ｈａｎｄ  Ｓｈａｋｅ）の手順に従って、クエリ（Ｑｕｅｒｙ）パケットの送受信を３回行い、接続（コネクション）を確立する。
【００７８】
（９）データ転送
その後、フロントエンドプロセッサ（ＦＥＰ）３０は、同一ルールのクエリ（Ｑｕｅｒｙ）パケットを生成すると、スイッチ（内蔵ＳＷ）１０−２とスイッチ（エッジＳＷ）１０−３を介して、当該クエリ（Ｑｕｅｒｙ）パケットをサーバ２００へ転送する。
【００７９】
［実施例３：ＦＷ（Ｌ７）、ＬＢ（Ｌ４）の場合］
図６Ａ〜図６Ｃを参照して、ＦＷ（Ｌ７）、ＬＢ（Ｌ４）の場合について説明する。
ファイアウォール（ＦＷ）がＬ７（レイヤ７）レベルで稼動し、ロードバランサ（ＬＢ）がＬ４（レイヤ４）レベルで稼動する場合、当該ファイアウォール（ＦＷ）は、コントローラ上で稼動し、このロードバランサ（ＬＢ）は、スイッチ（コアＳＷ）１０−１上で稼動する。この場合、フロントエンドプロセッサ（ＦＥＰ）ではＴＣＰのセッションを終端しない。また、クライアント１００とサーバ２００間で接続（コネクション）が確立されるが、パケットはフロントエンドプロセッサ（ＦＥＰ）を経由する。
【００８０】
（１）１ｓｔパケット
スイッチ（コアＳＷ）１０−１は、ネットワークを介して、クライアント１００からパケットを受信した際、当該パケットが１ｓｔパケットであれば、スイッチ（内蔵ＳＷ）１０−２を介して、当該パケットをコントローラ２０に転送する。当該パケットは、宛先アドレス（ｄｓｔ）が仮想ＩＰアドレス（ＶＩＰ）であり、送信元アドレス（ｓｒｃ）がクライアント１００のＩＰアドレス（ｃｌ  ＩＰ）である。
【００８１】
（２）ルール作成
コントローラ２０は、スイッチ（コアＳＷ）１０−１からパケットを受信すると、ポリシーＤＢ２１１を参照し、仮想ＩＰアドレス（ＶＩＰ）を基に、必要な処理（Ｌ７レベルの処理の必要性等）を決定し、フローテーブル１１１に書き込むフロー（ルール及びアクション）を作成する。そして、コントローラ２０は、フローテーブル１１１に対して、当該パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ２０は、スイッチ（内蔵ＳＷ）１０−２を介してスイッチ（コアＳＷ）１０−１にパケットを返信する。
【００８２】
（３）ＬＢ（Ｌ４）
スイッチ（コアＳＷ）１０−１は、コントローラ２０からの制御命令に応じて、フローテーブル１１１を更新する。また、スイッチ（コアＳＷ）１０−１は、フローテーブル１１１の更新後に、コントローラ２０から返信されたパケット、又は当該パケットと同一ルールのパケットを受信すると、ロードバランサ（ＬＢ）１３にパケットを送る。ロードバランサ（ＬＢ）１３は、Ｌ４レベルのプロトコルを認識し、仮想ＩＰアドレス（ＶＩＰ）に基づいて、実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定し、パケットの経路をフロントエンドプロセッサ（ＦＥＰ）３０経由に切り替える。例えば、ＬＢ（Ｌ４）の場合、ユーザ設定により指定されたアルゴリズム（ラウンドロビン、最小応答時間、等）に基づき、分散対象のサーバ（複数あるうちの１つ）を決定し、クライアント−ＦＥＰ間、及びＦＥＰ−サーバ間のパス（フローエントリ）を設定する。このとき、ロードバランサ（ＬＢ）１３は、負荷状況を見て、仮想ＩＰアドレス（ＶＩＰ）に対応する実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定しても良い。
【００８３】
（４）３ＷＨＳ（対サーバ）
スイッチ（コアＳＷ）１０−１は、スイッチ（内蔵ＳＷ）１０−２、フロントエンドプロセッサ（ＦＥＰ）３０、及びスイッチ（エッジＳＷ）１０−３を介して、当該パケットをサーバ２００へ送信し、サーバ２００からの応答をクライアント１００へ送信する。また、スイッチ（コアＳＷ）１０−１は、スイッチ（内蔵ＳＷ）１０−２、フロントエンドプロセッサ（ＦＥＰ）３０、及びスイッチ（エッジＳＷ）１０−３を介して、同一ルールのパケットをサーバ２００へ転送する。このとき、スイッチ（コアＳＷ）１０−１は、３ＷＨＳ（３−Ｗａｙ  Ｈａｎｄ  Ｓｈａｋｅ）の手順に従ってパケットを中継し、１ｓｔパケットを含めて、クライアント１００とサーバ２００間のパケットの送受信が３回行い、クライアント１００とサーバ２００間の接続（コネクション）を確立する。
【００８４】
（５）データ転送
フロントエンドプロセッサ（ＦＥＰ）３０は、クライアント１００とサーバ２００間の接続（コネクション）を確立した場合、フロントエンドプロセッサ（ＦＥＰ）３０を経由するパケットを受信する。
【００８５】
（６）クエリ（Ｑｕｅｒｙ）パケット生成
フロントエンドプロセッサ（ＦＥＰ）３０は、受信したパケットからクエリ（Ｑｕｅｒｙ）パケットを生成する。このとき、フロントエンドプロセッサ（ＦＥＰ）３０は、生成されたクエリ（Ｑｕｅｒｙ）パケットが最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケットである場合、当該クエリ（Ｑｕｅｒｙ）パケットをコントローラ２０に送信する。
【００８６】
（７）ＦＷ（Ｌ７）
コントローラ２０は、クエリ（Ｑｕｅｒｙ）パケットを受信すると、当該クエリ（Ｑｕｅｒｙ）パケットをファイアウォール（ＦＷ）２２に送る。ファイアウォール（ＦＷ）２２は、Ｌ７レベルのプロトコルを認識し、当該クエリ（Ｑｕｅｒｙ）パケットのＩＰヘッダ、ＴＣＰヘッダを参照して、通過可否を判断する。
【００８７】
（８）最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケット設定登録
コントローラ２０は、当該クエリ（Ｑｕｅｒｙ）パケットがファイアウォール（ＦＷ）２２で破棄されなかった場合、当該クエリ（Ｑｕｅｒｙ）当該クエリ（Ｑｕｅｒｙ）パケットをフロントエンドプロセッサ（ＦＥＰ）３０へ返信する。このとき、コントローラ２０は、フローテーブル３２１及びフローテーブル３２１に書き込むフロー（ルール及びアクション）を作成する。そして、コントローラ２０は、フローテーブル３２１及びフローテーブル３３１に対して、当該クエリ（Ｑｕｅｒｙ）パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。フロントエンドプロセッサ（ＦＥＰ）３０は、コントローラ２０からの制御命令に応じて、フローテーブル３２１及びフローテーブル３３１を更新する。
【００８８】
（９）データ通信
また、フロントエンドプロセッサ（ＦＥＰ）３０は、コントローラ２０から返信されたクエリ（Ｑｕｅｒｙ）パケット及び同一ルールのクエリ（Ｑｕｅｒｙ）パケットを、スイッチ（内蔵ＳＷ）１０−２とスイッチ（エッジＳＷ）１０−３を介して、サーバ２００へ送信する。なお、サーバ２００からの応答は、フロントエンドプロセッサ（ＦＥＰ）３０を経由しなくても良い。
【００８９】
［実施例４：ＦＷ（Ｌ４）、ＬＢ（Ｌ７）の場合］
図７Ａ〜図７Ｃを参照して、ＦＷ（Ｌ４）、ＬＢ（Ｌ７）の場合について説明する。
ファイアウォール（ＦＷ）がＬ４（レイヤ４）レベルで稼動し、ロードバランサ（ＬＢ）がＬ７（レイヤ７）レベルで稼動する場合、当該ファイアウォール（ＦＷ）及びロードバランサ（ＬＢ）は、コントローラ上で稼動する。この場合、フロントエンドプロセッサ（ＦＥＰ）がＴＣＰのセッションを終端する。また、フロントエンドプロセッサ（ＦＥＰ）は、クライアント１００側とサーバ２００側の双方に接続（コネクション）を確立する。なお、実際には、ファイアウォール（ＦＷ）は、スイッチ（コアＳＷ）１０−１上で稼動しても良い。この場合の動作は、実施例１におけるファイアウォール（ＦＷ）の動作と同じである。
【００９０】
（１）１ｓｔパケット
スイッチ（コアＳＷ）１０−１は、ネットワークを介して、クライアント１００からパケットを受信した際、当該パケットが１ｓｔパケットであれば、スイッチ（内蔵ＳＷ）１０−２を介して、当該パケットをコントローラ２０に転送する。当該パケットは、宛先アドレス（ｄｓｔ）が仮想ＩＰアドレス（ＶＩＰ）であり、送信元アドレス（ｓｒｃ）がクライアント１００のＩＰアドレス（ｃｌ  ＩＰ）である。
【００９１】
（２）ＦＷ（Ｌ４）
コントローラ２０は、スイッチ（コアＳＷ）１０−１からパケットを受信すると、当該パケットをファイアウォール（ＦＷ）２２に送る。ファイアウォール（ＦＷ）２２は、Ｌ４レベルのプロトコルを認識し、当該パケットのＩＰヘッダ、ＴＣＰヘッダを参照して、通過可否を判断する。
【００９２】
（３）ルール作成
コントローラ２０は、当該パケットがファイアウォール（ＦＷ）２２で破棄されなかった場合、ポリシーＤＢ２１１を参照し、仮想ＩＰアドレス（ＶＩＰ）を基に、必要な処理（Ｌ７レベルの処理の必要性等）を決定し、フローテーブル１１１に書き込むフロー（ルール及びアクション）を作成する。コントローラ２０は、フローテーブル１１１に対して、当該パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ２０は、スイッチ（内蔵ＳＷ）１０−２を介してスイッチ（コアＳＷ）１０−１にパケットを返信する。また、コントローラ２０は、当該パケットがファイアウォール（ＦＷ）２２で破棄された場合、フローテーブル１１１に対して、当該パケットと同一ルールのパケットを破棄するフローを新たに登録する旨の制御命令を送信する。なお、フローテーブル１１１に対して、１ｓｔパケットと同一ルールのパケットを破棄するフローを登録した場合、スイッチ（コアＳＷ）１０−１は、以降の同一ルールのパケットを転送せずに全て廃棄する。すなわち、これ以降の処理を行わない。
【００９３】
（４）３ＷＨＳ（対ＦＥＰ）
スイッチ（コアＳＷ）１０−１は、コントローラ２０からの制御命令に応じて、フローテーブル１１１を更新する。その後、スイッチ（コアＳＷ）１０−１は、スイッチ（内蔵ＳＷ）１０−２及びコントローラ２０を介して、返信されたパケットをフロントエンドプロセッサ（ＦＥＰ）３０へ転送し、フロントエンドプロセッサ（ＦＥＰ）３０からの応答をクライアント１００に送信する。また、スイッチ（コアＳＷ）１０−１は、同一ルールのパケットを受信すると、同様に、スイッチ（内蔵ＳＷ）１０−２を介して、フロントエンドプロセッサ（ＦＥＰ）３０へ転送する。このとき、スイッチ（コアＳＷ）１０−１とフロントエンドプロセッサ（ＦＥＰ）３０は、３ＷＨＳ（３−Ｗａｙ  Ｈａｎｄ  Ｓｈａｋｅ）の手順に従って、パケットの送受信を３回行い、接続（コネクション）を確立する。
【００９４】
（５）データ転送
フロントエンドプロセッサ（ＦＥＰ）３０は、クライアント１００とフロントエンドプロセッサ（ＦＥＰ）３０間の接続（コネクション）が確立した後に、ＴＣＰのセッションを終端し、パケットを受信する。
【００９５】
（６）クエリ（Ｑｕｅｒｙ）パケット生成
フロントエンドプロセッサ（ＦＥＰ）３０は、受信したパケットからクエリ（Ｑｕｅｒｙ）パケットを生成し、クエリ（Ｑｕｅｒｙ）パケットをコントローラ２０に送信する。
【００９６】
（７）ＬＢ（Ｌ７）
コントローラ２０は、クエリ（Ｑｕｅｒｙ）パケットを受信すると、当該クエリ（Ｑｕｅｒｙ）パケットをロードバランサ（ＬＢ）２３に送る。ロードバランサ（ＬＢ）２３は、Ｌ７レベルのプロトコルを認識し、仮想ＩＰアドレス（ＶＩＰ）に基づいて、実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定する。このとき、ロードバランサ（ＬＢ）２３は、負荷状況を見て、仮想ＩＰアドレス（ＶＩＰ）に対応する実ＩＰアドレス（サーバ２００のＩＰアドレス）を決定しても良い。コントローラ２０は、クエリ（Ｑｕｅｒｙ）パケットがロードバランサ（ＬＢ）で仮想ＩＰアドレス（ＶＩＰ）に対応する宛先であるサーバ２００宛に振り分けられた場合、クエリ（Ｑｕｅｒｙ）クエリ（Ｑｕｅｒｙ）パケットをフロントエンドプロセッサ（ＦＥＰ）３０へ返信する。
【００９７】
（８）最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケット設定登録
このとき、コントローラ２０は、フローテーブル３２１及びフローテーブル３２１に書き込むフロー（ルール及びアクション）を作成する。そして、コントローラ２０は、フローテーブル３２１及びフローテーブル３３１に対して、当該クエリ（Ｑｕｅｒｙ）パケットに関して作成されたフローを新たに登録する旨の制御命令を送信する。フロントエンドプロセッサ（ＦＥＰ）３０は、コントローラ２０からの制御命令に応じて、フローテーブル３２１及びフローテーブル３３１を更新する。
【００９８】
（９）３ＷＨＳ（対サーバ）
また、フロントエンドプロセッサ（ＦＥＰ）３０は、返信されたクエリ（Ｑｕｅｒｙ）パケットをフローテーブルに登録した後、返信されたクエリ（Ｑｕｅｒｙ）パケットを、スイッチ（内蔵ＳＷ）１０−２とスイッチ（エッジＳＷ）１０−３を介して、サーバ２００へ送信する。このとき、フロントエンドプロセッサ（ＦＥＰ）３０とサーバ２００は、３ＷＨＳ（３−Ｗａｙ  Ｈａｎｄ  Ｓｈａｋｅ）の手順に従って、クエリ（Ｑｕｅｒｙ）パケットの送受信を３回行い、接続（コネクション）を確立する。
【００９９】
（１０）データ転送
その後、フロントエンドプロセッサ（ＦＥＰ）３０は、同一ルールのクエリ（Ｑｕｅｒｙ）パケットを生成すると、スイッチ（内蔵ＳＷ）１０−２とスイッチ（エッジＳＷ）１０−３を介して、当該クエリ（Ｑｕｅｒｙ）パケットをサーバ２００へ転送する。
【０１００】
［ＦＷ機能とＬＢ機能の組み合わせ］
図８を参照して、ファイアウォール（ＦＷ）機能とロードバランサ（ＬＢ）機能の組み合わせについて説明する。
【０１０１】
適用ポリシーにおいて、ファイアウォール（ＦＷ）、又はロードバランサ（ＬＢ）、あるいはその両方をＬ４（レイヤ４）レベルで稼動させる場合、スイッチ１０上で処理可能である。
【０１０２】
ロードバランサ（ＬＢ）をＬ７（レイヤ７）レベルで稼動させる場合、フロントエンドプロセッサ（ＦＥＰ）でＴＣＰのセッションを終端するようにする。クエリ（Ｑｕｅｒｙ）パケットを生成し、クエリ（Ｑｕｅｒｙ）パケットに対するロードバランシングを行うためである。
【０１０３】
上記以外で、ファイアウォール（ＦＷ）をＬ７（レイヤ７）レベルで稼動させる場合、パケットがフロントエンドプロセッサ（ＦＥＰ）を経由するようにする。クエリ（Ｑｕｅｒｙ）パケットを生成する必要があるためである。このとき、ロードバランサ（ＬＢ）をＬ４（レイヤ４）レベルで稼動させる場合、ロードバランサ（ＬＢ）機能はスイッチ１０上で処理可能である。
【０１０４】
なお、コントローラ２０は、スイッチ１０上での処理を肩代わりすることができる。
【０１０５】
＜データのイメージ＞
以下に、本発明で使用されるデータのイメージについて説明する。
【０１０６】
［ポリシーＤＢ：トポロジー情報のイメージ］
図９は、ポリシーＤＢ２１１に格納されるトポロジー情報のイメージである。
【０１０７】
トポロジー情報は、宛先アドレスと、プロトコルと、ポート番号と、各種アプリケーション情報を有する。
【０１０８】
宛先アドレスは、送信先（宛先）のＩＰアドレスである。プロトコルは、「ｈｔｔｐ」、「ｈｔｔｐｓ」、「ＦＴＰ」等のプロトコルの分類を示す情報である。ポート番号は、「８０」、「４４３」等のＩＰアドレスの下に設けられたサブ（補助）アドレスである。各種アプリケーション情報は、ファイアウォール（ＦＷ）機能やロードバランサ（ＬＢ）機能、及びこれらが稼動する階層（レイヤ）がＬ４（レイヤ４）レベルかＬ７（レイヤ７）レベルを示す情報である。
【０１０９】
コントローラ２０のオペレーティングシステム（ＯＳ）２１は、パケットを受信した際、ポリシーＤＢ２１１を参照して、適切な階層の、適切なファイアウォール（ＦＷ）機能やロードバランサ（ＬＢ）機能に通知する。
【０１１０】
［フローテーブルのイメージ］
図１０は、フローテーブル１１１、フローテーブル３２１、及びフローテーブル３３１等のフローテーブルのイメージである。
【０１１１】
フローテーブルは、処理フラグと、（１）送信元ＩＰと、（２）送信元Ｐｏｒｔと、（３）宛先ＩＰと、（４）宛先Ｐｏｒｔと、（５）ペイロードと、（６）アクションを有する。
【０１１２】
（１）送信元ＩＰ〜（５）ペイロードは、フローのルールとして使用される項目である。
【０１１３】
処理フラグは、フローのルールとして、（１）送信元ＩＰ〜（５）ペイロードのいずれを参照するかを示すフラグである。すなわち、処理フラグに設定された項目が、フローのルールとして採用される。
【０１１４】
１）送信元ＩＰ、（２）送信元Ｐｏｒｔ、（３）宛先ＩＰ、及び（４）宛先Ｐｏｒｔについては、説明を省略する。
【０１１５】
（５）ペイロードは、受信したデータのユーサーデータ部に該当する。例えば、（５）ペイロードには、「ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）」、「Ｃｏｏｋｉｅ情報」、「スクリプト」等の各情報の一部又は全部が格納される。
【０１１６】
（６）アクションは、処理フラグに設定された項目（処理フラグの条件）を全て満足した場合に、受信したパケットに対して行う処理を示す。例えば、（６）アクションには、「通過」、「廃棄」等の処理が設定される。
【０１１７】
スイッチ１０、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０は、処理フラグに設定された項目（処理フラグの条件）について、受信したパケットのヘッダ情報の該当フィールドを参照し、フローテーブルに登録された情報とマッチ（一致）すれば、当該処理フラグに対応する（６）アクションに設定された処理を実行する。
【０１１８】
最上位の処理として、スイッチ１０、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０は、（１）送信元ＩＰ〜（５）ペイロードの全てにマッチした場合、パケットの通過を許可する。
【０１１９】
最下位の処理として、スイッチ１０、コントローラ２０、及びフロントエンドプロセッサ（ＦＥＰ）３０は、（１）送信元ＩＰ〜（５）ペイロードのいずれにもマッチしなかった場合、無条件にパケットを破棄する。
【０１２０】
［クエリ（Ｑｕｅｒｙ）パケットのイメージ］
図１１は、クエリ（Ｑｕｅｒｙ）パケットのイメージである。
【０１２１】
実際の伝送イメージとして、通常のパケットは、ＩＰヘッダと、ＴＣＰヘッダと、ペイロードを有する。現在のネットワークシステムでは、長大なデータは、所定のデータ長で複数のパケットに分割されて送信される。ペイロードには、所定のデータ長に分割されたデータが格納されている。すなわち、分割されたデータの数だけパケットが存在する。これらのパケット群のペイロードに格納されたデータ全体で１メッセージとなる。また、これらのパケット群に属するパケットは、送信元や宛先が同じため、ＩＰヘッダやＴＣＰヘッダに格納されている情報は、全て同じとなる。
【０１２２】
クエリ（Ｑｕｅｒｙ）パケットは、ＩＰ情報と、ＴＣＰ情報と、ペイロードを有する。ＩＰ情報及びＴＣＰ情報には、通常のパケットのＩＰヘッダやＴＣＰヘッダから、ＩＰアドレスやポート番号等の必要な情報のみを抽出したものが格納される。また、ペイロードには、分割されたデータから復元される１メッセージのうち、必要な情報のみを抽出したものが格納される。例えば、Ｗｅｂアクセスにおいて、ＵＲＬは、情報の種類やサーバ名、ポート番号、フォルダ名、ファイル名、Ｃｏｏｋｉｅ情報等で構成されており、通常のパケットには、ＵＲＬが、所定のデータ長に分割されて格納される。ＵＲＬのうちＣｏｏｋｉｅ情報のみが必要である場合、クエリ（Ｑｕｅｒｙ）パケットのペイロードには、パケット群から一旦復元されたＵＲＬのうち、Ｃｏｏｋｉｅ情報のみが抽出されて格納される。
【０１２３】
＜ロードバランシングのイメージ＞
以下に、本発明で実施されるロードバランシングのイメージについて説明する。
【０１２４】
［ＦＥＰ−ＦＥＰ間のロードバランシング］
図１２は、ＦＥＰ−ＦＥＰ間のロードバランシングのイメージである。
【０１２５】
ここでは、３つのフロントエンドプロセッサ（ＦＥＰ）を示す。個々のフロントエンドプロセッサ（ＦＥＰ）は、ディスパッチャロードバランサ（ディスパッチャＬＢ）と、ディスパッチャと、ファイアウォール（ＦＷ）と、ロードバランサ（ＬＢ）を備える。但し、実際には、これらの例に限定されない。
【０１２６】
ディスパッチャロードバランサ（ディスパッチャＬＢ）は、各ＦＥＰのディスパッチャの負荷状況を見て、ロードバランシングを行い、適切なＦＥＰのディスパッチャに処理を割り当てる。ディスパッチャロードバランサ（ディスパッチャＬＢ）は、自ＦＥＰ又は他のＦＥＰのロードバランサ（ＬＢ）でも良い。なお、図１２では、フロントエンドプロセッサ（ＦＥＰ）がディスパッチャロードバランサ（ディスパッチャＬＢ）を備えているが、実際には、ディスパッチャロードバランサ（ディスパッチャＬＢ）は、図３に示すスイッチ１０のロードバランサ（ＬＢ）１３や、コントローラ２０のロードバランサ（ＬＢ）２３でも良い。
【０１２７】
ディスパッチャ、ファイアウォール（ＦＷ）、及びロードバランサ（ＬＢ）は、それぞれ図３に示すディスパッチャ３１、ファイアウォール（ＦＷ）３２、及びロードバランサ（ＬＢ）３３と同じである。
【０１２８】
ディスパッチャは、各ＦＥＰのファイアウォール（ＦＷ）やロードバランサ（ＬＢ）の負荷状況を見て、ロードバランシングを行い、適切なＦＥＰのファイアウォール（ＦＷ）やロードバランサ（ＬＢ）に処理を割り当てる。
【０１２９】
なお、ディスパッチャは、ファイアウォール（ＦＷ）やロードバランサ（ＬＢ）単位ではなく、各ＦＥＰのハードウェア単位で負荷状況を見て、比較的負荷の低いＦＥＰに、ファイアウォール（ＦＷ）やロードバランサ（ＬＢ）等の必要な機能モジュールを立ち上げる。
【０１３０】
［コントローラ−ＦＥＰ間のロードバランシング］
なお、上記の実施形態や各実施例において、コントローラ２０に最初のクエリ（１ｓｔ  Ｑｕｅｒｙ）パケットを送信したフロントエンドプロセッサ（ＦＥＰ）３０と、コントローラ２０から応答を受信するフロントエンドプロセッサ（ＦＥＰ）３０は、必ずしも同一物とは限らない。コントローラ２０のロードバランサ（ＬＢ）２３により、以降使用されるＦＥＰとして、送信元のＦＥＰとは異なるＦＥＰが選ばれる可能性もあるからである。
【０１３１】
＜追記＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【０１３２】
１０、１０−１、１０−２、１０−３…  スイッチ
２０…  コントローラ
３０…  フロントエンドプロセッサ（ＦＥＰ：Ｆｒｏｎｔ  Ｅｎｄ  Ｐｒｏｃｅｓｓｏｒ）
１１…  ポート
１２、２２、３２…  ファイアウォール（ＦＷ：ＦｉｒｅＷａｌｌ）
１３、２３、３３…  ロードバランサ（ＬＢ：Ｌｏａｄ  Ｂａｌａｎｃｅｒ（負荷分散装置））
２１…  オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）
３１…  ディスパッチャ（ｄｉｓｐａｔｃｈｅｒ）
１１１、３２１、３３１…  フローテーブル（Ｆｌｏｗ  Ｔａｂｌｅ）
２１１…  ポリシーＤＢ（ＤａｔａＢａｓｅ）
３１１…  適用ポリシー
３３２…  サーバ情報
３３３…  セッション維持情報
１００…  クライアント
２００…  サーバ
【図１】
0005382451.tif 000002
【図２】
0005382451.tif 000003
【図３】
0005382451.tif 000004
【図４Ａ】
0005382451.tif 000005
【図４Ｂ】
0005382451.tif 000006
【図４Ｃ】
0005382451.tif 000007
【図５Ａ】
0005382451.tif 000008
【図５Ｂ】
0005382451.tif 000009
【図５Ｃ】
0005382451.tif 000010
【図６Ａ】
0005382451.tif 000011
【図６Ｂ】
0005382451.tif 000012
【図６Ｃ】
0005382451.tif 000013
【図７Ａ】
0005382451.tif 000014
【図７Ｂ】
0005382451.tif 000015
【図７Ｃ】
0005382451.tif 000016
【図８】
0005382451.tif 000017
【図９】
0005382451.tif 000018
【図１０】
0005382451.tif 000019
【図１１】
0005382451.tif 000020
【図１２】
0005382451.tif 000021