(57)【特許請求の範囲】
【請求項１】
ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）ヘッダを処理する方法であって、
少なくとも１つの所定のヘッダフィールド識別子をハードウェアパケットプリプロセッサのメモリに設定するステップを有し、
前記ハードウェアパケットプリプロセッサは、ホストとサーバとの間のＨＴＴＰセッションにおいて受信されたＨＴＴＰパケットのヘッダフィールドにおいて少なくとも１つのヘッダフィールド識別子を検出し、前記所定のヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるヘッダフィールド識別子とをマッチングし、前記ＨＴＴＰパケットにおけるヘッダフィールド識別子に対応する情報を有するヘッダレポートブロックを生成し、前記ヘッダレポートブロックに基づき前記ＨＴＴＰパケットを処理するため、プロセッサモジュールに前記ヘッダレポートブロックを送信することが可能とされ、
前記所定のヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるヘッダフィールド識別子とのマッチングと、前記ヘッダレポートブロックの生成とにおいて、前記ハードウェアパケットプリプロセッサはさらに、
前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子と、前記ハードウェアパケットプリプロセッサのメモリに設定された所定のヘッダフィールド識別子とを比較し、
前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子が前記ハードウェアパケットプリプロセッサのメモリに設定された所定のヘッダフィールド識別子に一致したと判断することに応答して、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールドの開始位置を示すヘッダフィールド位置と、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールドの値のサイズ又は長さを示すヘッダフィールドサイズとを有するヘッダフィールドブロックを有するように、前記ヘッダレポートブロックを生成することが可能とされる方法。
【請求項２】
少なくとも１つの所定のサブヘッダフィールド識別子を前記ハードウェアパケットプリプロセッサのメモリに設定するステップをさらに有し、
前記ハードウェアパケットプリプロセッサはさらに、前記ＨＴＴＰパケットのヘッダフィールド内で少なくとも１つのサブヘッダフィールド識別子を検出し、前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子とをマッチングし、前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子に対応する情報をさらに有するように前記ヘッダレポートブロックを生成することが可能とされる、請求項１記載の方法。
【請求項３】
前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子とのマッチングと、前記ヘッダレポートブロックの生成とにおいて、前記ハードウェアパケットプリプロセッサはさらに、
前記所定のサブヘッダフィールド識別子と、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールド内のキャラクタとを比較し、
前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールド内のキャラクタとの間で一致が検出されたことに応答して、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド識別子に対応するサブヘッダフィールドの開始位置を示すサブヘッダフィールド位置と、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド識別子に対応するサブヘッダフィールドの値のサイズ又は長さを示すサブヘッダフィールドサイズとを有するサブヘッダフィールドブロックを有するように、前記ヘッダレポートブロックを生成することが可能とされる、請求項２記載の方法。
【請求項４】
前記プロセッサモジュールは、
前記ハードウェアパケットプリプロセッサから前記ヘッダレポートブロックを受信し、
前記ヘッダフィールドブロックにおけるヘッダフィールド位置とヘッダフィールドサイズとを利用することを含む、前記ヘッダレポートブロックを利用して、サービスポリシーを抽出し、
前記ＨＴＴＰヘッダにおけるヘッダフィールド値を取得し、
前記ヘッダフィールド値に基づき前記サービスポリシーを抽出し、
前記サービスポリシーを前記ＨＴＴＰパケットに適用する、請求項１記載の方法。
【請求項５】
前記プロセッサモジュールは、
前記ハードウェアパケットプリプロセッサから前記ヘッダレポートブロックを受信し、
前記サブヘッダフィールドブロックにおけるサブヘッダフィールド位置とサブヘッダフィールドサイズとを利用することを含む、前記ヘッダレポートブロックを利用して、サービスポリシーを抽出し、
前記ＨＴＴＰヘッダにおけるサブヘッダフィールド値を取得し、
前記サブヘッダフィールド値に基づき前記サービスポリシーを抽出し、
前記サービスポリシーを前記ＨＴＴＰパケットに適用する、請求項３記載の方法。
【請求項６】
前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する、請求項１記載の方法。
【請求項７】
前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する、請求項３記載の方法。
【請求項８】
前記プロセッサモジュールはさらに、
前記ＨＴＴＰパケットのヘッダフィールドを修正し、
前記修正したＨＴＴＰパケットを前記ホスト又は前記サーバに送信する、請求項５記載の方法。
【請求項９】
前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する、請求項８記載の方法。
【請求項１０】
前記ＨＰＰパケットのヘッダフィールドの修正と、前記修正したＨＴＴＰパケットの前記ホスト又は前記サーバへの送信とにおいて、前記プロセッサモジュールは、
前記サブヘッダフィールドを削除することによって、前記ＨＴＴＰパケットのヘッダフィールドを修正し、
前記修正したＨＴＴＰパケットを前記サーバに送信する、請求項９記載の方法。
【請求項１１】
前記ＨＰＰパケットのヘッダフィールドの修正と、前記修正したＨＴＴＰパケットの前記ホスト又は前記サーバへの送信とにおいて、前記プロセッサモジュールは、
第２のサブヘッダフィールドを挿入することによって、前記ＨＴＴＰパケットのヘッダフィールドを修正し、
前記修正したＨＴＴＰパケットを前記ホストに送信する、請求項９記載の方法。
【請求項１２】
少なくとも１つの所定のヘッダフィールド識別子により設定されたメモリを有するハードウェアパケットプリプロセッサを有するサービスゲートウェイであって、
前記ハードウェアパケットプリプロセッサは、ホストとサーバとの間のＨＴＴＰセッションにおいて受信されたＨＴＴＰパケットのヘッダフィールドにおいて少なくとも１つのヘッダフィールド識別子を検出し、前記所定のヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるヘッダフィールド識別子とをマッチングし、前記ＨＴＴＰパケットにおけるヘッダフィールド識別子に対応する情報を有するヘッダレポートブロックを生成し、前記ヘッダレポートブロックに基づき前記ＨＴＴＰパケットを処理するため、プロセッサモジュールに前記ヘッダレポートブロックを送信し、
前記所定のヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるヘッダフィールド識別子とのマッチングと、前記ヘッダレポートブロックの生成とにおいて、前記ハードウェアパケットプリプロセッサは、
前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子と、前記ハードウェアパケットプリプロセッサのメモリに設定された所定のヘッダフィールド識別子とを比較し、
前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子が前記ハードウェアパケットプリプロセッサのメモリに設定された所定のヘッダフィールド識別子に一致したと判断することに応答して、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールドの開始位置を示すヘッダフィールド位置と、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールドの値のサイズ又は長さを示すヘッダフィールドサイズとを有するヘッダフィールドブロックを有するように、前記ヘッダレポートブロックを生成するサービスゲートウェイ。
【請求項１３】
前記ハードウェアパケットプリプロセッサのメモリはさらに、少なくとも１つの所定のサブヘッダフィールド識別子により設定され、
前記ハードウェアパケットプリプロセッサはさらに、前記ＨＴＴＰパケットのヘッダフィールド内で少なくとも１つのサブヘッダフィールド識別子を検出し、前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子とをマッチングし、前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子に対応する情報をさらに有するように前記ヘッダレポートブロックを生成する、請求項１２記載のサービスゲートウェイ。
【請求項１４】
前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子とのマッチングと、前記ヘッダレポートブロックの生成とにおいて、前記ハードウェアパケットプリプロセッサはさらに、
前記所定のサブヘッダフィールド識別子と、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールド内のキャラクタとを比較し、
前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールド内のキャラクタとの間で一致が検出されたことに応答して、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド識別子に対応するサブヘッダフィールドの開始位置を示すサブヘッダフィールド位置と、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド識別子に対応するサブヘッダフィールドの値のサイズ又は長さを示すサブヘッダフィールドサイズとを有するサブヘッダフィールドブロックを有するように、前記ヘッダレポートブロックを生成する、請求項１３記載のサービスゲートウェイ。
【請求項１５】
前記プロセッサモジュールと、
コンピュータ可読プログラムコードを有するコンピュータ可読媒体と、
をさらに有し、
前記コンピュータ可読プログラムコードは、前記プロセッサモジュールにより実行されると、当該サービスゲートウェイに、
前記ハードウェアパケットプリプロセッサから前記ヘッダレポートブロックを受信させ、
前記ヘッダフィールドブロックにおけるヘッダフィールド位置とヘッダフィールドサイズとを利用することを含む、前記ヘッダレポートブロックを利用して、サービスポリシーを抽出させ、
前記ＨＴＴＰヘッダにおけるヘッダフィールド値を取得させ、
前記ヘッダフィールド値に基づき前記サービスポリシーを抽出させ、
前記サービスポリシーを前記ＨＴＴＰパケットに適用させる、請求項１２記載のサービスゲートウェイ。
【請求項１６】
前記プロセッサモジュールと、
コンピュータ可読プログラムコードを有するコンピュータ可読媒体と、
をさらに有し、
前記コンピュータ可読プログラムコードは、前記プロセッサモジュールにより実行されると、当該サービスゲートウェイに、
前記ハードウェアパケットプリプロセッサから前記ヘッダレポートブロックを受信させ、
前記サブヘッダフィールドブロックにおけるサブヘッダフィールド位置とサブヘッダフィールドサイズとを利用することを含む、前記ヘッダレポートブロックを利用して、サービスポリシーを抽出させ、
前記ＨＴＴＰヘッダにおけるサブヘッダフィールド値を取得させ、
前記サブヘッダフィールド値に基づき前記サービスポリシーを抽出させ、
前記サービスポリシーを前記ＨＴＴＰパケットに適用させる、請求項１４記載のサービスゲートウェイ。
【請求項１７】
前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する、請求項１２記載のサービスゲートウェイ。
【請求項１８】
前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する、請求項１４記載のサービスゲートウェイ。
【請求項１９】
前記コンピュータ可読プログラムコードは、前記プロセッサモジュールにより実行されると、当該サービスゲートウェイに、
前記ＨＴＴＰパケットのヘッダフィールドを修正させ、
前記修正したＨＴＴＰパケットを前記ホスト又は前記サーバに送信させる、請求項１６記載のサービスゲートウェイ。
【請求項２０】
前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する、請求項１９記載のサービスゲートウェイ。
【請求項２１】
前記ＨＰＰパケットのヘッダフィールドの修正と、前記修正したＨＴＴＰパケットの前記ホスト又は前記サーバへの送信とにおいて、前記サービスゲートウェイはさらに、
前記サブヘッダフィールドを削除することによって、前記ＨＴＴＰパケットのヘッダフィールドを修正し、
前記修正したＨＴＴＰパケットを前記サーバに送信する、請求項２０記載のサービスゲートウェイ。
【請求項２２】
前記ＨＰＰパケットのヘッダフィールドの修正と、前記修正したＨＴＴＰパケットの前記ホスト又は前記サーバへの送信とにおいて、前記サービスゲートウェイは、
第２のサブヘッダフィールドを挿入することによって、前記ＨＴＴＰパケットのヘッダフィールドを修正し、
前記修正したＨＴＴＰパケットを前記ホストに送信する、請求項２０記載のサービスゲートウェイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ通信に関し、より詳細にはサービスゲートウェイに関する。
【背景技術】
【０００２】
サーバロードバランサ又はアプリケーション配信コントローラは、典型的には、接続要求パケットのＩＰ、ＴＣＰ、ネットワーク、トランスポート又はアプリケーションレイヤアドレスなどの１以上のネットワークプロトコルアドレスに基づき、複数のサーバの間のロードをバランスさせる。それらは、ロードバランシングを最適化するための手がかりのためペイロードコンテンツを調べるために、パケットペイロードへのディープパケットインスペクション（ｄｅｅｐ  ｐａｃｋｅｔ  ｉｎｓｐｅｃｔｉｏｎ）を実行することもある。ディープパケットインスペクション技術に基づく最適化は、ペイロードコンテンツにおけるＵＲＬ、ドメインネーム、アプリケーションプロトコルタイプ及びユーザ情報に基づくロードバランシングを含む。これらのシナリオでは、サーバロードバランサは、ホストから発信されるリクエストパケットを変更しない。
【０００３】
ウェブトラフィックが増加するに従って、サーバロードバランサもまたサーバ数を増加させる。ディープパケットインスペクション技術はまた、特にＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）タイプのウェブセッションについて精緻化される。サーバロードバランサは、同一のホストがサービスを再要求するとき、ロードバランサが特別なＣｏｏｋｉｅを検出し、適切なサーバを選択できるように、サーバロードバランサの嗜好を格納するためのロードバランサに固有のＣｏｏｋｉｅを挿入することを選んでもよい。この特別なＣｏｏｋｉｅは、サーバがホストからＨＴＴＰリクエストに応答する際に挿入され、ホストがサーバロードバランサを介し以降のＨＴＴＰリクエストをサーバに送信する際に検出される。以降のＨＴＴＰリクエストが受信されると、サーバロードバランサは、ＨＴＴＰリクエストをサーバに送信する前に特別なＣｏｏｋｉｅを削除する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
Ｃｏｏｋｉｅの挿入、検出及び削除の処理は、計算量を消費するものである。計算要求の多くは、特別なＣｏｏｋｉｅが挿入、検出又は削除されるべき各種ＨＴＴＰヘッダフィールド及びサブヘッダフィールドの検出におけるものである。従って、特別なＣｏｏｋｉｅを処理するための計算要求を軽減するため、各種ヘッダフィールド及びサブヘッダフィールドの特定処理が特別なハードウェア処理モジュールにより支援される必要がある。
【課題を解決するための手段】
【０００５】
本発明の一実施例によると、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）ヘッダを処理する方法は、少なくとも１つの所定のヘッダフィールド識別子をハードウェアパケットプリプロセッサのメモリに設定するステップを有し、前記ハードウェアパケットプリプロセッサは、ホストとサーバとの間のＨＴＴＰセッションにおいて受信されたＨＴＴＰパケットのヘッダフィールドにおいて少なくとも１つのヘッダフィールド識別子を検出し、前記所定のヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるヘッダフィールド識別子とをマッチングし、前記ＨＴＴＰパケットにおけるヘッダフィールド識別子に対応する情報を有するヘッダレポートブロックを生成し、前記ヘッダレポートブロックに基づき前記ＨＴＴＰパケットを処理するため、プロセッサモジュールに前記ヘッダレポートブロックを送信することが可能とされる。
【０００６】
本発明の一態様では、前記所定のヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるヘッダフィールド識別子とのマッチングと、前記ヘッダレポートブロックの生成とにおいて、前記ハードウェアパケットプリプロセッサはさらに、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子と、前記ハードウェアパケットプリプロセッサのメモリに設定された所定のヘッダフィールド識別子とを比較し、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子が前記ハードウェアパケットプリプロセッサのメモリに設定された所定のヘッダフィールド識別子に一致したと判断することに応答して、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールドの開始位置を示すヘッダフィールド位置と、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールドの値のサイズ又は長さを示すヘッダフィールドサイズとを有するヘッダフィールドブロックを有するように、前記ヘッダブロックレポートを生成することが可能とされる。
【０００７】
本発明の一態様では、本方法は、少なくとも１つの所定のサブヘッダフィールド識別子を前記ハードウェアパケットプリプロセッサのメモリに設定するステップをさらに有し、前記ハードウェアパケットプリプロセッサはさらに、前記ＨＴＴＰパケットのヘッダフィールド内で少なくとも１つのサブヘッダフィールド識別子を検出し、前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子とをマッチングし、前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子に対応する情報をさらに有するように前記ヘッダレポートブロックを生成することが可能とされる。
【０００８】
本発明の一態様では、前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰパケットにおけるサブヘッダフィールド識別子とのマッチングと、前記ヘッダレポートブロックの生成とにおいて、前記ハードウェアパケットプリプロセッサはさらに、前記所定のサブヘッダフィールド識別子と、前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールド内のキャラクタとを比較し、前記所定のサブヘッダフィールド識別子と前記ＨＴＴＰヘッダにおけるヘッダフィールド識別子に対応するヘッダフィールド内のキャラクタとの間で一致が検出されたことに応答して、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド識別子に対応するサブヘッダフィールドの開始位置を示すサブヘッダフィールド位置と、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド識別子に対応するサブヘッダフィールドの値のサイズ又は長さを示すサブヘッダフィールドサイズとを有するサブヘッダフィールドブロックを有するように、前記ヘッダブロックレポートを生成することが可能とされる。
【０００９】
本発明の一態様では、前記プロセッサモジュールは、前記ハードウェアパケットプリプロセッサから前記ヘッダレポートブロックを受信し、前記ヘッダフィールドブロックにおけるヘッダフィールド位置とヘッダフィールドサイズとを利用することを含む、前記ヘッダレポートブロックを利用して、サービスポリシーを抽出し、前記ＨＴＴＰヘッダにおけるヘッダフィールド値を取得し、前記ヘッダフィールド値に基づき前記サービスポリシーを抽出し、前記サービスポリシーを前記ＨＴＴＰパケットに適用する。
【００１０】
本発明の一態様では、前記プロセッサモジュールは、前記ハードウェアパケットプリプロセッサから前記ヘッダレポートブロックを受信し、前記サブヘッダフィールドブロックにおけるサブヘッダフィールド位置とサブヘッダフィールドサイズとを利用することを含む、前記ヘッダレポートブロックを利用して、サービスポリシーを抽出し、前記ＨＴＴＰヘッダにおけるサブヘッダフィールド値を取得し、前記サブヘッダフィールド値に基づき前記サービスポリシーを抽出し、前記サービスポリシーを前記ＨＴＴＰパケットに適用する。
【００１１】
本発明の一態様では、前記ヘッダフィールドは、ＨＴＴＰ  ｃｏｏｋｉｅヘッダフィールドを有する。
【００１２】
本発明の一態様では、前記プロセッサモジュールはさらに、前記ＨＴＴＰパケットのヘッダフィールドを修正し、前記修正したＨＴＴＰパケットを前記ホスト又は前記サーバに送信する。
【００１３】
本発明の一態様では、前記ＨＰＰパケットのヘッダフィールドの修正と、前記修正したＨＴＴＰパケットの前記ホスト又は前記サーバへの送信とにおいて、前記プロセッサモジュールは、前記サブヘッダフィールドを削除することによって、前記ＨＴＴＰパケットのヘッダフィールドを修正し、前記修正したＨＴＴＰパケットを前記サーバに送信する。
【００１４】
本発明の一態様では、前記ＨＰＰパケットのヘッダフィールドの修正と、前記修正したＨＴＴＰパケットの前記ホスト又は前記サーバへの送信とにおいて、前記プロセッサモジュールは、第２のサブヘッダフィールドを挿入することによって、前記ＨＴＴＰパケットのヘッダフィールドを修正し、前記修正したＨＴＴＰパケットを前記ホストに送信する。
【００１５】
上記概略された方法に対応するサービスゲートウェイがまた、開示及び請求される。
【発明の効果】
【００１６】
各種ヘッダフィールド及びサブヘッダフィールドの特定処理が特別なハードウェア処理モジュールによる支援により、特別なＣｏｏｋｉｅを処理するための計算要求を軽減することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明によるパケットプリプロセッサを有するサービスゲートウェイを利用したＨＴＴＰセッション処理方法の実施例を示す。
【図２】図２は、本発明によるＨＴＴＰリクエストパケットのサービスゲートウェイ処理の実施例を示す。
【図２ａ】図２ａは、ＨＴＴＰパケットを処理するパケットプリプロセッサの実施例を示す。
【図２ｂ】図２ｂは、ヘッダレポートブロックを処理するプロセッサモジュールの実施例を示す。
【図３】図３は、本発明によるヘッダレポートブロックの実施例を示す。
【図４】図４は、本発明によるＨＴＴＰリクエスト又はレスポンスパケットを特定するパケットプリプロセッサの実施例を示す。
【図５】図５は、本発明によるＨＴＴＰヘッダフィールドを特定するパケットプリプロセッサの実施例を示す。
【図６】図６は、本発明によるＨＴＴＰサブヘッダフィールドを特定するパケットプリプロセッサの実施例を示す。
【図７】図７は、本発明によるＨＴＴＰレスポンスパケットを処理するサービスゲートウェイの実施例を示す。
【発明を実施するための形態】
【００１８】
以下の説明は、当業者が本発明を作成及び利用することを可能にするため提供され、特許出願及びその要件に関して与えられるものである。実施例に対する様々な改良が当業者に容易に明らかになり、ここでの汎用的な原理は他の実施例に適用されてもよい。従って、本発明は、図示された実施例に限定されることを意図しておらず、ここに開示される原理及び特徴に整合する最も広い範囲に一致されるべきである。
【００１９】
本発明は、完全にハードウェアの実施例、完全にソフトウェアの実施例又はハードウェア要素とソフトウェア要素との双方を含む実施例の形態をとることが可能である。好適な実施例では、本発明は、限定することなく、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むソフトウェアにより実現される。
【００２０】
さらに、本発明は、コンピュータ又は何れかの命令実行システムによる又はそれに関する利用のためのプログラムコードを提供するコンピュータ利用可能又はコンピュータ可読媒体からアクセス可能なコンピュータプログラムプロダクトの形態をとりうる。説明のため、コンピュータ利用可能又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスによる又はそれに関する利用のためのプログラムを内蔵、格納、通信、伝搬又は伝送可能な何れかの装置とすることができる。
【００２１】
当該媒体は、電子、磁気、光、電磁気、赤外線若しくは半導体システム（若しくは装置、デバイス）又は伝搬媒体とすることが可能である。コンピュータ可読媒体の具体例として、半導体若しくはソリッドステートメモリ、磁気テープ、着脱可能なコンピュータディスケット、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、リジッド磁気ディスク及び光ディスクがあげられる。光ディスクの現在の具体例として、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ／Ｗ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ／Ｗｒｉｔｅ）及びＤＶＤがあげられる。
【００２２】
プログラムコードを格納及び／又は実行するのに適したデータ処理システムは、システムバスを介しメモリ要素に直接的又は間接的に接続される少なくとも１つのプロセッサを有する。メモリ要素は、プログラムコードの実際の実行中に利用されるローカルメモリ、バルクストレージ、及び実行中にバルクストレージからコードが抽出される必要のある回数を減少させるために少なくともいくつかのプログラムコードの一時的なストレージを提供するキャッシュメモリを含むことが可能である。
【００２３】
入出力又はＩ／Ｏデバイス（限定することなく、キーボード、ディスプレイ、ポイントデバイスなどを含む）が、直接的に又は仲介するＩ／Ｏコントローラを介しシステムに接続可能である。
【００２４】
ネットワークアダプタがまたシステムに接続され、データ処理システムが仲介するプライベート又はパブリックネットワークを介し他のデータ処理システム又はリモートプリンタ若しくはストレージデバイスに接続されることを可能にするようにしてもよい。モデム、ケーブルモデム及びイーサネット（登録商標）カードは、現在利用可能なタイプのネットワークアダプタの数例にしかすぎない。
【００２５】
図面のフローチャート及びブロック図は、本発明の各種実施例によるシステム、方法及びコンピュータプログラムプロダクトの可能な実現形態の構成、機能及び処理を示す。これについて、フローチャート又はブロック図の各ブロックは、指定されたローカルファンクションを実現するための１以上の実行可能な命令を有するコードのモジュール、セグメント又は部分を表すものであってもよい。また、いくつかの他の実現形態では、ブロックに示される機能は図面に示される順序と異なって実行されてもよいことに留意すべきである。例えば、連続的に示される２つのブロックは、実際は実質的に同時に実行されてもよいし、又はブロックは関係する機能に応じて逆順で実行されてもよいことがある。ブロック図及び／又はフローチャート図の各ブロック及び当該ブロックの組み合わせは、指定された機能又はアクションを実行する特定用途ハードウェアベースシステム、又は特定用途ハードウェア及びコンピュータ命令の組み合わせにより実現可能であることに留意されたい。
【００２６】
ここで用いられる用語は、特定の実施例のみを説明するためのものであり、本発明を限定することを意図するものでない。ここで用いられる“ある”及び“その”という単数形は、文脈が明らかに示していない場合、複数形もまた含むことが意図される。本明細書において用いられるとき、“有する”という用語は記載された特徴、整数、ステップ、処理、要素及び／又はコンポーネントの存在を示すものであるが、１以上の他の特徴、整数、ステップ、処理、要素、コンポーネント及び／又はこれらのグループの存在又は追加を排除するものでないことがさらに理解されるであろう。
【００２７】
図１に示される実施例では、サービスゲートウェイ１１０は、ホスト１００とサーバ２１０との間のＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）セッション３００を処理する。ＨＴＴＰセッション３００は、データネットワーク１５３を介し配信される。
【００２８】
一実施例では、データネットワーク１５３は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワーク、企業データネットワーク、地域企業データネットワーク、インターネットサービスプロバイダネットワーク、レジデンシャルデータネットワーク、イーサネット（登録商標）などの有線ネットワーク、ＷｉＦｉネットワークなどの無線ネットワーク、又はセルラネットワークを含む。一実施例では、データネットワーク１５３は、データセンタにあるか、又はネットワーク若しくはアプリケーションネットワーククラウドに接続する。
【００２９】
ホスト１００は、ネットワークアクセス機能を有する計算装置である。一実施例では、ホスト１００は、ワークステーション、デスクトップパーソナルコンピュータ、ラップトップパーソナルコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄａｔａ  Ａｓｓｉｓｔａｎｔ）、タブレットＰＣ、スマートフォン、携帯電話、セットトップボックス、インターネットメディアビューワ、インターネットメディアプレーヤー、スマートセンサ、スマート医療装置、ネットトップボックス、ネットワーク対応テレビ装置、ネットワーク対応ＤＶＲ、ネットワーク対応ブルーレイプレーヤー又はメディアセンタである。
【００３０】
サービスゲートウェイ１１０は、任意的にプロセッサモジュール１１３、パケットプリプロセッサ１１２、ネットワークインタフェースモジュール１１１及びコンピュータ可読媒体１１４に接続される。コンピュータ可読媒体１１４は、プロセッサモジュール１１３により実行されると、ここに開示される本発明の各種実施例を実現するコンピュータ可読プログラムコードを格納する。いくつかの実施例では、サービスゲートウェイ１１０は、サーバロードバランサ、アプリケーション配信コントローラ、サービス配信プラットフォーム、トラフィックマネージャ、セキュリティゲートウェイ、ファイアウォールシステムのコンポーネント、バーチャルプライベートネットワーク（ＶＰＮ）のコンポーネント、ビデオサーバのロードバランサ、１以上のサーバにロードを配分するゲートウェイ、ＨＴＴＰサービスセッション３００のＨＴＴＰレイヤを処理するウェブ又はＨＴＴＰサーバ、又はネットワークアドレス変換（ＮＡＴ）を実行するゲートウェイとして実現される。
【００３１】
プロセッサモジュール１１３は、典型的には、１以上の汎用プロセッサ又はマイクロプロセッサを有する。一実施例では、プロセッサモジュール１１３は、マルチコアマイクロプロセッサを有する。一実施例では、プロセッサモジュール１１３は、コンピュータ可読媒体１１４に格納されるコンピュータ可読プログラムコードの実行中に使用される変数を格納するメモリユニットを有する。
【００３２】
ネットワークインタフェースモジュール１１１は、データネットワーク１５３に接続する。ネットワークインタフェースモジュール１１１は、ホスト１００からデータパケットを受信し、ホスト１００にデータパケットを送信し、サーバ２１０からデータパケットを受信し、サーバ２１０にデータパケットを送信する。
【００３３】
パケットプリプロセッサ１１２は、ネットワークインタフェースモジュール１１１により受信されたデータパケットを処理するためのシンプルであるが高速な処理機能を有するハードウェアベースパケット処理モジュールである。一実施例では、パケットプリプロセッサ１１２は、パケットプリプロセッサ１１２の処理要求を実行可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）モジュール、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、マイクロコントローラ又は回路を有する。
【００３４】
サーバ２１０は、任意的にプロセッサ２１３とコンピュータ可読媒体２１４とに接続される。コンピュータ可読媒体２１４は、プロセッサ２１３により実行されると、ここに開示される本発明の各種実施例を実現するコンピュータ可読プログラムコードを格納する。いくつかの実施例では、コンピュータ可読プログラムコードは、サーバ２１０をウェブサーバ、ファイルサーバ、ビデオサーバ、データベースサーバ、アプリケーションサーバ、ボイスシステム、カンファレンシングサーバ、メディアゲートウェイ、メディアセンタ、ＨＴＴＰプロトコルを用いてホスト１００にネットワーク若しくはアプリケーションサービスを提供するアプリサーバ又はネットワークサーバとして実現する。
【００３５】
典型的には、ホスト１００は、データネットワーク１５３及びサービスゲートウェイ１１０を介しサーバ２１０にＨＴＴＰリクエストパケット４００を送信することによって、ＨＴＴＰセッション３００を確立する。ＨＴＴＰリクエストパケット４００を処理すると、サーバ２１０は、データネットワーク１５３及びサービスゲートウェイ１１０を介しホスト１００にＨＴＴＰレスポンスパケット８００を送り返す。ＨＴＴＰリクエストパケット４００はＨＴＴＰリクエストヘッダ４０３を有し、ＨＴＴＰレスポンスパケット８００はＨＴＴＰレスポンスヘッダ８０３を有する。
【００３６】
サービスゲートウェイ１１０は、ネットワークインタフェースモジュール１１１を介しホスト１００からＨＴＴＰリクエストパケット４００を受信する。ネットワークインタフェースモジュール１１１は、ＨＴＴＰリクエストパケット４００をパケットプリプロセッサ１１２に送信する。パケットプリプロセッサ１１２は、ＨＴＴＰリクエストパケット４００を調べ、ヘッダレポートブロック４１０を生成し、ＨＴＴＰリクエストパケット４００及びヘッダレポートブロック４１０をプロセッサモジュール１１３に送信する。プロセッサモジュール１１３は、ＨＴＴＰリクエストパケット４００及びヘッダレポートブロック４１０を受信する。プロセッサモジュール１１３は、ＨＴＴＰリクエストパケット４００、ヘッダレポートブロック４１０及びサービスポリシー３１０に基づきサーバ２１０を選択する。プロセッサモジュール１１３は、ＨＴＴＰリクエストパケット４００をサーバ２１０に送信する。一実施例では、プロセッサモジュール１１３は、修正されたＨＴＴＰリクエストパケット４００をサーバ２１０に送信する前に、ヘッダレポートブロック４１０及びサービスポリシー３１０に基づきＨＴＴＰリクエストパケット４００を修正する。
【００３７】
一実施例では、サービスゲートウェイ１１０は、サーバ２１０からＨＴＴＰレスポンスパケット８００を受信する。サービスゲートウェイ１１０は、ネットワークインタフェースモジュール１１１を介しＨＴＴＰレスポンスパケット８００を受信する。ネットワークインタフェースモジュール１１１は、ＨＴＴＰレスポンスパケット８００をパケットプリプロセッサ１１２に送信する。パケットプリプロセッサ１１２は、ＨＴＴＰレスポンスパケット８００を調べ、ヘッダレポートブロック８１０を生成し、ＨＴＴＰレスポンスパケット８００及びヘッダレポートブロック８１０をプロセッサモジュール１１３に送信する。プロセッサモジュール１１３は、ＨＴＴＰレスポンスパケット８００及びヘッダレポートブロック８１０を受信する。プロセッサモジュール１１３は、ヘッダレポートブロック８１０及びサービスポリシー３１０に基づきＨＴＴＰレスポンスパケット８００を処理する。プロセッサモジュール１１３は、ＨＴＴＰレスポンスパケット８００をホスト１００に送信する。一実施例では、プロセッサモジュール１１３は、修正されたＨＴＴＰレスポンスパケット８００をホスト１００に送信する前に、ヘッダレポートブロック８１０及びサービスポリシー３１０に基づきＨＴＴＰレスポンスパケット８００を修正する。
【００３８】
図２は、ＨＴＴＰリクエストパケット４００を処理するサービスゲートウェイ１１０の実施例を示す。図１に示されるように、サービスゲートウェイ１１０のネットワークモジュール１１１は、ＨＴＴＰリクエストパケット４００を受信する。ネットワークモジュール１１１は、パケット４００をパケットプリプロセッサ１１２に送信する。パケットプリプロセッサ１１２は、ヘッダレポートブロック４１０を生成するため、パケット４００を調べる。
【００３９】
図３は、ヘッダレポートブロック４１０の実施例を示す。一実施例では、ヘッダレポートブロック４１０は、サマリブロック４２０と、任意的にヘッダフィールドブロック４３０とを有する。一実施例では、サマリブロック４２０は、パケット４００が有効なＨＴＴＰヘッダを含むか示すヘッダインジケータ４２２を有する。一実施例では、サマリブロック４２０は、パケット４００におけるＨＴＴＰコンテンツの開始位置を示すパケット位置４２４を有する。一実施例では、パケット位置４２４は、パケット４００におけるＨＴＴＰヘッダを除くＨＴＴＰコンテンツを示す。一実施例では、サマリブロック４２０は、ヘッダフィールドブロック４３０がヘッダレポートブロック４１０に含まれているか示すヘッダフィールドインジケータ４２５を有する。一実施例では、ヘッダレポートブロック４１０はまたサブヘッダフィールドブロック４８０を有し、ヘッダフィールドインジケータ４２５はまた、サブヘッダフィールドブロック４８０がヘッダレポートブロック４１０に含まれているか示す。
【００４０】
一実施例では、ヘッダフィールドブロック４３０は、ＨＴＴＰヘッダにおいてヘッダフィールドを特定するヘッダフィールド識別子４３２を有する。一実施例では、ヘッダフィールドブロック４３０は、パケット４４０におけるヘッダフィールド識別子４３２に対応するヘッダフィールドの開始位置を示すヘッダフィールド位置４３４を有する。一実施例では、ヘッダフィールドブロック４３０は、ヘッダフィールド識別子４３２に対応するヘッダフィールドの値のサイズ又は長さを示すヘッダフィールドサイズ４３５を有する。
【００４１】
一実施例では、サブヘッダフィールドブロック４８０は、ヘッダフィールド識別子４３２に対応するヘッダフィールド内にサブヘッダフィールドを特定するサブヘッダフィールド識別子４８２を有する。一実施例では、サブヘッダフィールドブロック４８０は、パケット４００におけるサブヘッダフィールド識別子４８２に対応するヘッダフィールドの開始位置を示すサブヘッダフィールド位置４８４を有する。一実施例では、サブヘッダフィールドブロック４８０は、サブヘッダフィールド識別子４８２に対応するサブヘッダフィールドの値のサイズ又は長さを示すサブヘッダフィールドサイズ４８５を有する。
【００４２】
図２ａは、ＨＴＴＰパケットを処理するパケットプリプロセッサの実施例を示す。図２ａに示されるように、パケットプリプロセッサ１１２は、図４を参照して以下でさらに説明されるように、パケット４００が有効なＨＴＴＰヘッダを有するか判断するため、パケット４００を調べる（１２０２）。
【００４３】
パケット４００が有効なＨＴＴＰヘッダを有すると判断すると、パケットプリプロセッサ１１２は、パケット４００が所定のヘッダフィールド識別子４０５に一致するヘッダフィールドを有するか判断するため、パケット４００を調べる（１２０５）。一実施例では、ヘッダフィールド識別子４０５は、パケット４００の処理前にパケットプリプロセッサ１１２に格納される。一実施例では、ヘッダフィールド識別子４０５は、パケット４００の処理前にパケットプリプロセッサ１１２の内部メモリにプロセッサモジュール１１３により設定される。パケット４００におけるヘッダフィールド識別子４０５との一致が成功すると、パケットプリプロセッサ１１２は、ヘッダフィールドブロック４３０を生成するのに利用されるパケット４００のヘッダフィールド識別子４０５に関連する情報を抽出する（１２１０）。その後、ヘッダフィールドブロック４３０のヘッダフィールド識別子４３２がヘッダフィールド識別子４０５に関連付けされている場合、ヘッダフィールドブロック４３０が生成される（１２１２）。パケットプリプロセッサ１１２は、ヘッダフィールド識別子４０５がパケット４００に含まれていることを示すため、ヘッダレポートブロック４００のサマリブロック４２０のヘッダフィールドインジケータ４２５を修正する（１２１６）。
【００４４】
一実施例では、パケットプリプロセッサ１１２は、ヘッダフィールド識別子４０５がパケット４００に含まれていないと判断する。パケットプリプロセッサ１１２は、ヘッダフィールド識別子４０５がパケット４００に含まれていないことを示すため、ヘッダフィールドインジケータ４２５を修正する。これに対応して、パケットプリプロセッサ１１２は、ヘッダフィールドブロック４３０を生成しない。パケット４００におけるヘッダフィールド識別子１１２のマッチング処理は、図５を参照して以下でさらに説明される。ヘッダフィールド識別子４０５の具体例は、“ホスト”、“サーバ”、“コンテンツ”、“Ｃｏｏｋｉｅ”、“Ｃｏｏｋｉｅ２”、“Ｓｅｔ−Ｃｏｏｋｉｅ”及び“Ｓｅｔ−Ｃｏｏｋｉｅ２”を含む。
【００４５】
一実施例では、パケットプリプロセッサ１１２はさらに、所定のサブヘッダフィールド識別子４０７に一致するサブヘッダフィールドについてパケット４００を調べる。一実施例では、サブヘッダフィールド識別子４０７は、パケット４００の処理前にパケットプリプロセッサ１１２に格納される。一実施例では、サブヘッダフィールド識別子４０７は、プロセッサモジュール１１３によってパケット４００の処理前にパケットプリプロセッサ１１２に設定される。サブヘッダフィールド識別子４０７がパケット４００にあるという判定に成功すると、パケットプリプロセッサ１１２は、ヘッダフィールドレポート４８０を生成するのに利用されるパケット４００のサブヘッダフィールド識別子４０７に関連する情報を抽出する（１２２２）。その後、サブヘッダフィールドブロック４８０のサブヘッダフィールド識別子４８２がサブヘッダフィールド識別子４０７に関連付けされる場合、ヘッダフィールドブロック４８０が生成される（１２２３）。パケットプリプロセッサ１１２はさらに、サブヘッダフィールド識別子４０７がパケット４００に含まれていることを示すため、ヘッダフィールドインジケータ４２５を修正する。パケット４００におけるサブヘッダフィールド識別子４０７のマッチング処理が、図６を参照して以下でさらに説明される。サブヘッダフィールド識別子４０７の具体例は、“サービスグループ”、“Ｓｔｄ−ｓｇ”、及びサブヘッダフィールド識別子４０７がＣｏｏｋｉｅサブヘッダ、Ｃｏｏｋｉｅ２サブヘッダ、Ｃｏｏｋｉｅサブヘッダを設定、又はＣｏｏｋｉｅ２サブヘッダを設定である他のＣｏｏｋｉｅ名文字列を含む。一実施例では、サブヘッダフィールド識別子４０７は、ペアレントヘッダフィールド識別子を含む。例えば、サブヘッダフィールド識別子４０７は、“Ｃｏｏｋｉｅ／Ｓｔｏ−ｓｇ”である。
【００４６】
一実施例では、パケットプリプロセッサ１１２は、パケット４００が有効なＨＴＴＰヘッダを有していないと判断する。これに対応して、パケットプリプロセッサ１１２は、ヘッダレポートブロック４１０を生成しない。一実施例では、パケットプリプロセッサ１１２は、有効なＨＴＴＰヘッダがパケット４００に含まれていないことを示すヘッダレポートブロック４１０をサマリブロック４２０と共に生成する。
【００４７】
図２に戻って、パケットプリプロセッサ１１２は、ヘッダレポートブロック４１０をプロセッサモジュール１１３に送信する。一実施例では、パケットプリプロセッサ１１２は、ヘッダレポートブロック４１０と共にパケット４００をプロセッサモジュール１１３に送信する。一実施例では、パケットプリプロセッサ１１２は、パケット４００をプロセッサモジュール１１３に送信した後、ヘッダレポートブロック４１０を送信する。
【００４８】
図２ｂは、ヘッダレポートブロック４１０を処理するプロセッサモジュール１１３の実施例を示す。プロセッサモジュール１１３は、パケット４００とヘッダレポートブロック４１０とを受信する。
【００４９】
一実施例では、プロセッサモジュール１１３は、ヘッダレポートブロック４１０を受信し、サマリブロック４２０からパケット４００が有効なＨＴＴＰヘッダを有すると判断する（１２５１）。プロセッサモジュール１１３は、ヘッダレポートブロック４１０を用いてパケット４００を処理する。プロセッサモジュール１１３がヘッダレポートブロック４１０を受信しないとき、又は受信したヘッダレポートブロック４１０のサマリブロック４２０からパケット４００が有効なＨＴＴＰリクエストヘッダを含んでいないと判断したとき、パケット４００の処理は本発明の範囲外である。
【００５０】
パケット４００が有効なＨＴＴＰヘッダを有していると判断したことに応答して、プロセッサモジュール１１３は、ヘッダレポートブロック４１０を用いてサービスポリシー３１０を抽出する（１２６０）。サービスポリシー３１０の抽出では、ヘッダレポートブロック４１０のヘッダフィールドブロック４３０がヘッダフィールド識別子４３２に対応すると仮定して、プロセッサモジュール１１３は、ヘッダフィールドブロック４３０のヘッダフィールド位置４３４及びヘッダフィールドサイズ４３５を利用することによって、パケット４００からヘッダフィールド“サーバ”のヘッダフィールド値４３７を取得する（１２６１）。プロセッサモジュール１１３は、ヘッダフィールド値４３７に基づきサービスポリシー３１０を選択する。一実施例では、サブヘッダフィールドブロック４８０は、サブヘッダフィールド識別子４０７“サービスグループ”に対応する。プロセッサモジュール１１３は、サブヘッダフィールドブロック４８０のサブヘッダフィールド位置４８４とサブヘッダフィールドサイズ４８５とを利用することによって、パケット４００からサブヘッダフィールド識別子４０７のサブヘッダフィールド値４８７を取得する（１２６３）。プロセッサモジュール１１３は、サブヘッダフィールド値４８７に基づきサービスポリシー３１０を抽出する。
【００５１】
プロセッサモジュール１１３は、サービスポリシー３１０をパケット４００に適用する（１２７０）。一実施例では、プロセッサモジュール１１３は、サービスポリシー３１０に基づきサーバ２１０を選択する。一実施例では、プロセッサモジュール１１３は、サービスポリシー３１０に基づきトラフィック管理をパケット４００に適用する。一実施例では、プロセッサモジュール１１３は、サービスポリシー３１０に基づきパケット４００にセキュリティ制御を適用する。
【００５２】
一実施例では、プロセッサモジュール１１３は、ＨＴＴＰリクエストパケット４００を利用してサーバ２１０とＨＴＴＰセッション３５０を確立する（１２７２）。一実施例では、プロセッサモジュール１１３は、修正されたパケット４００を用いてＨＴＴＰセッション３５０を確立する前に、ＨＴＴＰリクエストパケット４００を修正する（１２７５）。一実施例では、サブヘッダフィールドブロック４８０は、ペアレントヘッダフィールド識別子“Ｃｏｏｋｉｅ”のサブヘッダフィールドを示す。プロセッサモジュール１１３は、ＨＴＴＰリクエストパケット４００からサブヘッダフィールドブロック４８０に関連する対応するサブヘッダフィールドを削除する。例えば、サブヘッダフィールド識別子４０７は“Ｓｔｏ−ｓｇ”である。プロセッサモジュール１１３は、“Ｃｏｏｋｉｅ”ヘッダフィールドからサブヘッダフィールド識別子４０７“Ｓｔｏ−ｓｇ”を削除する。一実施例では、パケット４００の“Ｃｏｏｋｉｅ”ヘッダフィールドは、“Ｃｏｏｋｉｅ：ｕｓｅｒ＝ｆｒａｎｋ；Ｓｔｏ−ｓｇ＝２０１９８５７８；ｓｅｓｓｉｏｎ−ｉｄ＝８２０４”である。修正後、修正されたパケット４００の“Ｃｏｏｋｉｅ”ヘッダフィールドは、“Ｃｏｏｋｉｅ：ｕｓｅｒ＝ｆｒａｎｋ；ｓｅｓｓｉｏｎ−ｉｄ＝８２０４”である。プロセッサモジュール１１３は、ＨＴＴＰセッション３５０を確立するため、修正されたパケット４００をサーバ２１０に送信する。
【００５３】
一実施例では、プロセッサモジュール１１３は、セッションエントリ３９０を生成し（１２８０）、ホスト１００とのＨＴＴＰセッション３００とサーバ２１０とのＨＴＴＰセッション３５０とに関する情報を格納する。一実施例では、プロセッサモジュール１１３は、セッションエントリ３９０とサービスポリシー３１０とを関連付ける。
【００５４】
一実施例では、プロセッサモジュール１１３は、ＨＴＴＰセッション３５０を確立するためパケット４００をサーバ２１０に送信する前に、パケット４００を修正しない。
【００５５】
図４は、ＨＴＴＰリクエスト又はレスポンスパケットを特定するパケットプリプロセッサの実施例を示す。図４において、パケットプリプロセッサ１１２は、ネットワークインタフェースモジュール１１１から受信したパケット７００を調べる。パケット７００は、ホスト１００からのＨＴＴＰリクエストパケット、サーバ２１０からのＨＴＴＰレスポンスパケット又は他の何れかのデータパケットであってもよい。パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有するか判断するため、パケット７００を処理する。一実施例では、パケット７００は、ＴＣＰ  ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットヘッダ７４１を有する。一実施例では、パケット７００は、ＩＰトンネリングパケットヘッダを有する。ＩＰトンネリングの具体例は、Ｌ２ＴＰトンネリング、モバイルＩＰトンネリング、ＩＰ  ｉｎ  ＩＰトンネリング、ＧＰＲＳ  ＩＰトンネリング、ＩＰｖ４  ｔｏ  ＩＰｖ６トンネリング、ＩＰｖ６  ｔｏ  ＩＰｖ４トンネリング、ＩＰ  ＭＰＬＳトンネリング又は他のＩＰトンネリングプロトコルを含む。パケットプリプロセッサ１１２は、パケット７００がＨＴＴＰパケットであることをＴＣＰ／ＩＰヘッダ７４１が示しているか確認する（１４０３）。一実施例では、パケット７００はホスト１００からのパケットであるとき、パケットプリプロセッサ１１２は、複数の所定のポート番号７０４に対してパケット７００のＴＣＰデスティネーションポート番号を比較する。一実施例では、パケットプロセッサ１１２は、パケット７００がサーバ２１０から受信されると、パケット７００のＴＣＰソースポート番号を利用する。複数の所定のポート番号７０４は、例えば、ポート番号８０，８０８０，８０００又はプロセッサモジュール１１３により設定される少なくとも１つのポート番号などを含む。一致がない場合、パケットプリプロセッサ１１２は、パケット７００がＨＴＴＰパケットでなく、パケット７００は有効なＨＴＴＰヘッダを含まないと判断する。そうでない場合、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有している可能性があると判断する。
【００５６】
ステップ１４０５において、パケットプリプロセッサ１１２は、ＴＣＰ／ＩＰヘッダ７４１のフラグ及びフラグメントオフセットを確認し、パケット７００がＩＰパケットフラグメントであるか判断する（１４０５）。パケット７００がＩＰパケットフラグメントである場合、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有していないと判断する。そうでない場合、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有している可能性があると判断する。
【００５７】
パケットプリプロセッサ１１２は、ＧＥＴ；ＧＥＴ［ｗｈｉｔｅ  ｓｐａｃｅ］；ＰＯＳＴ；ＰＯＳＴ［ｗｈｉｔｅ  ｓｐａｃｅ］；ａｎｄ  ＨＴＴＰ／を含むＨＴＴＰコマンド文字列７０６に対して、パケット７００のＴＣＰペイロード７４５の開始部分を比較する（１４０７）。一致がない場合、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有していないと判断する。そうでない場合、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有している可能性があると判断する。
【００５８】
一実施例では、１４０３，１４０５，１４０７において、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有している可能性があると判断する。これに対応して、パケットプリプロセッサ１１２は、ヘッダレポートブロック７１０を生成する（１４０９）。１４０３，１４０５又は１４０７においてパケット７００が有効なＨＴＴＰヘッダを有していないとパケットプリプロセッサ１１２が判断した場合、一実施例では、パケットプリプロセッサ１１２は、ヘッダレポートブロック７１０を生成しない。一実施例では、パケットプリプロセッサ１１２は、ヘッダレポートブロック７１０を生成しない。一実施例では、パケットプリプロセッサ１１２は、ヘッダレポートブロック７１０を生成するが、ヘッダレポートブロック７１０のサマリブロック７２０に、パケット７００が有効なＨＴＴＰヘッダを有していないことを示すヘッダインジケータ７２２を格納する。一実施例では、パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有しているか、又は有している可能性があると判断する。パケットプリプロセッサ１１２は、有効なＨＴＴＰヘッダがパケット７００に含まれていることを示すヘッダインジケータ７２２をサマリブロック７２０に格納する。
【００５９】
図５は、ＨＴＴＰヘッダフィールドを特定するパケットプリプロセッサの実施例を示す。パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有しているとパケットプリプロセッサ１１２が判断した後、ヘッダフィールド識別子７０５についてパケット７００を処理する。
【００６０】
パケットプリプロセッサ１１２は、キャラクタ‘＼ｎ’（新たなライン、ラインフィードキャラクタ又は１６進数値０ｘ１０）と、これに続くヘッダフィールド識別子７０５と、これに続くキャラクタ‘：’との組み合わせから構成されるキャラクタシーケンスと、パケット７００のヘッダフィールド識別子とを比較する。一実施例では、キャラクタシーケンスは、キャラクタ‘＼ｎ’の前に‘＼ｒ’（キャリッジリターンキャラクタ又は１６進数値０ｘ１３）を有する。一実施例では、パケットプリプロセッサ１１２は、パケット７００のＴＣＰペイロード７４５の開始位置からマッチングをスタートするか、又は他の実施例では、パケット７００の図４においてマッチングされたＨＴＴＯコマンドの後である。
【００６１】
一実施例では、一致がパケット７００において検出されない。パケットプリプロセッサ１１２は、パケット７００がヘッダフィールド識別子７０５を有していないと判断する。
【００６２】
一実施例では、一致が検出される。パケットプリプロセッサ１１２は、パケット７００がヘッダフィールド識別子７０５を有していると判断する。パケットプリプロセッサ１１２は、ヘッダフィールド識別子７３２を含むように、ヘッダフィールド識別子７０５に対応するヘッダフィールドブロック７３０を生成する。パケットプリプロセッサ１１２は、一致が検出されたパケット７００のヘッダフィールド位置７３４を記録する。パケットプリプロセッサ１１２は、ヘッダフィールドブロック７３０に位置７３４を格納する。本実施例では、パケットプリプロセッサ１１２は、位置７３４から始まるキャラクタ‘＼ｎ’をマッチングする。一実施例では、パケットプリプロセッサ１１２は、位置７３８においてパケット７００の‘＼ｎ’又は‘＼ｒ＼ｎ’の一致を検出する。パケットプリプロセッサ１１２は、位置７３８と位置７３４との間の差分としてヘッダフィールドレポート７３０のヘッダフィールドサイズ７３５を計算し、ヘッダフィールドサイズ７３５をヘッダフィールドブロック７３０に格納する。一実施例では、当該差分７３５は、位置７３８と一致したキャラクタ‘：’の位置との間である。一実施例では、パケットプリプロセッサ１１２は、一致したキャラクタ‘：’の後のホワイトスペース‘  ’キャラクタ又はタブ‘＼ｔ’キャラクタなどの線形のホワイトスペースキャラクタのシーケンスをマッチングする。差分７３５は、一致したキャラクタ‘：’の後の位置７３８と最初の非線形のホワイトスペースキャラクタとの間である。
【００６３】
図６は、ＨＴＴＰサブヘッダフィールドを特定するパケットプリプロセッサの実施例を示す。パケットプリプロセッサ１１２は、パケット７００が有効なＨＴＴＰヘッダを有することをパケットプリプロセッサ１１２が判断した後、サブヘッダフィールド識別子７０７についてパケット７００を処理する。パケット７００がＨＴＴＰリクエストパケットである一実施例では、サブヘッダフィールド識別子７０７は、“Ｃｏｏｋｉｅ”のサブヘッダフィールドに関連付けされる。パケット７００がＨＴＴＰレスポンスパケットである一実施例では、サブヘッダフィールド識別子７０７は、“Ｓｅｔ−Ｃｏｏｋｉｅ”又は“Ｓｅｔ−Ｃｏｏｋｉｅ２”のサブヘッダフィールドに関連付けされる。
【００６４】
一実施例では、パケットプリプロセッサ１１２は、図５に示されるような“Ｃｏｏｋｉｅ”に関連するヘッダフィールド識別子のヘッダフィールド位置７９４と終了位置７９８とを決定する。パケットプリプロセッサ１１２は、パケット７００における位置７９４と終了位置７９８とを用いて、サブヘッダフィールド識別子７０７との比較を実行することを進める。パケットプリプロセッサ１１２は、サブヘッダフィールド識別子７０７とキャラクタ‘＝’とのキャラクタシーケンスの組み合わせを用いて比較する。
【００６５】
一実施例では、一実施例では、パケットプリプロセッサ１１２は、位置７８４においてサブヘッダフィールド識別子７０７の一致を検出する。本実施例では、位置７８４は、位置７９４以上であって、位置７９８以下である。パケットプリプロセッサ１１２は、サブヘッダフィールド識別子７０７のサイズ７８５を決定することを進める。一実施例では、パケットプリプロセッサ１１２は、一致したキャラクタ‘＝’の位置と位置７９８との間の非線形のホワイトスペースキャラクタの最初の出現と、非線形のホワイトスペースキャラクタの最初の出現後であって、位置７９８の前の位置７８８におけるキャラクタ‘；’の最初の出現とを決定する。一実施例では、パケットプリプロセッサ１１２は、位置７８４と位置７８８との間の差分としてサイズ７８５を計算する。一実施例では、位置７８４は、非線形のホワイトスペースキャラクタの決定された最初の出現をマーク付けする。
【００６６】
一実施例では、パケットプリプロセッサ１１２は、非線形のホワイトスペースキャラクタの一致した最初の出現とヘッダレポートブロック７１０における位置７９８との間でキャラクタ‘；’を検出せず、サイズ７８５の計算において位置７８８として位置７９８を利用する。
【００６７】
パケットプリプロセッサ１１２がサブヘッダフィールド識別子７０７の一致が検出されたと判断する実施例では、パケットプリプロセッサ１１２は、サブヘッダフィールドブロック７８０を生成する。パケットプリプロセッサ１１２は、ヘッダレポートブロック７１０のサブヘッダフィールドブロック７８０において、サブヘッダフィールド識別子７８２と共に、ヘッダフィールドとして位置７８４とサイズ７８５とを格納する。
【００６８】
一実施例では、パケットプリプロセッサ１１２は、サブヘッダフィールド識別子７０７の一致を検出しない。パケットプリプロセッサ１１２は、サブヘッダフィールド識別子７０７が位置７９４において一致したヘッダフィールド“Ｃｏｏｋｉｅ”に含まれていないと判断する。一実施例では、パケットプリプロセッサ１１２は、パケット７００における他のヘッダフィールド“Ｃｏｏｋｉｅ”のマッチングに進む。一実施例では、パケットプリプロセッサ１１２は、サブヘッダフィールド識別子７０７がパケット７００に含まれていないと判断する。パケットプリプロセッサ１１２は、ヘッダフィールドブロック７８０を生成しない。
【００６９】
図４〜６において、パケットプリプロセッサ１１２は、１以上のキャラクタのシーケンスに対してパケット７００をマッチングする。このようなマッチングは、ＦＰＧＡ、ＡＳＩＣ及び他の適切かつ可能なハードウェアベース処理モジュールの当業者に知られている。
【００７０】
図７は、ＨＴＴＰレスポンスパケット８００を処理するサービスゲートウェイ１１０の実施例を示す。サービスゲートウェイ１１０のネットワークモジュール１１１は、サーバ２１０からＨＴＴＰレスポンスパケット８００を受信する。ネットワークモジュール１１１は、パケット８００をパケットプリプロセッサ１１２に送信する。パケットプリプロセッサ１１２は、ヘッダレポートブロック８１０を生成するため、パケット８００を調べる。
【００７１】
一実施例では、ヘッダレポートブロック８１０は、サマリブロック８２０と、任意的にヘッダフィールドブロック８３０及びサブヘッダフィールドブロック８８０とを有する。サマリブロック８２０は、パケット８００が有効なＨＴＴＰヘッダを有することを示すヘッダインジケータ（図示せず）と、ヘッダフィールドブロック８３０又はサブヘッダフィールドブロック８８０がヘッダレポートブロック８１０に含まれることを示すヘッダフィールドインジケータ８２５とを有する。
【００７２】
一実施例では、ヘッダフィールドブロック８３０は、ヘッダフィールド識別子８０５に対応する。一実施例では、サブヘッダフィールドブロック８８０は、サブヘッダフィールド識別子８０７に関連付けされる。
【００７３】
パケットプリプロセッサ１１２は、ヘッダレポートブロック８１０を生成するため、図４〜６に示されるようにパケット８００を調べる。具体的には、ヘッダフィールド識別子８０５は、“Ｓｅｔ−Ｃｏｏｋｉｅ”又は“Ｓｅｔ−Ｃｏｏｋｉｅ２”であり、サブヘッダフィールド識別子８０７は、“サービスグループ”、“Ｓｔｄ−ｓｇ”などのネーム文字列、又はプロセッサモジュール１１３によりパケットプリプロセッサ１１２に設定される他のネーム文字列である。典型的には、サブヘッダフィールド識別子８０７は、ヘッダフィールド識別子８０５のサブヘッダフィールドである。
【００７４】
一実施例では、パケットプリプロセッサ１１２は、ヘッダフィールド識別子８０５又はサブヘッダフィールド識別子８０７を検出しない。パケットプリプロセッサ１１２は、ヘッダフィールドインジケータ８２５における対応するヘッダフィールド又はサブヘッダフィールドの欠落を示す。
【００７５】
プロセッサモジュール１１３は、パケットプリプロセッサ１１２からパケット８００と、おそらくヘッダレポートブロック８１０とを受信する。プロセッサモジュール１１３がヘッダレポートブロック８１０を受信しない場合、又はヘッダレポートブロック８１０のサマリブロック８２０から、パケット８００が有効なＨＴＴＰヘッダを有していないと判断した場合、プロセッサモジュール１１３は、本発明の範囲を超えた方法によりパケット８００を処理する。
【００７６】
一実施例では、プロセッサモジュール１１３は、ヘッダレポートブロック８１０を受信し、サマリブロック８２０からパケット８００が有効なＨＴＴＰヘッダを有していると判断する。プロセッサモジュール１１３は、ヘッダレポートブロック８１０を利用してパケット８００を処理する。
【００７７】
一実施例では、プロセッサモジュール１１３は、サーバ２１０のアドレス、ホスト１００のアドレス、パケット８００におけるＴＣＰソースポート及びデスティネーションポート番号などのパケット８００の情報を利用して、セッションエントリ３９０を抽出する。プロセッサモジュール１１３はさらに、セッションエントリ３９０に関連するサービスポリシー３１０を抽出する。
【００７８】
一実施例では、プロセッサモジュール１１３は、“Ｓｅｔ−Ｃｏｏｋｉｅ”又は“Ｓｅｔ−Ｃｏｏｋｉｅ２”に対応するヘッダフィールドブロック８３０がヘッダレポートブロック８１０に含まれている場合、ヘッダフィールドインジケータ８２５を確認する。一実施例では、当該確認は失敗する。プロセッサモジュール１１３は、“Ｓｅｔ−Ｃｏｏｋｉｅ”に対応するヘッダフィールドを加えることによって、パケット８００を修正する。一実施例では、プロセッサモジュール１１３は、サブヘッダフィールド“Ｓｔｇ−ｓｇ”の値“６７８”がサービスポリシー３１０に基づき決定されるヘッダフィールド“＼ｎＳｅｔ−Ｃｏｏｋｉｅ：Ｓｔｇ−ｓｇ＝６７８”を加える。一実施例では、値“６７８”がセッションエントリ３９０から取得される。一実施例では、サブフィールド“サービスグループ”が、“Ｓｔｇ−ｓｇ”の代わりに利用される。一実施例では、サブヘッダフィールドネーム文字列が、セッションエントリ３９０から取得される。一実施例では、プロセッサモジュール１１３は、ヘッダフィールド“＼ｒ＼ｎＳｅｔ−Ｃｏｏｋｉｅ：Ｓｔｇ−ｓｇ＝６７８”を加える。
【００７９】
一実施例では、“Ｓｅｔ−Ｃｏｏｋｉｅ”又は“Ｓｅｔ−Ｃｏｏｋｉｅ２”に対応するヘッダフィールドブロック８３０が、ヘッダレポートブロック８１０に含まれる。プロセッサモジュール１１３は、サブヘッダフィールドブロック８８０が含まれているか判断するため、ヘッダフィールドインジケータ８２５を確認する。一実施例では、サブヘッダフィールドブロック８８０は、ヘッダレポートブロック８１０に含まれない。プロセッサモジュール１１３は、パケット８００においてヘッダフィールドブロック８３０に対応するヘッダフィールド値を修正する。プロセッサモジュール１１３は、サブヘッダフィールド“Ｓｔｇ−ｓｇ＝６７８”をヘッダフィールド識別子８０５に対応するＨＴＴＰヘッダフィールドに挿入する。例えば、ヘッダフィールド識別子８０５は“Ｓｅｔ−Ｃｏｏｋｉｅ”であり、“Ｓｅｔ−Ｃｏｏｋｉｅ”のヘッダフィールド値は“Ｓｅｔ−Ｃｏｏｋｉｅ：Ｕｓｅｒ＝９０１６７ＣＤ”である。プロセッサモジュール１１３は、“Ｓｅｔ−Ｃｏｏｋｉｅｓ”のヘッダフィールド値を“Ｓｅｔ−Ｃｏｏｋｉｅ：Ｕｓｅｒ＝９０１６７ＣＤ；Ｓｔｇ−ｓｇ＝６７８”に変更する。一実施例では、プロセッサモジュール１１３は、“Ｓｅｔ−Ｃｏｏｋｉｅ”のヘッダフィールド値を“Ｓｅｔ−Ｃｏｏｋｉｅ：Ｕｓｅｒ＝９０１６７ＣＤ；Ｓｔｇ−ｓｇ＝６７８＼ｒ＼ｎ”に変更する。
【００８０】
一実施例では、サブヘッダフィールドブロック８８０は、ヘッダレポートブロック８１０に含まれる。プロセッサモジュール１１３は、パケット８００のＨＴＴＰヘッダを修正しない。
【００８１】
プロセッサモジュール１１３は、修正されたパケット８００をホスト１００に送信する。
【００８２】
一実施例では、パケット７００又はパケット８００は、２以上の“Ｃｏｏｋｉｅ”又は“Ｓｅｔ−Ｃｏｏｋｉｅ”ヘッダなどの同一のヘッダフィールドの２以上を有してもよい。一実施例では、パケットプリプロセッサ１１２は、ヘッダの最初の出現を処理する。一実施例では、パケットプリプロセッサ１１２は、設定されたサブヘッダフィールドがマッチングされたヘッダの最初の出現を処理する。一実施例では、パケットプリプロセッサ１１２は、ヘッダレポートブロック７１０又はヘッダレポートブロック８１０に同一の複数のヘッダフィールドの出現を記録する。
【００８３】
本発明が図示された実施例に従って説明されたが、当業者は、これらの実施例に対する変形が可能であり、これらの変形は本発明の趣旨及び範囲内であることを容易に認識するであろう。従って、添付した請求項の趣旨及び範囲から逸脱することなく、当業者により多数の変更がされてもよい。
【符号の説明】
【００８４】
１０  サービスゲートウェイ
１００  ホスト
１１１  ネットワークインタフェースモジュール
１１２  パケットプリプロセッサ
１１３  プロセッサモジュール
１１４  コンピュータ可読媒体
１５３  データネットワーク
２１０  サーバ
【図１】
0005980165.tif 000002
【図２】
0005980165.tif 000003
【図２ａ】
0005980165.tif 000004
【図２ｂ】
0005980165.tif 000005
【図３】
0005980165.tif 000006
【図４】
0005980165.tif 000007
【図５】
0005980165.tif 000008
【図６】
0005980165.tif 000009
【図７】
0005980165.tif 000010