(57)【要約】【課題】転送先決定処理を複数の装置で分割して処理することによって、ＵＲＬスイッチの計算量及び記憶容量を削減することを目的とする。【解決手段】複数のサーバとパケット転送装置を備えるコンピュータシステムにおいて、前記各サーバは前記パケット転送装置と接続され、前記パケット転送装置は、ネットワークを介してクライアント端末と接続され、前記パケット転送装置は、前記クライアント端末から要求されたコンテンツの可変長の識別子から計算された固定長のハッシュ値を含むコンテンツ要求を受信し、前記受信したコンテンツ要求に含まれるハッシュ値を抽出し、前記抽出したハッシュ値に基づいて前記コンテンツ要求の転送先を前記複数のサーバのうちいずれのサーバにするかを決定する。【選択図】図１
2006309383.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバとパケット転送装置を備えるコンピュータシステムにおいて、
前記各サーバは前記パケット転送装置と接続され、
前記パケット転送装置は、ネットワークを介してクライアント端末と接続され、
前記パケット転送装置は、前記クライアント端末から要求されたコンテンツの可変長の識別子から計算された固定長のハッシュ値を含むコンテンツ要求を受信し、前記受信したコンテンツ要求に含まれるハッシュ値を抽出し、前記抽出したハッシュ値に基づいて前記コンテンツ要求の転送先を前記複数のサーバのうちいずれのサーバにするかを決定することを特徴とするコンピュータシステム。
【請求項２】
前記クライアント端末は、要求に係るコンテンツの可変長の識別子から固定長のハッシュ値を計算し、前記計算されたハッシュ値をコンテンツ要求に格納し、前記コンテンツ要求をパケット転送装置に送信することを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記クライアント端末からのコンテンツ要求を受信するプロキシサーバを備え、
前記プロキシサーバは、前記パケット転送装置及び前記クライアント端末と接続され、
前記クライアント端末は、要求に係るコンテンツの可変長の識別子を含むコンテンツ要求を前記プロキシサーバに送信し、
前記プロキシサーバは、受信したコンテンツ要求から、要求に係るコンテンツの可変長の識別子を抽出し、前記抽出された識別子から固定長のハッシュ値を計算し、前記計算されたハッシュ値をコンテンツ要求に格納し、前記コンテンツ要求をパケット転送装置に送信することを特徴とする請求項１に記載のコンピュータシステム。
【請求項４】
前記プロキシサーバは、
前記クライアント端末からコンテンツ要求を受信するインターフェース部と、
当該要求に係るコンテンツの可変長の識別子から固定長のハッシュ値を計算し、  前記計算されたハッシュ値をコンテンツ要求に格納するプロセッサと、を備えることを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記クライアント端末は、
要求に係るコンテンツの可変長の識別子から固定長のハッシュ値を計算し、
前記計算されたハッシュ値を要求パケット内に書き込むプロセッサと、を備えることを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
前記パケット転送装置は、
前記コンテンツ要求に含まれる固定長のハッシュ値を抽出するプロセッサと、
前記コンテンツの可変長の識別子に対応するハッシュ値と前記コンテンツ要求の転送先との対応を含む転送先選択情報を記憶した記憶部と、を備えることを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記パケット転送装置は、
前記プロセッサは、
前記抽出されたハッシュ値及び前記転送先選択情報によって、前記コンテンツ要求の転送先を決定しと、
前記決定された転送先にパケットを転送することを特徴とする請求項６に記載のコンピュータシステム。
【請求項８】
前記プロセッサは、ＨＴＴＰのヘッダから前記ハッシュ値を抽出することを特徴とする請求項６に記載のコンピュータシステム。
【請求項９】
前記プロセッサは、セッション確立要求パケットから前記ハッシュ値を抽出することを特徴とする請求項６に記載のコンピュータシステム。
【請求項１０】
前記パケット転送装置は、
前記コンテンツ要求に代えて、前記クライアント端末から要求されたコンテンツの可変長の識別子から計算された固定長のハッシュ値を含むセッション確立要求を受信し、
前記受信したセッション確立要求に含まれるハッシュ値を抽出し、前記抽出したハッシュ値に基づいて前記セッション確立要求の転送先を前記複数のサーバのうちいずれのサーバにするかを決定することを特徴とする請求項１に記載のコンピュータシステム。
【請求項１１】
パケット転送装置、オリジンサーバ、キャッシュサーバ及び制御サーバを含んだコンピュータシステムであって、
前記オリジンサーバは、クライアント端末にコンテンツを提供し、
前記キャッシュサーバは、前記オリジンサーバから提供されたコンテンツを記憶し、
前記制御サーバは、前記キャッシュサーバに記憶されたコンテンツを管理し、
前記パケット転送装置は、前記クライアント端末から要求されたコンテンツの可変長の識別子から計算された固定長のハッシュ値を含むコンテンツ要求を受信し、前記受信したコンテンツ要求に含まれるハッシュ値に基づいて、当該コンテンツ要求を、前記オリジンサーバ又は前記制御サーバへ振分けることを特徴とするコンピュータシステム。
【請求項１２】
前記前記制御サーバは、前記キャッシュサーバが記憶したコンテンツの情報を記憶するキャッシュ所在情報を備えることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
前記キャッシュサーバは、
前記クライアント端末からコンテンツ要求を受信するインターフェース部と、
当該要求に係るコンテンツの可変長の識別子から固定長のハッシュ値を出力し、  前記計算されたハッシュ値をコンテンツ要求に格納するプロセッサと、を備えることを特徴とする請求項１１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット転送装置を備えるコンピュータシステムに関し、特に、ＵＲＬスイッチを用いた転送制御に関する。
【背景技術】
【０００２】
インターネット上で提供される各種サービスは、ストリーム型の通信プロトコルであるＴＣＰ上で実現されることが多い（非特許文献１参照）。例えば、World-Wide Webは、ＴＣＰ上のプロトコルであるHypertext Transport Protocol（ＨＴＴＰ、非特許文献２参照）を使用している。
【０００３】
ＨＴＴＰプロトコルでは、以下の手順でサーバからコンテンツを取得する。まず、クライアント端末はサーバに対してＴＣＰコネクションを確立する。ストリームの先頭には要求するコンテンツのＵＲＬが含まれる。サーバは、このＵＲＬを解釈することによってユーザが要求するコンテンツを認識し、認識したＵＲＬに対応するコンテンツをクライアント端末に返信する。
【０００４】
大規模なシステムになると、サーバは多数のユーザからの要求を処理する必要がある。この多量の処理に対応するため、複数のサーバに分散させて処理をすることがある。このとき、サーバとクライアント端末の間の通信経路上に負荷分散装置を設け、その負荷分散装置でユーザからの処理を振り分ける。負荷分散装置（ＵＲＬスイッチ）は、クライアント端末が要求するＵＲＬを認識して転送先を決める。
【０００５】
ＵＲＬスイッチの動作は以下の通りである。
【０００６】
クライアント端末がサーバに対して接続するＴＣＰコネクションを、ＵＲＬスイッチが代理して終端する。ＵＲＬスイッチは、クライアント端末が送信したコンテンツのＵＲＬを抽出する。そして、抽出したＵＲＬに対応した転送先を決定する。
【０００７】
例えば、負荷分散のためのＵＲＬスイッチであれば、複数のサーバの中から当該コンテンツを格納しているサーバを選択する。ＵＲＬスイッチは、選択されたサーバとの間でコネクションを設定し、クライアント端末からのリクエストを転送する。以後、ＵＲＬスイッチはクライアント端末とサーバの間で交換されるパケットを中継する。
【０００８】
この動作によって、クライアント端末からのリクエストがＵＲＬスイッチにより適切なサーバに転送される。
【非特許文献１】IETF，RFC793 ，”Transmission Control Protocol”，１９８１年９月
【非特許文献２】IETF，RFC2616，”Hypertext Transfer Protocol -- HTTP/1.1”，１９９９年６月
【非特許文献３】Z. Genova and K. Christensen，” Using signatures to improve URL routing.”，In proceedings of IEEE International Performance, Computing, and Cmmunications Conference，２００２年４月，ｐ．４５−５２
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ＵＲＬスイッチの動作の第１の特徴は、受信した要求からＵＲＬを抽出することである。また、第２の特徴は、抽出したＵＲＬをキーとしたテーブル検索（又は、何らかの演算）によって転送先を決定することである。ＵＲＬスイッチの転送先判別処理を高速化するためには、前述した二つの処理を高速化する必要がある。
【００１０】
従来の方法では、ＵＲＬスイッチがリクエストからＵＲＬを抽出し、ＵＲＬをキーとして転送先を選択している。クライアント端末からのリクエストに含まれるＵＲＬの長さは一定しない可変長であり、一般的には５０バイト程度である。このＵＲＬを抽出し、このＵＲＬに基づいてテーブルを検索（又は、演算）するためには、大きな処理能力、記憶容量が必要となる。すなわち、この方法では、高速かつ経済的な処理の実現が困難である。
【００１１】
また、ＵＲＬスイッチによって保持されるテーブルを小さくするために、テーブルの検索キーにＵＲＬのハッシュ値を用いる方法が提案されている（非特許文献３参照。）。この方法によると、ＵＲＬスイッチは要求パケットからＵＲＬを抽出し、抽出したＵＲＬからハッシュ値を計算し、ハッシュ値をキーとしてテーブルを検索している。
【００１２】
本発明は、転送先決定処理を複数の装置で分割して処理することによって、ＵＲＬスイッチの計算量及び記憶容量を削減することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、複数のサーバとパケット転送装置を備えるコンピュータシステムにおいて、前記各サーバは前記パケット転送装置と接続され、前記パケット転送装置は、ネットワークを介してクライアント端末と接続され、前記パケット転送装置は、前記クライアント端末から要求されたコンテンツの可変長の識別子から計算された固定長のハッシュ値を含むコンテンツ要求を受信し、前記受信したコンテンツ要求に含まれるハッシュ値を抽出し、前記抽出したハッシュ値に基づいて前記コンテンツ要求の転送先を前記複数のサーバのうちいずれのサーバにするかを決定する。
【００１４】
すなわち、本発明のコンピュータシステムの一実施形態では、クライアント端末が要求に係るコンテンツのＵＲＬから固定長の値を生成し、その値を要求の中に含める。そして、ＵＲＬスイッチは、要求に埋め込まれた固定長の値を抽出し、当該値に基づいて要求に対する処理を決定する。
【発明の効果】
【００１５】
本発明によると、ＵＲＬスイッチで行う処理が簡略化されることによって、ＵＲＬスイッチの性能を向上させることができる。また、ＵＲＬスイッチの処理を高速化することによって、ＵＲＬスイッチを使用するアプリケーションが高速化し、ユーザに対してより高い品質のサービスを提供することができる。
【発明を実施するための最良の形態】
【００１６】
本明細書では、本発明をＷｅｂサーバの負荷分散に適用した実施の形態を説明する。
【００１７】
Ｗｅｂサーバの負荷分散では、同一サイトに対するコンテンツ要求を複数のサーバに分散して処理することで、１台のサーバあたりの負荷を削減し、応答時間を短縮する。各サーバはコンテンツの提供を分担するが、本発明の実施の形態では、ハッシュ値から担当するサーバを決定するものとする。
【００１８】
従来のＵＲＬスイッチを含むコンピュータシステムでは、ＵＲＬスイッチがコンテンツ要求パケットに含まれるＵＲＬを抽出し、抽出したＵＲＬのハッシュ値を計算した上で、コンテンツ要求の転送先を決定する。これに対し、本発明の実施の形態では、ハッシュ値の計算をクライアント端末等に分散し、ＵＲＬスイッチでのＵＲＬ抽出処理を簡略化することができる。
【００１９】
ハッシュ値を計算するために使用するハッシュ関数は多様である。例えば、ＭＤ５は任意の長さのデータから１２８ビットのハッシュ値を計算するものであり、インターネット上のデータの認証などに広く用いられている。ＭＤ５は、IETF,RFC1321,"The MD5 Message-Digest Algorithm"に記載されている。
【００２０】
また、ＣＲＣ３２は、任意の長さのデータから３２ビットのハッシュ値を計算するものであり、主にデータの誤り検出に用いられている。ＣＲＣ３２は、ISO,IS3309,"ISO Information Processing Systems-Data Communication High-Level Data Link Control Procedure-Frame Structure"に記載されている。
【００２１】
（実施形態１）
図１は、第１の実施の形態のコンピュータシステムの構成を示すブロック図である。
【００２２】
第１の実施の形態のコンピュータシステムは、クライアント端末１０１−１〜１０１−ｎ、ネットワーク１０２及びサーバ群１０４によって構成されている。
【００２３】
サーバ群１０４には、複数のＷｅｂサーバ１０４−１〜１０４−ｍ及びＵＲＬスイッチ１０５を含む。Ｗｅｂサーバ１０４−１等は、クライアント端末１０１−１等にコンテンツを提供するコンピュータである。ＵＲＬスイッチ１０５は、クライアント端末１０１−１等から送信されたコンテンツ要求（ＵＲＬ）を解析し、コンテンツ要求をＷｅｂサーバ１０４−１〜１０４−ｍに振り分ける負荷分散装置である。
【００２４】
ネットワーク１０２は、クライアント端末１０１−１等とサーバ群１０４とを接続し、例えば、ＴＣＰ／ＩＰプロトコルによって通信可能である。
【００２５】
クライアント端末１０１−１等は、Ｗｅｂサーバ１０４−１等に、ＨＴＴＰプロトコルによってコンテンツを要求するコンピュータである。なお、クライアント端末１０１−ｎのように、ネットワーク１０２との間にプロキシサーバ１０３を設けてもよい。
【００２６】
なお、本実施の形態では後述するように、ＨＴＴＰプロトコルによるコンテンツ要求にＵＲＬのハッシュ値を含めている。ＵＲＬスイッチ１０５は、ハッシュ値に基づいてコンテンツ要求の転送先を決定する。
【００２７】
図２は、第１の実施の形態のクライアント端末１０１−１の構成を示すブロック図である。なお、図２には、クライアント端末１０１−１の構成を示すが、他のクライアント端末１０１−２〜１０１−ｎも同じ構成を有する。
【００２８】
クライアント端末１０４−１は、ネットワークインターフェース２０１、ＣＰＵ２０２、メモリ２０３及び二次記憶装置２０４を備えるコンピュータである。これらのクライアント端末１０４−１内の各構成は、相互に内部バス２０５で接続されている。
【００２９】
ネットワークインターフェース２０１は、ネットワーク１０２に接続されている。よって、クライアント端末１０１−１は、ネットワーク１０２を介してＵＲＬスイッチ１０５との間でデータや制御信号を送受信する。なお、一つのネットワークインターフェースを図示するが、２以上のネットワークインターフェースを備えてもよい。
【００３０】
ＣＰＵ２０２は、メモリ２０３に記憶されている各種プログラムを実行し、クライアント端末１０１−１を制御する。
【００３１】
メモリ２０３には、処理プログラムが記憶される。処理プログラムは、ハッシュ値計算処理サブプログラム２０６及びコンテンツ要求サブプログラム２０７を含む。
【００３２】
ハッシュ値計算処理サブプログラム２０６は、コンテンツ要求に係るＵＲＬについて固定長のハッシュ値を計算する。例えば、ＣＲＣ３２によって、ハッシュ値を計算する。コンテンツ要求サブプログラム２０７は、ハッシュ値計算処理サブプログラム２０６によって計算されたハッシュ値を含んだコンテンツ要求を生成する。
【００３３】
なお、クライアント端末１０１−ｎのように、Ｗｅｂサーバ１０４−１等への経路の途中に存在するプロキシサーバ１０３においてハッシュ値を算出する場合は、ハッシュ値計算サブプログラム２０６を備えなくてよい。
【００３４】
二次記憶装置２０４は、クライアント端末１０１−１の電源遮断時も記憶内容を保持するハードディスク装置である。
【００３５】
図３は、第１の実施の形態のプロキシサーバ１０３の構成を示すブロック図である。
【００３６】
プロキシサーバ１０３は、ネットワークインターフェース３０１−１、３０１−２、ＣＰＵ３０２、メモリ３０３及び二次記憶装置３０４を備えるコンピュータである。これらの１０３内の各構成は、相互に内部バス３０５で接続されている。
【００３７】
ネットワークインターフェース３０１−１は、ネットワーク１０２に接続されている。また、ネットワークインターフェース３０１−２は、クライアント端末１０１−ｎに接続されている。
【００３８】
ＣＰＵ３０２は、メモリ３０３に記憶されている各種プログラムを実行し、プロキシサーバ１０３を制御する。
【００３９】
メモリ３０３には、処理プログラムが記憶される。処理プログラムは、ハッシュ値計算処理サブプログラム３０６及びコンテンツ要求サブプログラム３０７を含む。
【００４０】
ハッシュ値計算処理サブプログラム３０６は、クラインアント端末１０１−ｎから送信されたコンテンツ要求に係るＵＲＬに基づいて固定長のハッシュ値を計算する。コンテンツ要求サブプログラム２０７は、ハッシュ値計算処理サブプログラム３０６によって計算されたハッシュ値を含んだコンテンツ要求を生成する。
【００４１】
二次記憶装置３０４は、プロキシサーバ１０３の電源遮断時も記憶内容を保持するハードディスク装置である。
【００４２】
図４は、第１の実施の形態のＵＲＬスイッチ１０５の構成を示すブロック図である。
【００４３】
ＵＲＬスイッチ１０５は、ネットワークインターフェース４０１−１〜４０１−ｍ＋１、パケット処理装置４０２及びメモリ４０３を備えるコンピュータである。これらのＵＲＬスイッチ１０５内の各構成は、相互に内部バス４０４で接続されている。
【００４４】
ネットワークインターフェース４０１−１は、ネットワーク１０２に接続されている。また、ネットワークインターフェース４０１−２〜４０１−ｍ＋１はＷｅｂサーバ１０４−１〜１０４−ｍに接続されている。
【００４５】
パケット処理装置４０２は、入力されたパケットを所定の宛先に転送するネットワークプロセッサである。
【００４６】
メモリ４０３には、処理プログラムが記憶される。処理プログラムは、ハッシュ値抽出処理サブプログラム４０５及び転送先決定処理サブプログラム４０６を含む。メモリ４０３には、ＵＲＬスイッチ１０５が送受信するパケットが一時的に格納されるバッファが設けられている。また、メモリ４０３には、転送先選択テーブル４０７が記憶される。
【００４７】
ハッシュ値抽出処理サブプログラム４０５は、クラインアント端末１０１−ｎ等から送信されたコンテンツ要求からハッシュ値を抽出する。転送先決定処理サブプログラム４０６は、ハッシュ値抽出処理サブプログラム４０５によって抽出されたハッシュ値をキーとして、転送先選択テーブル４０７を検索し、コンテンツ要求の転送先を決定する。
【００４８】
転送先選択テーブル４０７は、ハッシュ値と転送先との対応を格納している。
【００４９】
図５は、第１の実施の形態の転送先選択テーブル４０７の構成の説明図である。
【００５０】
転送先選択テーブル４０７は、ＵＲＬのハッシュ値４０７１と、転送先のＷｅｂサーバのＩＰアドレス４０７２とを含む。
【００５１】
ＵＲＬのハッシュ値４０７１は、コンテンツ要求に係るＵＲＬから計算された固定長のハッシュ値である。転送先４０７２は、当該ハッシュ値の計算の元となったＵＲＬに対応するＷｅｂサーバのＩＰアドレスである。すなわち、当該ハッシュ値を含むコンテンツ要求の転送先となるＷｅｂサーバのＩＰアドレスである。
【００５２】
ＵＲＬスイッチ１０５は、クライアント端末１０１−１等から受信したコンテンツ要求に含まれるハッシュ値をキーとして、転送先選択テーブル４０７を検索し、転送先のＷｅｂサーバを特定する。
【００５３】
図６は、第１の実施の形態のコンテンツ要求パケットの説明図である。
【００５４】
クライアント端末１０１−１からのコンテンツ要求パケットには、X-Hashヘッダが設けられている。X-Hashヘッダには、このＵＲＬに対するハッシュ値（例えば、0123ABCD）が格納される。
【００５５】
このコンテンツ要求パケットを受信したＵＲＬスイッチ１０５は、X-Hashヘッダからハッシュ値を抽出し、コンテンツ要求パケットの転送先を決定する。
【００５６】
次に、コンテンツ要求の手順について説明する。
【００５７】
図７は、第１の実施の形態のクライアント端末１０１のコンテンツ要求処理のフローチャートである。
【００５８】
クライアント端末１０１は、コンテンツを要求するＵＲＬが決定すると、ハッシュ値計算処理サブプログラム３０６によって、ＵＲＬのハッシュ値を計算する（ステップ７０１）。
【００５９】
次に、計算したハッシュ値をコンテンツ要求のヘッダ（X-Hashヘッダ）に格納して、コンテンツ要求パケットを作成する（ステップ７０２）。
【００６０】
次に、Ｗｅｂサーバ１０４−１等との間でセッションを確立する（ステップ７０３）。具体的には、クライアント端末１０１−１はＵＲＬスイッチ１０５と接続し、ＵＲＬスイッチ１０５との間でセッションを確立する。
【００６１】
そして、ステップ７０２で作成したコンテンツ要求パケットをＵＲＬスイッチ１０５に対して送信する（ステップ７０４）。その後、ＵＲＬスイッチ１０５経由でＷｅｂサーバ１０４−１等からコンテンツを受信する（ステップ７０５）。
【００６２】
図８は、第１の実施の形態のＵＲＬスイッチ１０５のセッション中継処理のフローチャートである。このセッション中継処理は、クライアント端末１０１−１等からのコンテンツ要求を受信すると実行される。
【００６３】
ＵＲＬスイッチ１０５は、クライアント端末１０１からのコンテンツ要求パケットを受信すると、当該コンテンツ要求パケット内のX-Hashヘッダの有無を判定する（ステップ８０１）。
【００６４】
その結果、X-Hashヘッダが存在する場合は、X-Hashヘッダからハッシュ値を抽出する（ステップ８０２）。このハッシュ値抽出処理は、ＵＲＬを抽出するより簡単な処理である。なぜなら、可変長の文字列（ＵＲＬ）を抽出する処理より固定長の値（ハッシュ値）を抽出する処理の方が単純だからである。
【００６５】
次に、抽出されたハッシュ値をキーとして転送先検索テーブル４０７を検索し（ステップ８０３）、該当するエントリが存在するか否かを判定する（ステップ８０４）。
【００６６】
その結果、該当エントリが発見された場合は、検索されたエントリのＷｅｂサーバ１０４−１を転送先に決定し、決定されたＷｅｂサーバ１０４−１との間でセッションを確立する（ステップ８０５）。
【００６７】
その後、クライアント端末１０１−１からのコンテンツ要求を転送先Ｗｅｂサーバ１０４−１に送信する（ステップ８０６）。
【００６８】
そして、クライアント端末１０１−１とＷｅｂサーバ１０４−１との間のセッションが切断されるまでそのセッションを中継する（ステップ８０７）。
【００６９】
ステップ８０１でX-Hashヘッダが存在しない場合、又は、ステップ８０４で該当するエントリが発見されなかった場合は、予め定められたＷｅｂサーバを転送先に決定し、決定されたサーバとの間でセッションを確立する（ステップ８０８）。その後、クライアント端末からのコンテンツ要求を転送先サーバに送信する（ステップ８０６）。
【００７０】
X-Hashヘッダが存在しないコンテンツ要求が転送されたＷｅｂサーバは、クライアント端末１０１−１から送信されたＵＲＬからハッシュ値を求め、適切なＷｅｂサーバにコンテンツ要求を転送する。この場合は、ＵＲＬスイッチとは別に、Ｗｅｂサーバも図５に示した転送先選択テーブル４０７を有しており、この転送先選択テーブル４０７に基づいて適切なＷｅｂサーバを検索する。これによって、X-Hashヘッダを埋め込むことができないクライアント端末１０１−１からコンテンツ要求があった場合でも、正しく負荷を分散できる。なお、コンテンツ要求が転送されたＷｅｂサーバが、通常の手順で、ＵＲＬを解析し、適切なＷｅｂサーバにコンテンツ要求を転送してもよい。
【００７１】
このように、ＵＲＬスイッチ１０５がセッションを中継することによって、クライアント端末１０１からのコンテンツ要求を適切なサーバ１０４に転送する。
【００７２】
図９は、第１の実施の形態のコンテンツ転送のシーケンス図である。
【００７３】
クライアント端末１０１−１は、ＵＲＬスイッチ１０５との間のセッションを確立するためにＴＣＰの３−ｗａｙハンドシェイクを行う（図７のステップ７０３）。
【００７４】
具体的には、クライアント端末１０１−１は、ＵＲＬスイッチ１０５に対してＳＹＮパケットを送信して、クライアント端末１０１−１とＵＲＬスイッチ１０５との間のセッション確立を要求する。ＵＲＬスイッチ１０５は、ＳＹＮパケットを受信すると、セッションの確立が可能であれば、ＳＹＮ，ＡＣＫパケットを送信する。クライアント端末１０１−１は、ＳＹＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、クライアント端末１０１−１とＵＲＬスイッチ１０５との間のセッションが確立する。
【００７５】
そして、クライアント端末１０１−１は、コンテンツ要求パケットを送信する（図７のステップ７０４）。ＵＲＬスイッチ１０５は、コンテンツ要求パケットを受信すると、受信したパケットからハッシュ値を抽出し（図８のステップ８０２）、転送先を決定する（図８のステップ８０３）。
【００７６】
そして、決定された転送先Ｗｅｂサーバ１０４−１とＵＲＬスイッチ１０５との間のセッションを確立する（ステップ８０５）。その後、セッションを確立したＷｅｂサーバ１０４−１に対し、クライアント端末１０１−１からのコンテンツ要求パケットを送信する（図８のステップ８０６）。
【００７７】
Ｗｅｂサーバ１０４−１は、コンテンツ要求パケットを受信すると、ＯＫパケットを送信する。ＵＲＬスイッチ１０５は、Ｗｅｂサーバ１０４−１が送信したＯＫパケットを、クライアント端末１０１−１に転送する。また、Ｗｅｂサーバ１０４−１は、コンテンツを送信する。
【００７８】
その後、Ｗｅｂサーバ１０４−１は、コンテンツの送信が終了すると、ＦＩＮパケットを送信して、セッションの終了を要求する。ＵＲＬスイッチは、Ｗｅｂサーバ１０４−１が送信したＦＩＮパケットを、クライアント端末１０１−１に転送する。
【００７９】
クライアント端末１０１−１は、ＦＩＮパケットを受信すると、Ｗｅｂサーバ１０４−１との間のセッションを終了し、ＦＩＮ，ＡＣＫパケットを送信する。Ｗｅｂサーバ１０４−１は、ＦＩＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、クライアント端末１０１−１とＷｅｂサーバ１０４−１との間のセッションが終了する。
【００８０】
以上説明したように、第１の実施の形態では、クライアント端末がＵＲＬからハッシュ値を求めることによって、ＵＲＬスイッチにおける識別子抽出、計算処理を単純化している。これにより、ＵＲＬスイッチに実装が必要なプログラム量及び価格を削減することができ、高速な負荷分散を実現することができる。
【００８１】
すなわち、第１の実施の形態では、クライアントからのコンテンツ要求の転送先決定処理のうち、ＵＲＬ抽出処理を簡略化する。このため、クライアント端末においてＵＲＬから固定長のハッシュ値を生成し、その値をコンテンツ要求に含める。これによって、ＵＲＬスイッチが抽出すべき値が可変長の長い文字列から、固定長の短い文字列になる。これによってＵＲＬスイッチによる処理を軽減することができる。
【００８２】
また、ＵＲＬスイッチによる転送先決定処理に使用されるデータがＵＲＬからハッシュ値になることによって、データ量が約５０バイトから数バイトに減る。これによって、ＵＲＬスイッチの記憶容量を削減することができる。
【００８３】
（実施形態２）
次に、本発明を、分散キャッシュを備えるコンピュータシステムに適用した例を説明する。
【００８４】
キャッシュサーバは、クライアント端末とコンテンツサーバ（オリジンサーバ）との間に設けられる。キャッシュサーバは、クライアント端末からのコンテンツ要求に対してサーバを代理して返信することによって、クライアント端末への応答時間の短縮、コンテンツサーバの負荷低減、及びキャッシュサーバとコンテンツサーバとの間のトラフィックの削減をしている。
【００８５】
キャッシュサーバは、より多数のクライアント端末を収容することによって、複数のクライアント端末から要求される共通のコンテンツの記憶量を増やし、キャッシュのヒット率を向上させる。
【００８６】
しかし、多数のクライアント端末からのコンテンツ要求がキャッシュサーバに集中するため、キャッシュサーバの処理性能がボトルネックとなる。これを解決するため、複数のキャッシュサーバでクライアント端末を分担し、かつキャッシュされたコンテンツを共有することによって、コンテンツの記憶量の増大と、サーバのボトルネック解消の両者を実現する。
【００８７】
このような分散型キャッシュとして、２つの方法が考えられる。
【００８８】
第１の方法は、分散された複数のキャッシュサーバ同士が直接通信し、お互いのキャッシュしているコンテンツの情報を交換するものである。この方法は、Internet Cache Protocolとして、RFC2186、"Internet Cache Protocol (ICP)" に詳しく記載されている。
【００８９】
第２の方法は、キャッシュされたコンテンツの情報を制御サーバにて集中的に管理し、各キャッシュサーバは制御サーバの指示に従ってコンテンツを取得するものである。このような分散キャッシュ制御方法は、例えば、特開２００５−１０９７０号公報に記載されている。
【００９０】
第１の方法は第２の方法と比較して、多数のキャッシュサーバが互いに通信する。すなわち、第１の方法は、キャッシュサーバ間の通信が、サーバ台数の２乗に比例して増加する。よって、第１の方法はスケーラビリティが低い。
【００９１】
一方、第２の方法では、キャッシュの有無に関する問い合わせが制御サーバに集中する。この解決のために、制御サーバの処理を、ＵＲＬスイッチを利用した専用機器に移し、制御サーバをオフロードする。このため、ネットワークプロセッサなどのパケット処理に特化した機器を用い、パケット処理を効率化する必要がある。
【００９２】
しかし、パケット処理に特化した機器では、パケットに対して行える処理は限られている。例えば、特定の位置に存在する固定長の情報は高速に抽出できるが、ＵＲＬのような可変長の文字列を高速に扱うことはできない。
【００９３】
これを解決するため、第２の実施の形態では、キャッシュサーバから制御サーバへのコンテンツ要求パケット中にＵＲＬのハッシュ値を埋め込む。これによって、パケット処理に特化した機器においてもＵＲＬの解析と同等の処理を高速に行うことができる。
【００９４】
第２の実施の形態においても、実施例１と同様に、ＵＲＬのハッシュ計算にＣＲＣ３２を利用する。
【００９５】
図１０は、第２の実施の形態のコンピュータシステムの構成を示すブロック図である。
【００９６】
第１の実施の形態のコンピュータシステムは、キャッシュサーバ１００１−１〜１００１−２、クライアント端末１００２−１〜１００２−４、ネットワーク１００３−１〜１００３−２、ＵＲＬスイッチ１００４、オリジンサーバ１００５−１〜１００５−２、ネットワーク１００６、ネットワーク１００７及びキャッシュ制御サーバ１００８によって構成されている。
【００９７】
クライアント端末１００２−１等は、オリジンサーバ１００５−１等に、ＨＴＴＰプロトコルによってコンテンツを要求するコンピュータである。クライアント端末１００２−１等は、前述した第１の実施の形態のクライアント端末１０１−１と同じ構成を有する（図２参照）。
【００９８】
キャッシュサーバ１００１−１、１００１−２は、クライアント端末１００２−１等がオリジンサーバ１００５−１等から取得したコンテンツを記憶する。
【００９９】
ＵＲＬスイッチ１００４は、クライアント端末１００２−１等からのコンテンツ要求パケットを解析して、キャッシュが記憶されているか否かを判定し、コンテンツ要求を振り分ける負荷分散装置である。第２の実施の形態のコンピュータシステムでは、ＵＲＬのハッシュ値がコンテンツ要求パケットに含まれているので、ＵＲＬスイッチ１００４は、このＵＲＬのハッシュ値を用いてキャッシュの有無を判定する。
【０１００】
オリジンサーバ１００５−１及び１００５−２は、はクライアント端末１００２−１等にコンテンツを提供するコンピュータである。
【０１０１】
各キャッシュサーバ１００１−１、１００１−２は、一つ以上のクライアント端末１００２−１等とネットワーク１００３−１等を介して接続されている。ＵＲＬスイッチ１００４は、キャッシュサーバ１００１−１等とＵＲＬスイッチ１００４とはネットワーク１００６を介して接続されている。また、ＵＲＬスイッチ１００４とオリジンサーバ１００５−１等とはネットワーク１００７を介して接続されている。ＵＲＬスイッチ１００４には、キャッシュ制御サーバ１００８が接続されている。これらのネットワーク１００３−１、１００３−２、１００６及び１００７は、例えば、ＴＣＰ／ＩＰプロトコルによって通信可能である。
【０１０２】
図１１は、第２の実施の形態のキャッシュサーバ１００１−１の構成を示すブロック図である。なお、図１１には、キャッシュサーバ１００１−１の構成を示すが、他のキャッシュサーバ１００１−２も同じ構成を有する。
【０１０３】
キャッシュサーバ１００１−１は、インターフェース１１０１−１及び１１０１−２、１１０２、メモリ１１０３及び二次記憶装置１１０４を備えるコンピュータ装置である。これらのキャッシュサーバ１００１−１内の各構成は相互に内部バス１１０５で接続されている。
【０１０４】
インターフェース１１０１−１は、クライアント端末側のネットワーク１００３に接続されている。インターフェース１１０１−２は、他のキャッシュサーバおよびＵＲＬスイッチに接続されている。
【０１０５】
ＣＰＵ１１０２は、メモリ１１０３に記憶されている各種プログラムを実行し、キャッシュサーバを制御する。
【０１０６】
メモリ１１０３には、処理プログラムが記憶される。処理プログラムは、キャッシュ有無判定処理サブプログラム１１０６、ハッシュ値計算処理サブプログラム１１０７、コンテンツ要求処理サブプログラム１１０８及びコンテンツ登録処理サブプログラム１１０９を含む。
【０１０７】
キャッシュ有無判定処理サブプログラム１１０６は、二次記憶装置１１０４内に格納されたコンテンツデータベース１１１０を検索し、ユーザが要求するコンテンツを当該キャッシュサーバが格納しているか否かを判定する。
【０１０８】
ハッシュ値計算処理サブプログラム１１０７は、クラインアント端末１００２−１等から送信されたコンテンツ要求に係るＵＲＬから固定長のハッシュ値を計算する。
【０１０９】
コンテンツ要求処理サブプログラム１１０８は、クラインアント端末１００２−１等から要求されたコンテンツが、当該キャッシュサーバに格納されていないときに、キャッシュ制御サーバ１００８にコンテンツを要求する。
【０１１０】
コンテンツ登録処理サブプログラム１１０９は、ＵＲＬスイッチ１００４を経由してオリジンサーバ１００５−１等から、又は直接他のキャッシュサーバ１００１−２からコンテンツを取得する。そして、その内容を当該キャッシュのコンテンツデータベース１１１０内に格納する。
【０１１１】
二次記憶装置１１０４は、キャッシュサーバ１００１−１の電源遮断時も記憶内容を保持するハードディスク装置であり、コンテンツデータベース１１１０が格納されている。
【０１１２】
コンテンツデータベース１１１０は、コンテンツと当該コンテンツのＵＲＬとの対応を格納している。
【０１１３】
図１２は、第２の実施の形態のコンテンツデータベース１１１０の構成の説明図である。
【０１１４】
コンテンツデータベース１１１０は、ＵＲＬ１１１０１と、コンテンツ１１１０２とを含む。
【０１１５】
ＵＲＬ１１１０１は、当該コンテンツがオリジンサーバに格納されている場所を示すＵＲＬである。コンテンツ１１１０２は、コンテンツのデータそのものである。
【０１１６】
キャッシュサーバ１００１−１は、クライアント端末１００２−１等から受信したコンテンツ要求に含まれるＵＲＬをキーとして、コンテンツデータベース１１１０を検索し、当該キャッシュサーバにコンテンツが格納されているかを判定する。
【０１１７】
図１３は、第２の実施の形態のＵＲＬスイッチ１００４の構成を示すブロック図である。
【０１１８】
ＵＲＬスイッチ１００４は、ネットワークインターフェース１２０１−１〜１２０１−３、パケット処理装置１２０２及びメモリ１２０３を備えるコンピュータである。これらの各構成は、相互に内部バス１２０４で接続されている。
【０１１９】
ネットワークインターフェース１２０１−１は、ネットワーク１００６に接続されている。ネットワークインターフェース１２０１−２は、キャッシュ制御サーバ１００８に接続されている。また、ネットワークインターフェース１２０１−３はネットワーク１００７に接続されている。
【０１２０】
パケット処理装置１２０２は、入力されたパケットを所定の宛先に転送するネットワークプロセッサである。
【０１２１】
メモリ１２０３には、処理プログラムが記憶される。処理プログラムは、ハッシュ値抽出処理サブプログラム１２０５、転送先決定処理サブプログラム１２０６及びハッシュ値登録処理サブプログラム１２０７を含む。メモリ１２０３には、ＵＲＬスイッチ１００４が送受信するパケットが一時的に格納されるバッファが設けられている。また、メモリ１２０３には、転送先選択テーブル１２０８が記憶される。
【０１２２】
ハッシュ値抽出処理サブプログラム１２０５は、クラインアント端末１００２−１等から送信されたコンテンツ要求からハッシュ値を抽出する。転送先決定処理サブプログラム１２０６は、ハッシュ値抽出処理サブプログラム１２０５によって抽出されたハッシュ値をキーとして、転送先選択テーブル１２０８を検索し、コンテンツ要求の転送先を決定する。ハッシュ値登録処理サブプログラム１２０７は、転送先選択テーブル１２０８へのハッシュ値の登録要求及び削除要求を受け付ける。
【０１２３】
転送先選択テーブル１２０８は、ハッシュ値と転送先との対応を格納する。
【０１２４】
図１４は、第２の実施の形態の転送先選択テーブル１２０８の構成の説明図である。
【０１２５】
転送先選択テーブル１２０８は、システム内のキャッシュサーバに格納される全てのキャッシュのデータを含む。各データは、ＵＲＬのハッシュ値１２０８１と、転送先のキャッシュ制御サーバのＩＰアドレス１２０８２とを含む。
【０１２６】
ＵＲＬのハッシュ値１２０８１は、コンテンツ要求に係るＵＲＬから計算された固定長のハッシュ値である。転送先１２０８２は、当該ハッシュ値の計算の元となったＵＲＬに対応するキャッシュを格納するキャッシュサーバを制御するキャッシュ制御サーバのＩＰアドレスである。すなわち、転送先１２０８２は、当該ハッシュ値が含まれるコンテンツ要求の転送先となるキャッシュ制御サーバのＩＰアドレスである。
【０１２７】
ＵＲＬスイッチ１００４は、キャッシュサーバ１００１−１等から受信したコンテンツ要求に含まれるハッシュ値をキーとして、転送先選択テーブル１２０８を検索し、転送先のキャッシュ制御サーバを特定する。
【０１２８】
図１５は、第２の実施の形態のキャッシュ制御サーバ１００８の構成を示すブロック図である。
【０１２９】
キャッシュ制御サーバ１００８は、ネットワークインターフェース１３０１、ＣＰＵ１３０２、メモリ１３０３及び二次記憶装置１３０４を備えるコンピュータである。これらの各構成は、相互に内部バス１３０６で接続されている。
【０１３０】
ネットワークインターフェース１３０１は、ＵＲＬスイッチ１００４に接続されている。
【０１３１】
ＣＰＵ１３０２は、メモリ１３０３に記憶されている各種プログラムを実行し、制御サーバを制御する。
【０１３２】
メモリ１３０３には、処理プログラムが記憶される。処理プログラムは、キャッシュ有無判定処理サブプログラム１３０７、コンテンツ転送指示処理サブプログラム１３０８及びＵＲＬ登録処理サブプログラム１３０９を含む。
【０１３３】
キャッシュ有無判定処理サブプログラム１３０７は、ＵＲＬスイッチから送信されたコンテンツ要求パケットからＵＲＬを抽出し、キャッシュ所在データベース１３０５を検索して、キャッシュを保有するキャッシュサーバを決定する。
【０１３４】
コンテンツ転送指示処理サブプログラム１３０８は、キャッシュを保有するキャッシュサーバに、コンテンツの転送を指示する。
【０１３５】
ＵＲＬ登録処理サブプログラム１３０９は、キャッシュサーバが取得したコンテンツの情報を、キャッシュ所在データベースに登録する。
【０１３６】
二次記憶装置１３０４は、プロキシサーバ１０３の電源遮断時も記憶内容を保持するハードディスク装置であり、キャッシュ所在データベース１３０５が格納されている。
【０１３７】
転送先選択テーブル１２０８は、ＵＲＬのハッシュ値とコンテンツ要求の転送先との対応を格納している。
【０１３８】
図１６は、第２の実施の形態のキャッシュ所在データベース１３０５の構成の説明図である。
【０１３９】
キャッシュ所在データベース１３０５は、ＵＲＬ１３０５１と、キャッシュを格納するキャッシュサーバのＩＰアドレス１３０５２とを含む。
【０１４０】
ＵＲＬ１３０５１は、当該コンテンツがオリジンサーバに格納されている場所を示すＵＲＬである。キャッシュサーバ１３０５２は、当該コンテンツが格納されているキャッシュサーバのＩＰアドレスである。キャッシュ制御サーバ１００８は、キャッシュサーバ１００１−１等から受信したコンテンツ要求に含まれるＵＲＬをキーとして、キャッシュ所在データベース１３０５を検索し、どのキャッシュサーバにコンテンツが格納されているかを判定する。
【０１４１】
図１７、図１８は、第２の実施の形態のコンテンツ要求パケットの説明図である。
【０１４２】
図１７は、クライアント端末１００２からのコンテンツ要求パケットを示す。コンテンツ要求パケットには、要求するコンテンツのＵＲＬが含まれている。
【０１４３】
キャッシュサーバ１００１−１は、クライアント端末１００２からのコンテンツ要求パケットを受信すると、受信したパケットからＵＲＬを抽出する。具体的には、Refererヘッダーから"http://www.example.com/”を抽出し、GETヘッダーから"index.html"を抽出する。そして、これらを合成し、ＵＲＬ"http://www.example.com/index.html"を得る。
【０１４４】
図１８は、キャッシュサーバ１００１−１からのコンテンツ要求パケットを示す。
【０１４５】
キャッシュサーバ１００１−１からのコンテンツ要求パケットは、クライアント端末１００２−１からのコンテンツ要求パケット（図１７）に、X-Hashヘッダが付加されている。X-Hashヘッダには、このＵＲＬに対するハッシュ値（例えば、0123ABCD）が格納される。
【０１４６】
このコンテンツ要求パケットを受信したＵＲＬスイッチ１０５は、X-Hashヘッダからハッシュ値を抽出し、コンテンツ要求パケットの転送先を決定する。
【０１４７】
また、キャッシュ制御サーバ１００８は、キャッシュサーバ１００１−１等からのコンテンツ要求パケットを受信すると、受信したパケットからＵＲＬを抽出し、"http://www.example.com/index.html"を得る。
【０１４８】
次に、コンテンツ要求の手順について説明する。
【０１４９】
図１９は、第２の実施の形態のキャッシュサーバ１００１−１のコンテンツ要求処理のフローチャートである。
【０１５０】
まず、キャッシュサーバ１００１は、クライアント端末１００２−１からのコンテンツ要求パケット（図１７）を受信すると、コンテンツ要求パケットに含まれているコンテンツのＵＲＬを抽出する（ステップ１５０１）。そして、抽出したＵＲＬをキーにして、コンテンツデータベース１１１０を検索し（ステップ１５０２）、該当するコンテンツが存在するか否かを判定する（ステップ１５０３）。
【０１５１】
その結果、クライアント端末１００２−１が要求するコンテンツがコンテンツデータベース１１１０に存在する場合、コンテンツデータベース１１１０からコンテンツを取得し、取得したコンテンツをクライアント端末１００２−１に送信する（ステップ１５０４）。
【０１５２】
一方、当該コンテンツがコンテンツデータベース１１１０に存在しない場合、キャッシュサーバ１００１は、ハッシュ値計算処理サブプログラム１１０７によって、要求のコンテンツのＵＲＬからハッシュ値を計算する（ステップ１５０５）。そして、計算したハッシュ値をコンテンツ要求のヘッダ（X-Hashヘッダ）に格納したコンテンツ要求パケットを作成し、作成したコンテンツ要求パケットを、オリジンサーバ１００５−１に送信する（ステップ１５０６）。このコンテンツ要求はＵＲＬスイッチ１００４を経由する。
【０１５３】
このコンテンツ要求に対して、２通りの返信が存在する。第一の返信は、オリジンサーバ１００５−１から転送されるコンテンツである。この場合、キャッシュサーバ１００１−１はオリジンサーバ１００５−１からコンテンツを受信する（ステップ１５０８）。
【０１５４】
一方、第二の返信は、他のキャッシュサーバ１００１−２から転送されるコンテンツである。この場合、要求元キャッシュサーバ１００１−１は、キャッシュ制御サーバ１００８から他のキャッシュサーバ１００１−２からコンテンツが転送される旨を受信し、その後、他のキャッシュサーバ１００１−２からコンテンツを受信する（ステップ１５１１）。
【０１５５】
要求元キャッシュサーバ１００１−１は、コンテンツを受信した後、受信したコンテンツをクライアント端末１００２−１に転送する（ステップ１５０９）。その後、コンテンツデータベース１１１０にコンテンツを登録する（ステップ１５１０）。そして、当該キャッシュにコンテンツが追加されたことをキャッシュ制御サーバ１００８に送信する（ステップ１５１２）。
【０１５６】
図２０は、第２の実施の形態のＵＲＬスイッチ１００４のコンテンツ要求処理のフローチャートである。
【０１５７】
ＵＲＬスイッチ１００４は、キャッシュサーバ１００１−１等とオリジンサーバ１００５−１等との間に設けられている。よって、ＵＲＬスイッチ１００４は、キャッシュサーバ１００１−１からオリジンサーバ１００５へのコンテンツ要求パケット（図１８）を捕捉することができる。
【０１５８】
ＵＲＬスイッチ１００４は、キャッシュサーバ１００１からオリジンサーバ１００５へのコンテンツ要求パケットを捕捉すると、捕捉したパケットからＵＲＬのハッシュ値を抽出する（ステップ１６０１）。そして、抽出したハッシュ値をキーとして、転送先選択テーブル１２０８を検索し（ステップ１６０２）、該当するエントリが存在するか否かを判定する（ステップ１６０３）。
【０１５９】
その結果、転送先選択テーブルに対応するエントリが存在した場合、いずれかのキャッシュサーバに当該コンテンツが存在する。よって、検索されたエントリに記載された制御サーバを転送先と決定し、決定された制御サーバにコンテンツ要求パケットを転送する（ステップ１６０４）。
【０１６０】
一方、対応するエントリが存在しない場合、いずれのキャッシュサーバにも当該コンテンツが存在しない。よって、ＵＲＬスイッチはコンテンツ要求パケットをオリジンサーバ１００５−１へ転送する（ステップ１６０５）。キャッシュサーバ１００１から送信されたコンテンツ要求パケットの宛先はオリジンサーバ１００５−１なので、ＵＲＬスイッチ１００４はオリジンサーバ１００５−１のＩＰアドレスを取得する必要はない。
【０１６１】
図２１は、第２の実施の形態のキャッシュ制御サーバ１００８のコンテンツ要求処理のフローチャートである。
【０１６２】
制御サーバ１００８は、ＵＲＬスイッチ１００４から転送されたコンテンツ要求パケットを受信すると、コンテンツ要求パケットからコンテンツのＵＲＬを抽出する（ステップ１７０１）。そして、抽出したＵＲＬをキーとして、キャッシュ所在データベース１３０５を検索し（ステップ１７０２）、該当するエントリが存在するか否かを判定する（ステップ１７０３）。
【０１６３】
当該ＵＲＬに対するエントリが存在した場合、他のキャッシュサーバに当該コンテンツが存在する。よって、要求元キャッシュサーバ１００１−１に対して、他のキャッシュサーバ１００１−２からコンテンツが転送される旨を返信する。そして、検索されたエントリに含まれるキャッシュサーバ１００１−２を選択し、当該ＵＲＬのコンテンツを要求元のキャッシュサーバ１００１−１に対して転送する指示をする（ステップ１７０４）。
【０１６４】
一方、当該ＵＲＬに対するエントリが存在しなかった場合、ＵＲＬスイッチ１００４によるキャッシュの有無判定が間違っていたことになる。ＵＲＬスイッチ１００４では、ハッシュ値に基づいてキャッシュの有無を判定しているので、ハッシュ値の衝突が生じうる。
【０１６５】
このため、キャッシュ所在データベース１３０５にエントリが存在しなかった場合は、キャッシュ制御サーバ１００８はオリジンサーバ１００５−１にコンテンツ要求パケットを転送し、コンテンツを取得する（ステップ１７０５）。
【０１６６】
そして、オリジンサーバ１００５−１から得られたコンテンツを要求元キャッシュサーバ１００１−１に返信する（ステップ１７０６）。そして、要求元キャッシュサーバ１００１−１は、コンテンツをクライアント端末１００２−１に転送し、当該コンテンツをキャッシュに格納する。
【０１６７】
図２２、図２３は、第２の実施の形態のコンテンツ転送のシーケンス図である。
【０１６８】
図２２は、キャッシュサーバから要求されたコンテンツが、いずれのキャッシュサーバにも存在しない場合のシーケンスを示す。
【０１６９】
キャッシュサーバ１００１−１は、クライアント端末からコンテンツ要求パケットを受信すると、ＵＲＬスイッチ１００４との間のセッションを確立するためにＴＣＰの３−ｗａｙハンドシェイクを行う。
【０１７０】
具体的には、キャッシュサーバ１００１−１は、ＵＲＬスイッチ１００４に対してＳＹＮパケットを送信して、キャッシュサーバ１００１−１とＵＲＬスイッチ１００４との間のセッション確立を要求する。ＵＲＬスイッチ１００４は、ＳＹＮパケットを受信すると、セッションの確立が可能であれば、ＳＹＮ，ＡＣＫパケットを送信する。キャッシュサーバ１００１−１は、ＳＹＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、キャッシュサーバ１００１−１とＵＲＬスイッチ１００４との間のセッションが確立する。
【０１７１】
そして、キャッシュサーバ１００１−１は、クライアント端末から受信したコンテンツ要求パケットを受信すると、受信したパケットにＵＲＬのX-Hash値を追加して、ＵＲＬスイッチ１００４に送信する（図１９のステップ１５０６）。ＵＲＬスイッチ１００４は、コンテンツ要求パケットを受信すると、受信したパケットからハッシュ値を抽出し（図２０のステップ１６０１）、転送先を決定する（図２０のステップ１６０２）。
【０１７２】
図２２に示す場合は、転送先選択テーブル１２０８に該当するエントリが存在しないので（要求されたコンテンツがキャッシュサーバに存在しないので）、オリジンサーバ１００５−１１００５−１にコンテンツ要求パケットを転送する。このため、ＵＲＬスイッチ１００４とオリジンサーバ１００５−１との間のセッションを確立する。その後、ＵＲＬスイッチ１００４は、セッションを確立したオリジンサーバ１００５−１に対し、クライアント端末からのコンテンツ要求パケットを送信する（図２０のステップ１６０５）。
【０１７３】
オリジンサーバ１００５−１は、コンテンツ要求パケットを受信すると、ＯＫパケットを送信する。ＵＲＬスイッチ１００４は、オリジンサーバ１００５−１が送信したＯＫパケットを、キャッシュサーバ１００１−１に転送する。また、オリジンサーバ１００５−１は、コンテンツを送信する。
【０１７４】
その後、オリジンサーバ１００５−１は、コンテンツの送信が終了すると、ＦＩＮパケットを送信する。ＵＲＬスイッチ１００４は、オリジンサーバ１００５−１が送信したＦＩＮパケットを、キャッシュサーバ１００１−１に転送する。
【０１７５】
キャッシュサーバ１００１−１は、ＦＩＮパケットを受信すると、オリジンサーバ１００５−１との間のセッションを終了し、ＦＩＮ，ＡＣＫパケットを送信する。オリジンサーバ１００５−１は、ＦＩＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、キャッシュサーバ１００１−１とオリジンサーバ１００５−１との間のセッションが終了する。
【０１７６】
その後、キャッシュサーバ１００１−１は、転送されたコンテンツのＵＲＬをキャッシュ制御サーバ１００８に送る。キャッシュ制御サーバ１００８は、受信したＵＲＬを、キャッシュ所在データベース１３０５に追加する。
【０１７７】
その後、キャッシュ制御サーバ１００８は、受信したＵＲＬのハッシュ値を計算し、計算したハッシュ値をＵＲＬスイッチ１００４に送る。ＵＲＬスイッチ１００４は、転送されたハッシュ値を、当該ハッシュ値を計算したキャッシュ制御サーバ１００８と対応付けて、転送先選択テーブル１２０８に追加する。
【０１７８】
図２３は、他のキャッシュサーバが要求のコンテンツを格納していた場合のシーケンスを示す。
【０１７９】
要求元キャッシュサーバ１００１−１は、クライアント端末からコンテンツ要求パケットを受信すると、ＵＲＬスイッチ１００４との間のセッションを確立するために、ＴＣＰの３−ｗａｙハンドシェイクを行う。この手順は図２２に示したものと同様である。
【０１８０】
そして、要求元キャッシュサーバ１００１−１は、クライアント端末から受信したコンテンツ要求パケットを受信すると、受信したパケットにＵＲＬのX-Hash値を追加して、ＵＲＬスイッチ１００４に送信する（図１９のステップ１５０６）。ＵＲＬスイッチ１００４は、コンテンツ要求パケットを受信すると、受信したパケットからハッシュ値を抽出し（図２０のステップ１６０１）、転送先を決定する（図２０のステップ１６０２）。
【０１８１】
図２３に示す場合は、転送先選択テーブル１２０８に該当するエントリが存在するので（要求されたコンテンツがキャッシュサーバに存在するので）、他のキャッシュサーバ１００１−２からコンテンツを取得する。このため、ＵＲＬスイッチ１００４とキャッシュ制御サーバ１００８との間のセッションを確立する。その後、ＵＲＬスイッチ１００４は、キャッシュ制御サーバ１００８に対し、クライアント端末からのコンテンツ要求パケットを送信する（図２０のステップ１６０４）。
【０１８２】
キャッシュ制御サーバ１００８は、コンテンツ要求パケットを受信すると、キャッシュ所在データベース１３０５を検索して、要求コンテンツを格納するキャッシュサーバ１００１−２を特定する（図２１のステップ１７０２）。そして、特定されたキャッシュサーバ１００１−２にコンテンツの転送を指示する（図２１のステップ１７０４）。
【０１８３】
要求コンテンツを格納するキャッシュサーバ１００１−２は、要求元キャッシュサーバ１００１−１にコンテンツを送信する。
【０１８４】
その後、コンテンツの送信が終了すると、キャッシュ制御サーバ１００８は、ＦＩＮパケットを送信する。ＵＲＬスイッチ１００４は、オリジンサーバが送信したＦＩＮパケットを、キャッシュサーバ１００１−１に転送する。
【０１８５】
キャッシュサーバ１００１−１は、ＦＩＮパケットを受信すると、キャッシュ制御サーバ１００８との間のセッションを終了し、ＦＩＮ，ＡＣＫパケットを送信する。キャッシュ制御サーバ１００８は、ＦＩＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、キャッシュサーバ１００１−１とキャッシュ制御サーバ１００８との間のセッションが終了する。
【０１８６】
その後、キャッシュサーバ１００１−１は、転送されたコンテンツのＵＲＬをキャッシュ制御サーバ１００８に送る。キャッシュ制御サーバ１００８は、受信したＵＲＬを、キャッシュ所在データベース１３０５に追加する。
【０１８７】
以上説明したように、第２の実施の形態では、ＵＲＬスイッチ１００４においてＵＲＬのハッシュ値を用いて転送先を判定している。よって、従来、制御サーバにかかっていた負荷をＵＲＬスイッチ１００４にオフロードすることができる。
【０１８８】
また、キャッシュサーバ１００１−１でＵＲＬのハッシュ値を求め、ＵＲＬスイッチ１００４が当該ハッシュ値を用いてキャッシュ有無を判定するので、ＵＲＬスイッチ１００４の処理負荷を軽減することができる。また、第１の実施の形態と同様に、ＵＲＬスイッチ１００４が、ＵＲＬの抽出に代わってハッシュ値を抽出することによって、ＵＲＬスイッチ１００４における処理を単純化することができる。
【０１８９】
（実施形態３）
第１及び第２の実施の形態では、サーバとクライアント端末間のセッションを確立した後に交換されるパケットにハッシュ値を埋め込んだ。以下に説明する第３の実施の形態では、ＴＣＰセッション確立時にハッシュ値を埋め込んだパケットを使用する。
【０１９０】
図２４は、第３の実施の形態のＴＣＰのヘッダフォーマットの説明図である。
【０１９１】
ＴＣＰにおけるセッションの確立時に送信されるパケットは、ＴＣＰヘッダの制御フィールドにセッション確立要求であることを示すＳＹＮフラグが設定されている。第３の実施の形態では、ＳＹＮパケットのＴＣＰオプション列の中に、要求するコンテンツのＵＲＬのハッシュ値を埋め込む。
【０１９２】
このため、第３の実施の形態を実現するためには、クライアント端末に実装されている既存のＴＣＰスタックを改造する必要がある。よって、第１及び第２の実施の形態の方法と、第３の実施の形態の方法とは、利用形態によって使い分けることが望ましい。
【０１９３】
なお、第３の実施の形態は、第１の実施の形態のコンピュータシステム（図１）及び第２の実施の形態のコンピュータシステム（図１０）のいずれにも適用することができる。
【０１９４】
次に、第３の実施の形態を、第１の実施の形態のコンピュータシステム（図１）に適用した場合の、コンテンツ要求の手順について説明する。
【０１９５】
図２５は、第３の実施の形態のクライアント端末１０１−１等のコンテンツ要求処理のフローチャートである。
【０１９６】
クライアント端末１０１−１は、コンテンツを要求するＵＲＬが決定すると、ＵＲＬのハッシュ値を計算する（ステップ７１１）。
【０１９７】
次に、計算したハッシュ値を、ＴＣＰ  ＳＹＮパケットのＴＣＰオプション列に格納して、ＳＹＮパケットを作成する（ステップ７１２）。
【０１９８】
次に、クライアント端末１０１−１は、ＵＲＬのハッシュ値が埋め込まれたＳＹＮパケットを送信し、Ｗｅｂサーバ１０４−１等との間でセッションを確立する（ステップ７１３）。
【０１９９】
その後、コンテンツ要求パケットをＵＲＬスイッチ１０５に対して送信する（ステップ７１４）。その後、ＵＲＬスイッチ１０５経由でサーバ１０４−１からコンテンツを受信する（ステップ７１５）。
【０２００】
図２６は、第３の実施の形態のＵＲＬスイッチ１０５のセッション中継処理のフローチャートである。このセッション中継処理は、クライアント端末１０１−１からのＴＣＰ  ＳＹＮパケットを受信すると実行される。
【０２０１】
ＵＲＬスイッチ１０５は、クライアント端末１０１−１からのＳＹＮパケットを受信すると、当該ＳＹＮパケット内にハッシュ値が埋め込まれているか否かを判定する（ステップ８１１）。
【０２０２】
その結果、ＳＹＮパケットにハッシュ値が存在する場合は、ＳＹＮパケットからハッシュ値を抽出する（ステップ８１２）。
【０２０３】
次に、抽出されたハッシュ値をキーとして転送先検索テーブル４０７を検索し（ステップ８１３）、該当するエントリが存在するか否かを判定する（ステップ８１４）。
【０２０４】
その結果、該当エントリが発見された場合は、ＵＲＬスイッチ１０５は検索されたエントリのＷｅｂサーバ１０４−１を転送先に決定する（ステップ８１５）。
【０２０５】
その後、クライアント端末１０１−１からのＳＹＮパケットを転送先サーバに送信して、クライアント端末１０１−１とＷｅｂサーバ１０４−１との間のセッションを確立する（ステップ８１６）。
【０２０６】
そして、クライアント端末１０１−１とＷｅｂサーバ１０４−１との間のセッションが切断されるまでそのセッションを中継する（ステップ８１７）。
【０２０７】
ステップ８１１でＳＹＮパケットにハッシュ値が存在しない場合、又は、ステップ８１４で該当するエントリが発見されなかった場合は、予め定められたＷｅｂサーバ１０４−１を転送先に決定する（ステップ８１８）。その後、クライアント端末１０１−１からのＳＹＮパケットを転送先サーバに送信して、クライアント端末１０１−１とＷｅｂサーバ１０４−１との間のセッションを確立する（ステップ８１６）。
【０２０８】
図２７は、第３の実施の形態のコンテンツ転送のシーケンス図である。
【０２０９】
クライアント端末１０１−１は、Ｗｅｂサーバ１０４−１との間のセッションを確立するためにＴＣＰの３−ｗａｙハンドシェイクを行う。
【０２１０】
具体的には、クライアント端末１０１−１は、Ｗｅｂサーバ１０４−１に対して、ＵＲＬのハッシュ値を埋め込んだＳＹＮパケットを送信する（図２５のステップ７１３）。ＵＲＬスイッチ１０５は、クライアント端末１０１−１からＷｅｂサーバ１０４−１に対するＳＹＮパケットを捕捉する。
【０２１１】
そして、ＵＲＬスイッチ１０５は、捕捉したＳＹＮパケットからハッシュ値を抽出し（図２６のステップ８１２）、ＳＹＮパケットの転送先を決定する（図２６のステップ８１３〜８１５、８１８）。そして、決定された転送先サーバにＳＹＮパケットを送信して（図２６のステップ８１６）、クライアント端末１０１−１とＵＲＬスイッチ１０５との間のセッション確立を要求する。
【０２１２】
ＵＲＬスイッチ１０５は、以後、クライアント端末１０１−１交換されるパケットを中継する。
【０２１３】
Ｗｅｂサーバ１０４−１は、ＳＹＮパケットを受信すると、セッションの確立が可能であれば、ＳＹＮ，ＡＣＫパケットを送信する。クライアント端末１０１−１は、ＳＹＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、クライアント端末１０１−１とＵＲＬスイッチ１０５との間のセッションが確立する。
【０２１４】
そして、クライアント端末１０１−１は、コンテンツ要求パケットを送信する。ＵＲＬスイッチ１０５は、セッションを確立したＷｅｂサーバ１０４−１に、受信したコンテンツ要求パケットを転送する。
【０２１５】
Ｗｅｂサーバ１０４−１は、コンテンツ要求パケットを受信すると、ＯＫパケットを送信する。ＵＲＬスイッチ１０５は、Ｗｅｂサーバ１０４−１が送信したＯＫパケットを、クライアント端末１０１−１に転送する。また、Ｗｅｂサーバ１０４−１は、コンテンツを送信する。
【０２１６】
その後、Ｗｅｂサーバ１０４−１は、コンテンツの送信が終了すると、ＦＩＮパケットを送信する。ＵＲＬスイッチ１０５は、Ｗｅｂサーバ１０４−１が送信したＦＩＮパケットを、クライアント端末１０１−１に転送する。
【０２１７】
クライアント端末１０１−１は、ＦＩＮパケットを受信すると、Ｗｅｂサーバ１０４−１との間のセッションを終了し、ＦＩＮ，ＡＣＫパケットを送信する。Ｗｅｂサーバ１０４−１は、ＦＩＮ，ＡＣＫパケットを受信すると、ＡＣＫパケットを送信する。このパケットの交換によって、クライアント端末１０１−１とＷｅｂサーバ１０４−１との間のセッションが終了する。
【０２１８】
以上説明したように、第３の実施の形態では、ＳＹＮパケットのＴＣＰオプション列の中に、要求するコンテンツのＵＲＬのハッシュ値を埋め込む。よって、ＵＲＬスイッチ１０５は、ＴＣＰオプション列中のハッシュ値によって、セッション確立処理の時点でストリームの転送先のサーバを決定することができる。
【０２１９】
また、ＴＣＰのヘッダの解析は、ＴＣＰストリーム内のデータに含まれるハッシュ値の抽出よりさらに単純である。よって、ＵＲＬスイッチ１０５における処理をさらに簡略にすることができる。
【図面の簡単な説明】
【０２２０】
【図１】第１の実施の形態のコンピュータシステムのブロック図である。
【図２】第１の実施の形態のクライアント端末のブロック図である。
【図３】第１の実施の形態のプロキシサーバのブロック図である。
【図４】第１の実施の形態のＵＲＬスイッチのブロック図である。
【図５】第１の実施の形態の転送先選択テーブルの説明図である。
【図６】第１の実施の形態のコンテンツ要求パケットの説明図である。
【図７】第１の実施の形態のクライアント端末のコンテンツ要求処理のフローチャートである。
【図８】第１の実施の形態のＵＲＬスイッチのセッション中継処理のフローチャートである。
【図９】第１の実施の形態のコンテンツ転送のシーケンス図である。
【図１０】第２の実施の形態のコンピュータシステムのブロック図である。
【図１１】第２の実施の形態のキャッシュサーバのブロック図である。
【図１２】第２の実施の形態のコンテンツデータベースの説明図である。
【図１３】第２の実施の形態のＵＲＬスイッチのブロック図である。
【図１４】第２の実施の形態の転送先選択テーブルの説明図である。
【図１５】第２の実施の形態のキャッシュ制御サーバのブロック図である。
【図１６】第２の実施の形態のキャッシュ所在データベースの説明図である。
【図１７】第２の実施の形態のクライアント端末からのコンテンツ要求パケットの説明図である。
【図１８】第２の実施の形態のキャッシュサーバからのコンテンツ要求パケットの説明図である。
【図１９】第２の実施の形態のキャッシュサーバのコンテンツ要求処理のフローチャートである。
【図２０】第２の実施の形態のＵＲＬスイッチのコンテンツ要求処理のフローチャートである。
【図２１】第２の実施の形態のキャッシュ制御サーバのコンテンツ要求処理のフローチャートである。
【図２２】第２の実施の形態のコンテンツ転送のシーケンス図である。
【図２３】第２の実施の形態のコンテンツ転送のシーケンス図である。
【図２４】第３の実施の形態のＴＣＰのヘッダフォーマットの説明図である。
【図２５】第３の実施の形態のクライアント端末のコンテンツ要求処理のフローチャートである。
【図２６】第３の実施の形態のＵＲＬスイッチのセッション中継処理のフローチャートである。
【図２７】第３の実施の形態のコンテンツ転送のシーケンス図である。
【符号の説明】
【０２２１】
１０１  クライアント端末
１０２  ネットワーク
１０３  プロキシ
１０４  Ｗｅｂサーバ
１０５  ＵＲＬスイッチ
１００１  キャッシュサーバ
１００２  Ｗｅｂクライアント端末
１００３、１００６、１００７  ネットワーク
１００４  ＵＲＬスイッチ
１００５  オリジンサーバ
【図１】
2006309383.tif 000003
【図２】
2006309383.tif 000004
【図３】
2006309383.tif 000005
【図４】
2006309383.tif 000006
【図５】
2006309383.tif 000007
【図６】
2006309383.tif 000008
【図７】
2006309383.tif 000009
【図８】
2006309383.tif 000010
【図９】
2006309383.tif 000011
【図１０】
2006309383.tif 000012
【図１１】
2006309383.tif 000013
【図１２】
2006309383.tif 000014
【図１３】
2006309383.tif 000015
【図１４】
2006309383.tif 000016
【図１５】
2006309383.tif 000017
【図１６】
2006309383.tif 000018
【図１７】
2006309383.tif 000019
【図１８】
2006309383.tif 000020
【図１９】
2006309383.tif 000021
【図２０】
2006309383.tif 000022
【図２１】
2006309383.tif 000023
【図２２】
2006309383.tif 000024
【図２３】
2006309383.tif 000025
【図２４】
2006309383.tif 000026
【図２５】
2006309383.tif 000027
【図２６】
2006309383.tif 000028
【図２７】
2006309383.tif 000029