(57)【要約】【課題】大規模な網に適用可能なキャッシュシステムを提供する。【解決手段】キャッシュ管理サーバは、前記キャッシュシステム内に蓄積されているコンテンツの情報を分担して管理し、前記ルータから転送されたコンテンツの要求を受信すると、前記要求されたコンテンツを蓄積している前記キャッシュサーバのうち処理負荷が最も低い第２のキャッシュサーバを選択する。前記第２のキャッシュサーバは、転送指示を受信すると、前記要求されたコンテンツを第１のキャッシュサーバへ転送する。前記第１のキャッシュサーバは、前記転送されたコンテンツを受信すると、前記受信したコンテンツを蓄積し、前記蓄積されたコンテンツの識別子及び前記第１のキャッシュサーバの識別子を、前記蓄積されたコンテンツの情報を管理するキャッシュ管理サーバへ通知する。【選択図】図１
2007233700.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１のキャッシュサーバと第２のキャッシュサーバとを含み、コンテンツを蓄積する複数のキャッシュサーバ、前記キャッシュサーバに蓄積されるコンテンツの情報を管理する複数のキャッシュ管理サーバ、前記複数のキャッシュサーバ及び前記複数のキャッシュ管理サーバの負荷情報を管理する負荷監視サーバ、及び、ユーザから要求されるコンテンツが前記キャッシュサーバに蓄積されているか否かを判断するルータを備えるキャッシュシステムであって、
前記負荷監視サーバは、前記複数のキャッシュサーバの負荷情報を取得し、前記取得した負荷情報を前記各キャッシュ管理サーバへ通知し、
前記ルータは、前記キャッシュ管理サーバによって管理されるコンテンツの情報を保持し、前記ユーザから送信されたコンテンツの要求を受信すると、前記保持されたコンテンツの情報を参照して、要求されたコンテンツの情報を管理するキャッシュ管理サーバが存在するか否かを判定し、前記要求されたコンテンツの情報を管理するキャッシュ管理サーバが存在すると、前記受信したコンテンツの要求を当該コンテンツの情報を管理するキャッシュ管理サーバへ転送し、
前記各キャッシュ管理サーバは、前記キャッシュシステム内に蓄積されているコンテンツの情報を分担して管理し、前記ルータから転送されたコンテンツの要求を受信すると、前記要求されたコンテンツを蓄積している前記キャッシュサーバのうち処理負荷が最も低い第２のキャッシュサーバを選択し、前記ユーザから送信されたコンテンツの要求を受信した第１のキャッシュサーバへ前記要求されたコンテンツを転送する指示を前記選択された第２のキャッシュサーバに送信し、
前記第２のキャッシュサーバは、前記転送指示を受信すると、前記要求されたコンテンツを前記第１のキャッシュサーバへ転送し、
前記第１のキャッシュサーバは、前記転送されたコンテンツを受信すると、前記受信したコンテンツを蓄積し、前記蓄積されたコンテンツの識別子及び前記第１のキャッシュサーバの識別子を、前記蓄積されたコンテンツの情報を管理するキャッシュ管理サーバへ通知することを特徴とするキャッシュシステム。
【請求項２】
前記負荷監視サーバは、前記複数のキャッシュ管理サーバの負荷情報を取得し、前記取得した負荷情報を前記各キャッシュサーバへ通知し、
前記各キャッシュサーバは、新たにコンテンツを蓄積すると、負荷が最小のキャッシュ管理サーバを特定し、前記蓄積されたコンテンツの識別子及び自キャッシュサーバの識別子を前記特定されたキャッシュ管理サーバへ通知することを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記負荷監視サーバは、
前記各キャッシュサーバへ、前記キャッシュ管理サーバの負荷情報と共に前記キャッシュサーバの負荷情報の要求を送信し、
各キャッシュ管理サーバへ、前記キャッシュサーバの負荷情報と共に前記キャッシュ管理サーバの負荷情報の要求を送信することを特徴とする請求項２に記載のキャッシュシステム。
【請求項４】
前記負荷監視サーバは、
前記収集したキャッシュ管理サーバの負荷情報を、マルチキャストによって、前記複数のキャッシュサーバへ通知し、
前記収集したキャッシュサーバの負荷情報を、マルチキャストによって、前記複数のキャッシュ管理サーバへ通知することを特徴とする請求項２に記載のキャッシュシステム。
【請求項５】
前記ルータは、
コンテンツの識別子と、当該コンテンツを蓄積しているキャッシュサーバの識別子を管理するキャッシュ管理サーバの識別子との関係を含むキャッシュ有無判定情報を保持し、
前記キャッシュ有無判定情報を参照して、前記要求されたコンテンツが前記キャッシュシステム内に蓄積されているか否かを判定し、
前記判定の結果、前記要求されたコンテンツが前記キャッシュシステム内に蓄積されていれば、前記要求されたコンテンツを蓄積しているキャッシュサーバの情報を管理するキャッシュ管理サーバを特定し、
前記受信したコンテンツの要求を前記特定されたキャッシュ管理サーバへ転送することを特徴とする請求項１に記載のキャッシュシステム。
【請求項６】
前記ルータは、コンテンツの識別子として、コンテンツの識別子のハッシュ値を保持するすることを特徴とする請求項５に記載のキャッシュシステム。
【請求項７】
前記キャッシュサーバは、新たにコンテンツを蓄積すると、負荷が最小のキャッシュ管理サーバを前記負荷監視サーバに問い合わせ、前記問い合わせの結果に基づいて決定された負荷が最小のキャッシュ管理サーバに、新たにコンテンツをキャッシュしたことを通知し、
前記キャッシュ管理サーバは、ユーザからコンテンツの要求を受信すると、当該コンテンツをキャッシュしているキャッシュサーバのうち負荷が最小のキャッシュサーバを前記負荷監視サーバに問い合わせ、前記問い合わせの結果に基づいて決定された負荷が最小のキャッシュサーバに、要求されたコンテンツを配信するように指示することを特徴とする請求項１に記載のキャッシュシステム。
【請求項８】
前記キャッシュサーバは、新たに蓄積されたコンテンツの情報の登録要求と、蓄積されたコンテンツの情報の削除要求とを、同一の前記キャッシュ管理サーバへ通知するときは、前記登録要求と共に前記削除要求を通知することを特徴とする請求項１に記載のキャッシュシステム。
【請求項９】
前記キャッシュ管理サーバは、新たに蓄積されたコンテンツの情報の登録要求と、蓄積されたコンテンツの情報の削除要求とを、前記ルータへ通知するときは、前記登録要求と共に前記削除要求を通知することを特徴とする請求項１に記載のキャッシュシステム。
【請求項１０】
前記第２のキャッシュサーバは、
前記受信した転送指示が含まれるパケットのヘッダを参照して、要求されたコンテンツの情報を管理するキャッシュ管理サーバの識別子を取得し、
前記要求されたコンテンツと共に、前記取得したキャッシュ管理サーバの識別子を、前記第１のキャッシュサーバへ転送することを特徴とする請求項１に記載のキャッシュシステム。
【請求項１１】
前記第１のキャッシュサーバは、
前記転送されたコンテンツと共に、前記キャッシュ管理サーバの識別子を受信すると、
前記受信したコンテンツを蓄積し、
前記蓄積されたコンテンツの識別子と前記第１のキャッシュサーバの識別子を、前記受信した識別子で特定されるキャッシュ管理サーバへ通知することを特徴とする請求項１０に記載のキャッシュシステム。
【請求項１２】
前記キャッシュ管理サーバは、前記要求されたコンテンツの前記第１のキャッシュサーバへの転送指示と共に、前記要求されたコンテンツの情報を管理するキャッシュ管理サーバの識別子を、前記第２のキャッシュサーバへ送信し、
前記第２のキャッシュサーバは、
前記受信した転送指示と共に送信された情報を参照して、要求されたコンテンツの情報を管理するキャッシュ管理サーバの識別子を取得し、
前記要求されたコンテンツと共に、前記取得したキャッシュ管理サーバの識別子を、前記第１のキャッシュサーバへ転送することを特徴とする請求項１に記載のキャッシュシステム。
【請求項１３】
前記第１のキャッシュサーバは、
前記転送されたコンテンツと共に、前記キャッシュ管理サーバの識別子を受信すると、
前記受信したコンテンツを蓄積し、
前記蓄積されたコンテンツの識別子と前記第１のキャッシュサーバの識別子を、前記受信した識別子で特定されるキャッシュ管理サーバへ通知することを特徴とする請求項１２に記載のキャッシュシステム。
【請求項１４】
コンテンツを蓄積する複数のキャッシュサーバ、前記キャッシュサーバに蓄積されるコンテンツの情報を管理する複数のキャッシュ管理サーバ、前記複数のキャッシュサーバ及び前記複数のキャッシュ管理サーバの負荷情報を管理する負荷監視サーバ、及び、ユーザから要求されるコンテンツが前記キャッシュサーバに蓄積されているか否かを判断するルータを備えるキャッシュシステムに用いられる負荷監視サーバであって、
前記複数のキャッシュサーバの負荷情報を取得し、前記取得した負荷情報を前記各キャッシュ管理サーバへ通知し、
前記複数のキャッシュ管理サーバの負荷情報を取得し、前記取得した負荷情報を前記各キャッシュサーバへ通知することを特徴とする負荷監視サーバ。
【請求項１５】
前記各キャッシュサーバへ、前記キャッシュ管理サーバの負荷情報と共に前記キャッシュサーバの負荷情報の要求を送信し、
各キャッシュ管理サーバへ、前記キャッシュサーバの負荷情報と共に前記キャッシュ管理サーバの負荷情報の要求を送信することを特徴とする請求項１４に記載の負荷監視サーバ。
【請求項１６】
コンテンツを蓄積する複数のキャッシュサーバ、前記キャッシュサーバに蓄積されるコンテンツの情報を管理する複数のキャッシュ管理サーバ、前記複数のキャッシュサーバ及び前記複数のキャッシュ管理サーバの負荷情報を管理する負荷監視サーバ、及び、ユーザから要求されるコンテンツが前記キャッシュサーバに蓄積されているか否かを判断するルータを備えるキャッシュシステムに用いられるキャッシュ管理サーバであって、
前記キャッシュシステム内に蓄積されているコンテンツの情報を分担して管理し、
前記ルータから転送されたコンテンツの要求を受信すると、前記負荷監視サーバから取得した情報に基づいて、前記要求されたコンテンツを蓄積している前記キャッシュサーバのうち最も処理負荷が低いキャッシュサーバを選択し、
前記ユーザから送信されたコンテンツの要求を受信したキャッシュサーバへ前記要求されたコンテンツを転送する指示を前記選択されたキャッシュサーバに送信することを特徴とするキャッシュ管理サーバ。
【請求項１７】
コンテンツを蓄積する複数のキャッシュサーバ、前記キャッシュサーバに蓄積されるコンテンツの情報を管理する複数のキャッシュ管理サーバ、前記複数のキャッシュサーバ及び前記複数のキャッシュ管理サーバの負荷情報を管理する負荷監視サーバ、及び、ユーザから要求されるコンテンツが前記キャッシュサーバに蓄積されているか否かを判断するルータを備えるキャッシュシステムに用いられるキャッシュサーバであって、
新たにコンテンツを蓄積すると、前記負荷監視サーバから取得した情報に基づいて、負荷が最小のキャッシュ管理サーバを特定し、
前記蓄積されたコンテンツの識別子及び自キャッシュサーバの識別子を前記特定されたキャッシュ管理サーバへ通知することを特徴とするキャッシュサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク内に複数のキャッシュサーバを備えたキャッシュシステムに関し、特に、複数のキャッシュサーバが連携して要求されたコンテンツを配信する技術に関する。
【背景技術】
【０００２】
あるユーザが一度要求したコンテンツを蓄積（キャッシュ）し、同一のコンテンツの要求があった場合、前記キャッシュしたコンテンツを配信することによって、少ない遅延時間でユーザが要求したコンテンツを配信可能なキャッシュシステムが知られている。
【０００３】
また、大規模網向けのキャッシュシステムとして、非特許文献１に記載されたキャッシュ連携ルータを用いた分散キャッシュシステムが知られている。この公知のキャッシュシステムは、複数のキャッシュサーバの他、システム内に要求されたコンテンツが存在するか否かのキャッシュヒット判定を行うキャッシュ連携ルータと、コンテンツが実際にキャッシュされているキャッシュサーバを管理するキャッシュ制御サーバとを備える。このキャッシュシステムでは、ユーザから要求されたコンテンツがシステム内にキャッシュされている場合、キャッシュサーバ間でコンテンツを転送し、少ない遅延時間でユーザへコンテンツを配信する。
【非特許文献１】片岡他，“大規模網向け分散キャッシュシステム”，電子情報通信学会  ２００５年ソサイエティ大会、Ｂ−６−１０３，２００５年９月
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述した従来のシステムにおいて、キャッシュ連携ルータは、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）の固定長のハッシュ値に基づいて、コンテンツがキャッシュされているか否かを判定している。一方、キャッシュ制御サーバでは、可変長のＵＲＬに基づいて実際にコンテンツをキャッシュしているキャッシュサーバを判定している。そのため、コンテンツ要求数が増加すると、可変長のＵＲＬデータを処理しているキャッシュ制御サーバが、キャッシュ連携ルータより先に律速する。よって、従来技術の構成では、さらなる大規模化への対応が困難である。
【０００５】
一方、従来のキャッシュシステムでは、キャッシュ連携ルータよりキャッシュ制御サーバが先に律速するため、一台のキャッシュ連携ルータに対して、キャッシュを管理する複数のキャッシュ管理サーバを接続することによって、大規模なシステムを実現することが考えられる。しかし、特定のキャッシュ管理サーバに負荷が集中し、そのキャッシュ管理サーバの処理能力によってシステム全体の処理能力が決定される場合がある。
【０００６】
そこで本発明では、キャッシュを管理する複数のキャッシュ管理サーバを導入でき、前述した従来のキャッシュシステムより、さらに大規模な網に適用可能なキャッシュシステムを提供することを目的とする。
【０００７】
また本発明の他の目的は、導入された複数のキャッシュ管理サーバのうち、特定のキャッシュ管理サーバに負荷が集中しないようにリソースを制御することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の代表的な一形態によると、キャッシュシステムは、少なくとも第１のキャッシュサーバと第２のキャッシュサーバとを含み、コンテンツを蓄積する複数のキャッシュサーバ、前記キャッシュサーバに蓄積されるコンテンツの情報を管理する複数のキャッシュ管理サーバ、前記複数のキャッシュサーバ及び前記複数のキャッシュ管理サーバの負荷情報を管理する負荷監視サーバ、及び、ユーザから要求されるコンテンツが前記キャッシュサーバに蓄積されているか否かを判断するルータを備える。前記負荷監視サーバは、前記複数のキャッシュサーバの負荷情報を取得し、前記取得した負荷情報を前記各キャッシュ管理サーバへ通知する。また、前記負荷監視サーバは、前記複数のキャッシュ管理サーバの負荷情報を取得し、前記取得した負荷情報を前記各キャッシュサーバへ通知する。前記第１のキャッシュサーバは、前記ユーザから送信されたコンテンツをキャッシュしていない場合、そのコンテンツ要求を前記ルータに転送する。前記ルータは、前記キャッシュ管理サーバによって管理されるコンテンツの情報を保持し、前記転送されたコンテンツの要求を受信すると、前記保持されたコンテンツの情報を参照して、要求されたコンテンツの情報を管理するキャッシュ管理サーバが存在するか否かを判定し、前記要求されたコンテンツの情報を管理するキャッシュ管理サーバが存在すると、前記受信したコンテンツの要求を当該コンテンツの情報を管理するキャッシュ管理サーバへ転送する。前記各キャッシュ管理サーバは、前記キャッシュシステム内に蓄積されているコンテンツの情報を分担して管理し、前記ルータから転送されたコンテンツの要求を受信すると、前記要求されたコンテンツを蓄積している前記キャッシュサーバのうち処理負荷が最も低い第２のキャッシュサーバを選択し、前記第１のキャッシュサーバへ前記要求されたコンテンツを転送する指示を前記選択された第２のキャッシュサーバに送信する。前記第２のキャッシュサーバは、前記転送指示を受信すると、前記要求されたコンテンツを前記第１のキャッシュサーバへ転送する。前記第１のキャッシュサーバは、前記転送されたコンテンツを受信すると、前記受信したコンテンツを蓄積し、前記蓄積されたコンテンツの識別子と前記第１のキャッシュサーバの識別子を、前記蓄積されたコンテンツの情報を管理するキャッシュ管理サーバのうち、負荷が最小のキャッシュ管理サーバへ通知する。
【発明の効果】
【０００９】
本発明の一形態によれば、新しくコンテンツをキャッシュしたキャッシュサーバは、負荷が最小のキャッシュ管理サーバにコンテンツをキャッシュしたことを登録することにより、キャッシュ管理サーバの負荷を平滑化することができ、キャッシュシステムのリソースを最大限に利用可能な分散キャッシュシステムを提供することができる。
【発明を実施するための最良の形態】
【００１０】
次に、本発明の実施の形態を、図面を参照して説明する。
【００１１】
（第１の実施の形態）
第１の実施の形態の分散キャッシュシステムでは、新たにコンテンツをキャッシュしたキャッシュサーバは、負荷が最小のキャッシュ管理サーバにコンテンツをキャッシュしたことを登録する。
【００１２】
図１は、第１の実施の形態の分散キャッシュシステムの構成の一例を示すブロック図である。
【００１３】
第１の実施の形態の分散キャッシュシステムは、オリジンサーバ１、コア網２、アクセス網１０及び複数のユーザ端末１５−１〜１５−４を備える。
【００１４】
オリジンサーバ１は、その詳細な構成の図示は省略するが、ＣＰＵ部、プログラム蓄積部（ＲＯＭ）、メインメモリ（ＲＡＭ）、ディスクメモリ（ハードディスクドライブ）及び入出力部（インターフェース）を備えるコンピュータであり、ディスクメモリに格納されているオリジナルコンテンツを、ユーザ端末からの要求に従って提供する。また、オリジンサーバ１は、コア網２に接続される。一方、ユーザ端末１５−１等は、アクセス網１０に接続される。
【００１５】
アクセス網１０は、負荷監視サーバ１２、ルータ１３−１〜１３−２、キャッシュサーバ１４−１〜１４−２、ＣＤＮ（Ｃｏｎｔｅｎｔｓ  Ｄｅｌｉｖｅｒｙ  Ｎｅｔｗｏｒｋ）連携ルータ１６及びキャッシュ管理サーバ１７−１〜１７−２を備える。
【００１６】
キャッシュサーバ１４−１及び１４−２は、図３に示すように、ＣＰＵ部１４１、プログラム蓄積部１４２、メインメモリ１４３、ディスクメモリ１４４、入力部１４５、出力部１４６及びバス１４７を備えるコンピュータである。キャッシュサーバ（Ａ）１４−１は、オリジンサーバ１からコンテンツを受信してユーザ端末に配信する際、受信したコンテンツをディスクメモリ１４４に蓄積（キャッシュ）する。
【００１７】
負荷監視サーバ１２は、キャッシュサーバ（Ａ）１４−１（図３）と同じ構成を備えるコンピュータである。
【００１８】
ルータ１３−１〜１３−２は、その詳細な構成の図示は省略するが、入出力部およびパケット処理部を備えるデータ転送装置である。
【００１９】
ＣＤＮ連携ルータ１６は、図６に示すように、ＣＰＵ部１６１、プログラム蓄積部１６２、メインメモリ１６３、ディスクメモリ１６４、入力部５−１〜５−６、出力部６−１〜６−６、バス１６７及びスイッチ１６８を備えるデータ転送装置である。
【００２０】
キャッシュ管理サーバ１７−１及び１７−２は、キャッシュサーバ（Ａ）１４−１（図３）と同じ構成を備えるコンピュータである。
【００２１】
ユーザ端末１５−１〜１５−４は、その詳細な構成の図示は省略するが、ＣＰＵ部、プログラム蓄積部、メインメモリ、ディスクメモリ及び入出力部を備えるコンピュータである。ユーザは、ユーザ端末１５−１等を使用してコンテンツを要求する。
【００２２】
次に、図２を参照して、第１の実施形態の分散キャッシュシステムの動作を説明する。
【００２３】
例として、ユーザ端末（Ａ）１５−１が、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）がｈｔｔｐ：／／ｗｗｗ．１２３．ｃｏ．ｊｐ／ｃｏｎｔｅｎｔ．ｈｔｍｌであるコンテンツを取得し、その後、別のユーザ端末（Ｃ）１５−３が同一ＵＲＬのコンテンツを取得する場合のキャッシュシステムの動作を説明する。
【００２４】
なお、上記ＵＲＬで特定されるコンテンツは、ユーザ端末（Ａ）１５−１が要求する以前には、何れのキャッシュサーバにもキャッシュされていない。また、キャッシュシステムの動作開始時は、各サーバの負荷情報は、所定の初期値（例えば、ＣＰＵ負荷＝”０”）で初期化されている。
【００２５】
始めに、負荷監視サーバ１２は、キャッシュ管理サーバ（Ａ）１７−１に負荷状態を通知するように要求する。このとき、負荷監視サーバ１２は、システム内の全てのキャッシュサーバの負荷状態を、キャッシュ管理サーバ（Ａ）１７−１に通知する（９０１）。送受信される負荷状態は、例えば、各サーバのＣＰＵの負荷状態を用いることができる。
【００２６】
次に、キャッシュ管理サーバ（Ａ）１７−１は、負荷監視サーバ１２から伝達されたキャッシュサーバの負荷情報を用いて、保持しているキャッシュサーバの負荷情報を更新する。そして、キャッシュ管理サーバ（Ａ）１７−１は、自身の負荷情報を負荷監視サーバ１２に返信する（９０２）。
【００２７】
負荷監視サーバ１２は、キャッシュ管理サーバ（Ａ）１７−１から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（９０３）。
【００２８】
同様に、負荷監視サーバ１２は、キャッシュ管理サーバ（Ｂ）１７−２に負荷状態を通知するように要求し、システム内の全てのキャッシュサーバの負荷状態を通知する（９０４）。キャッシュ管理サーバ（Ｂ）１７−２は、負荷監視サーバ１２から伝達されたキャッシュサーバの負荷情報を用いて、保持されているキャッシュサーバの負荷情報を更新し、自身の負荷情報を負荷監視サーバ１２に返信する（９０５）。
【００２９】
負荷監視サーバ１２は、キャッシュ管理サーバ（Ｂ）１７−２から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（９０６）。
【００３０】
また、負荷監視サーバ１２は、キャッシュサーバ（Ａ）１４−１に負荷状態を通知するように要求し、システム内の全てのキャッシュ管理サーバの負荷状態を通知する（９０７）。キャッシュサーバ（Ａ）１４−１は、負荷監視サーバ１２から伝達されたキャッシュ管理サーバの負荷情報を用いて、保持されているキャッシュ管理サーバの負荷情報を更新し、自身の負荷情報を負荷監視サーバ１２に返信する（９０８）。
【００３１】
負荷監視サーバ１２は、キャッシュサーバ（Ａ）１４−１から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（９０９）。
【００３２】
同様に、負荷監視サーバ１２は、キャッシュサーバ（Ｂ）１４−２に負荷状態を通知するように要求し、システム内の全てのキャッシュ管理サーバの負荷状態を通知する（９１０）。キャッシュサーバ（Ｂ）１４−２は、負荷監視サーバ１２から伝達されたキャッシュ管理サーバの負荷情報を用いて、保持されているキャッシュ管理サーバの負荷情報を更新し、自身の負荷情報を負荷監視サーバ１２に返信する（９１１）。
【００３３】
負荷監視サーバ１２は、キャッシュサーバ（Ｂ）１４−２から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（９１２）。
【００３４】
前述した９０１〜９１２の処理は、定期的（例えば、１分毎）に実行される。
【００３５】
続いて、ユーザ端末（Ａ）１５−１が、キャッシュサーバ（Ａ）１４−１へ前述した同じＵＲＬのコンテンツ（ｈｔｔｐ：／／ｗｗｗ．１２３．ｃｏ．ｊｐ／ｃｏｎｔｅｎｔ．ｈｔｍｌ）要求を送信する（９２０）。
【００３６】
キャッシュサーバ（Ａ）１４−１は、ユーザ端末（Ａ）１５−１から要求されたコンテンツを自分でキャッシュしているか否かを判定する。この時点において、キャッシュサーバ（Ａ）１４−１は、ユーザ端末（Ａ）１５−１から要求されたコンテンツをキャッシュしていないため、オリジンサーバ１へ当該コンテンツ要求を送信する（９２１）。
【００３７】
ＣＤＮ連携ルータ１６は、キャッシュサーバ（Ｂ）１４−２からオリジンサーバ１へ送信されたコンテンツ要求を中継する際に、要求されたコンテンツがキャッシュシステム内にキャッシュされているか否かを判定する（９２２）。この判定時には、要求されたコンテンツがシステム内にキャッシュされていないので、ＣＤＮ連携ルータ１６は、ミスヒットと判定して、キャッシュサーバ（Ａ）１４−１からオリジンサーバ１へ送信されたコンテンツ要求を送信する（９２３）。なお、キャッシュヒットの場合の動作については、後述する（９５２）。
【００３８】
オリジンサーバ１は、コンテンツ要求を受信すると、要求されたコンテンツを、ＣＤＮ連携ルータ１６を経由してキャッシュサーバ（Ａ）１４−１へ送信する。ＣＤＮ連携ルータ１６は、要求されたコンテンツをオリジンサーバ１から受信すると、キャッシュサーバ（Ａ）１４−１へ転送する（９２４、９２５）。
【００３９】
キャッシュサーバ（Ａ）１４−１は、オリジンサーバ１から送信されたコンテンツのデータを受信する。オリジンサーバ１から送信されたコンテンツのデータは、キャッシュサーバ（Ａ）１４−１にキャッシュされていないので、キャッシュサーバ（Ａ）１４−１は、受信したコンテンツのデータをキャッシュする（９２６）。そして、キャッシュサーバ（Ａ）１４−１は、受信したコンテンツのデータを、当該コンテンツを要求したユーザ端末（Ａ）１５−１へ送信する（９２７）。
【００４０】
さらに、キャッシュサーバ（Ａ）１４−１は、ユーザ端末（Ａ）１５−１が要求したコンテンツをキャッシュしたことを登録するため、キャシュサーバ（Ａ）１４−１に設けられたディスクメモリ１４４に保持されたキャッシュ管理サーバの負荷情報テーブルから、負荷が最小であるキャッシュ管理サーバを検索する（９３０）。
【００４１】
本実施の形態では、キャッシュ管理サーバ（Ａ）１７−１の負荷が最小であるとする。それ故、キャッシュサーバ（Ａ）１４−１は、キャッシュしたコンテンツの識別子（例えば、本実施の形態ではＵＲＬ）と、当該コンテンツをキャッシュしたキャッシュサーバの識別子（例えば、本実施の形態ではＩＰアドレス）を、負荷が最小であるキャッシュ管理サーバ（Ａ）１７−１へ送信して、キャッシュサーバ（Ａ）１４−１が当該コンテンツをキャッシュしたことを通知する。さらに、当該コンテンツをキャッシュしたキャッシュサーバの識別子を、キャッシュ管理サーバ（Ａ）１７−１が管理していることを保持する（９３１）。
【００４２】
キャッシュ管理サーバ（Ａ）１７−１は、キャッシュサーバ（Ａ）１４−１から送信された、キャッシュコンテンツの識別子と当該コンテンツをキャッシュしたキャッシュサーバの識別子を受信すると、受信した識別子で特定されるコンテンツが新たなキャッシュ情報か否かを判定する（９３２）。ここで、受信した識別子は新たなコンテンツに関する情報であるため、キャッシュ管理サーバ（Ａ）１７−１は、新たに蓄積されたコンテンツの識別子と当該コンテンツをキャッシュしたキャッシュサーバの識別子とのペアをキャッシュコンテンツ管理テーブル４００（図９参照）に保持する（９３３）。
【００４３】
また、キャッシュ管理サーバ（Ａ）１７−１は、キャッシュされたコンテンツの識別子のハッシュ値と、当該コンテンツをキャッシュしたキャッシュサーバを管理するキャッシュ管理サーバの識別子を、ＣＤＮ連携ルータ１６に送信する（９３４）。
【００４４】
ＣＤＮ連携ルータ１６は、キャッシュ管理サーバ（Ａ）１７−１から送信された、キャッシュコンテンツ識別子のハッシュ値と、当該コンテンツをキャッシュしたキャッシュサーバを管理するキャッシュ管理サーバの識別子とのペアを、キャッシュ有無判定テーブル３００（図７参照）に保持する（９３５）。
【００４５】
次に、前述した処理の完了後に、ユーザ端末（Ｃ）１５−３が、前述したコンテンツと同一のコンテンツ、すなわち、ｈｔｔｐ：／／ｗｗｗ．１２３．ｃｏ．ｊｐ／ｃｏｎｔｅｎｔ．ｈｔｍｌで示されるコンテンツを要求した場合の動作シーケンスを説明する。
【００４６】
まず、ユーザ端末（Ｃ）１５−３が、キャッシュサーバ（Ｂ）１４−２へ当該ＵＲＬのコンテンツ（ｈｔｔｐ：／／ｗｗｗ．１２３．ｃｏ．ｊｐ／ｃｏｎｔｅｎｔ．ｈｔｍｌ）要求を送信する（９５０）。
【００４７】
キャッシュサーバ（Ｂ）１４−２は、ユーザ端末（Ｃ）１５−３から要求されたコンテンツをキャッシュしているか否かを判定する。このとき、キャッシュサーバ（Ｂ）１４−２は、ユーザ端末（Ｃ）１５−３から要求されたコンテンツをキャッシュしていないため、オリジンサーバ１へ当該コンテンツ要求を送信する（９５１）。
【００４８】
ＣＤＮ連携ルータ１６は、キャッシュサーバ（Ｂ）１４−２からオリジンサーバ１へ送信されたコンテンツ要求を中継する際に、要求されたコンテンツがキャッシュシステム内にキャッシュされているか否かを判定する（９５２）。この判定時に、当該コンテンツがシステム内（キャッシュサーバ（Ａ）１４−１）にキャッシュされているので、ＣＤＮ連携ルータ１６は、キャッシュヒットと判定し、キャッシュサーバ（Ｂ）１４−２からオリジンサーバ１へ送信されたコンテンツ要求を転送しない。
【００４９】
続いて、ＣＤＮ連携ルータ１６は、キャッシュヒットと判定したので、前記キャッシュ有無判定テーブル３００より、当該コンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバを検索する。そして、検索結果に基づいて特定されたキャッシュ管理サーバ（Ａ）１７−１へ、前記受信したコンテンツ要求を送信する（９５３）。
【００５０】
キャッシュ管理サーバ（Ａ）１７−１は、ＣＤＮ連携ルータ１６から送信されたコンテンツ要求を受信すると、キャッシュコンテンツ管理テーブル４００から受信したコンテンツをキャッシュしているキャッシュサーバを検索する。受信したコンテンツを複数のキャッシュサーバがキャッシュしている場合は、処理負荷が最小のキャッシュサーバが選択される。ここでは、キャッシュサーバ（Ａ）１４−１が選択される（９５４）。
【００５１】
そして、キャッシュ管理サーバ（Ａ）１７−１は、キャッシュサーバ（Ａ）１４−１に対して、当該コンテンツをキャッシュサーバ（Ｂ）１４−２に送信するように指示する（９５５）。
【００５２】
キャッシュサーバ（Ａ）１４−１は、キャッシュ管理サーバ（Ａ）１７−１からの当該コンテンツ転送指示を受信すると、受信したコンテンツ転送指示によって特定されるコンテンツをキャッシュサーバ（Ｂ）１４−２に送信する。また、この時、受信したコンテンツ転送指示によって特定されるコンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバが、キャッシュ管理サーバ（Ａ）１７−１であることを示す識別子も合わせてキャッシュサーバ（Ｂ）１４−２に送信する（９５６）。
【００５３】
本実施例では、キャッシュサーバ（Ａ）１４−１は、キャッシュ管理サーバ（Ａ）１７−１からの当該コンテンツ転送指示データを伝送したＩＰパケットに含まれる送信元アドレスに基づいて、前記当該コンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバが、キャッシュ管理サーバ（Ａ）１７−１であることを特定する。また別の方法として、キャッシュ管理サーバ（Ａ）１７−１が、当該コンテンツ転送指示データを送信する際、当該コンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバを示す情報をあわせて送信することにより、キャッシュ管理サーバ（Ａ）１７−１を特定してもよい。
【００５４】
キャッシュサーバ（Ｂ）１４−２は、キャッシュサーバ（Ａ）１４−１から受信したコンテンツをキャッシュする（９５７）。その後、キャッシュサーバ（Ｂ）１４−２は、受信したコンテンツを要求元のユーザ端末（Ｃ）１５−３に送信する（９５８）。
【００５５】
さらに、キャッシュサーバ（Ｂ）１４−２は、当該コンテンツの識別子とキャッシュサーバ（Ｂ）１４−２の識別子を、キャッシュ管理サーバ（Ａ）１７−１へ送信して、当該コンテンツをキャッシュしたキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバ（Ａ）へ、キャッシュサーバ（Ｂ）１４−２も当該コンテンツをキャッシュしたことを通知する。また、キャッシュサーバ（Ｂ）１４−２は、当該コンテンツをキャッシュしたキャッシュサーバの識別子を、キャッシュ管理サーバ（Ａ）１７−１が管理していることを保持する（９５９）。
【００５６】
キャッシュ管理サーバ（Ａ）１７−１は、キャッシュサーバ（Ｂ）１４−２から当該コンテンツの識別子とキャッシュサーバ（Ｂ）１４−２の識別子を受信すると、キャッシュコンテンツ管理テーブル４００を参照して、当該コンテンツが既にキャッシュされているか否かを判定する（９６０）。
【００５７】
この時点において、既に当該コンテンツはキャッシュサーバ（Ａ）１４−１にてキャッシュされていることが登録されているので、当該コンテンツをキャッシュサーバ（Ｂ）１４−２もキャッシュしたことを、キャッシュコンテンツ管理テーブル４００に登録する（９６１）。なお、当該コンテンツがキャッシュシステム内にキャッシュされていることは既にＣＤＮ連携ルータ１６に登録されているので、あらたな登録処理は実行されない。
【００５８】
次に、キャッシュサーバ１４−１〜１４−２の構成及び動作を説明する。
【００５９】
図３は、第１の実施の形態のキャッシュサーバ（Ａ）１４−１の構成を示すブロック図である。
【００６０】
キャッシュサーバ（Ａ）１４−１は、前述したように、ＣＰＵ部１４１、プログラム蓄積部１４２、メインメモリ１４３、ディスクメモリ１４４、入力部１４５、出力部１４６及びバス１４７を備える。
【００６１】
ＣＰＵ部１４１は、キャッシュサーバの動作に必要な演算処理をするプロセッサ、及びプロセッサによって実行される演算処理に必要なプログラムとデータを一時的に保持するＲＡＭを含む。プログラム蓄積部１４２は、ＲＯＭを含み、ＣＰＵ部１４１で実行されるキャッシュサーバプログラムを蓄積する。メインメモリ１４３は、ＲＡＭを含み、ＣＰＵ部１４１で実行される演算処理に必要なデータを一時的に保持する。
【００６２】
ディスクメモリ１４４は、ハードディスクドライブを含み、ユーザ端末に配信されるコンテンツを格納する。具体的には、ディスクメモリ１４４は、キャッシュされたコンテンツ及びキャッシュ管理サーバの負荷情報テーブル（図４参照）を保持する。
【００６３】
入力部１４５及び出力部１４６は、アクセス網１０に接続されるネットワークインターフェースであり、ＩＰパケットを送受信する。バス１４７は、データバス及びアドレスバスを含み、ＣＰＵ部１４１、プログラム蓄積部１４２、メインメモリ１４３、ディスクメモリ１４４、入力部１４５及び出力部１４６を接続して、相互にデータを転送する。
【００６４】
図３には、キャッシュサーバ（Ａ）１４−１の構成を図示したが、キャッシュサーバ（Ｂ）１４−２もキャッシュサーバ（Ａ）１４−１と同じ構成を備え、同様に動作する。
【００６５】
図４は、第１の実施の形態のキャッシュ管理サーバ負荷情報テーブル２００の構成図である。
【００６６】
キャッシュ管理サーバ負荷情報テーブル２００は、キャッシュサーバに設けられたディスクメモリ１４４に保持される。負荷情報テーブル２００には、キャッシュ管理サーバの識別子２０２とＣＰＵの負荷情報２０３とをペアにした複数のエントリ２０１が含まれる。キャッシュ管理サーバの識別子２０２は、キャッシュ管理サーバに付された一意の識別子であり、本実施の形態では、ＩＰアドレスの他、キャッシュ管理サーバ名が含まれている。ＣＰＵの負荷情報２０３は、キャッシュ管理サーバ識別子２０２で特定されるキャッシュ管理サーバに備わるＣＰＵの負荷状態を１００分率で表したもので、１００％が最も負荷が高いことを意味する。
【００６７】
例えば、キャッシュ管理サーバ付加情報テーブル２００には、エントリ２０４に示されるように、ＩＰアドレスが１９２．１６８．３．３０であるキャッシュ管理サーバ（Ａ）１７−１のＣＰＵ負荷が３０％であることが記憶されている。
【００６８】
次に、キャッシュサーバ（Ａ）１４−１の動作を図５を参照して説明する。なお、キャッシュサーバ（Ａ）１４−１の動作を説明するが、キャッシュサーバ（Ｂ）１４−２もキャッシュサーバ（Ａ）１４−１と同じ動作をする。
【００６９】
図５は、第１の実施の形態のキャッシュサーバプログラムの動作を示すフローチャートである。
【００７０】
始めに、キャッシュサーバ（Ａ）１４−１は、プログラム蓄積部１４２に保持された処理プログラムをＣＰＵ部１４１にロードし、キャッシュサーバとして動作するための処理を開始する（ステップ２１０）。すなわち、ＣＰＵ部１４１がキャッシュサーバプログラムを実行することによって、以下に説明する処理が行われる。
【００７１】
キャッシュサーバ（Ａ）１４−１がキャッシュサーバとして動作を開始すると、ＩＰパケットデータを受信したか否かを判断する（ステップ２１１）。
【００７２】
ステップ２１１において、ＩＰパケットを受信していないと判断すると、引き続きステップ２１１の処理を繰り返す。一方、ステップ２１１において、ＩＰパケットデータを受信したと判断すると、受信データが負荷監視サーバ１２から送信されたデータか否かを判断する（ステップ２１２）。
【００７３】
ステップ２１２において、受信データが負荷監視サーバ１２から送信されたデータであると判断すると、受信データはキャッシュ管理サーバの負荷情報又はキャッシュサーバの負荷を要求するコマンドなので、受信したキャッシュ管理サーバの負荷情報を、ディスクメモリ１４３に保持されるキャッシュ管理サーバ負荷情報テーブル２００に登録する（ステップ２１３）。その後、自キャッシュサーバのＣＰＵの負荷を測定し、負荷監視サーバ１２へ送信する（ステップ２１４）。その後、ステップ２１１に戻り、引き続き処理を実行する。
【００７４】
一方、ステップ２１２において、受信データが負荷監視サーバ１２から送信されたデータではないと判断すると、ユーザ端末から送信されたデータであるか否かを判断する（ステップ２１５）。
【００７５】
ステップ２１５において、受信データがユーザ端末から送信されたデータであると判断すると、受信データはコンテンツ要求なので、ユーザ端末から要求されたコンテンツをキャッシュしているか否かを判断する（ステップ２１６）。ステップ２１６において、当該コンテンツをキャッシュしていると判断すると、キャッシュした当該コンテンツをユーザ端末へ送信する（ステップ２１７）。その後、ステップ２１１に戻り、引き続き処理を実行する。
【００７６】
一方、ステップ２１６において、当該コンテンツをキャッシュしていないと判断すると、オリジンサーバ１に当該コンテンツの要求を送信する（ステップ２１８）。その後、ステップ２１１に戻り、引き続き処理を実行する。
【００７７】
また、ステップ２１５において、受信データがユーザ端末から送信されたデータではないと判断すると、受信データがオリジンサーバ１から送信されたデータであるか否かを判断する（ステップ２１９）。
【００７８】
ステップ２１９において、受信データがオリジンサーバ１から送信されたデータであると判断すると、受信データはユーザ端末から要求されたコンテンツのデータなので、受信したコンテンツのデータをキャッシュし（ステップ２２０）、受信したコンテンツのデータをユーザ端末へ送信する（ステップ２２１）。さらに、キャッシュ管理サーバ負荷情報テーブル２００から負荷が最小であるキャッシュ管理サーバを検索し（ステップ２２２）、キャッシュしたコンテンツ識別子及び自キャッシュサーバの識別子を、前記検索の結果得られたキャッシュ管理サーバへ送信する（ステップ２２３）。その後、ステップ２１１に戻り、引き続き処理を実行する。
【００７９】
一方、ステップ２１９において、オリジンサーバ１から送信されたデータではないと判断すると、受信データが他のキャッシュサーバから送信されたデータであるか否かを判断する（ステップ２２４）。
【００８０】
ステップ２２４において、受信データが他のキャッシュサーバから送信されたデータであると判断すると、受信データはユーザ端末から要求されたコンテンツのデータなので、受信したコンテンツをキャッシュし（ステップ２２５）、受信したコンテンツをユーザ端末へ送信する（ステップ２２６）。さらに、キャッシュしたコンテンツの識別子と自キャッシュサーバの識別子を、当該コンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバへ送信する（ステップ２２７）。その後、ステップ２１１に戻り、引き続き処理を実行する。
【００８１】
一方、ステップ２２４において、受信データが他のキャッシュサーバから送信されたデータではないと判断すると、受信データがキャッシュ管理サーバから送信されたデータであるか否かを判断する（ステップ２２８）。
【００８２】
ステップ２２８において、受信データがキャッシュ管理サーバから送信されたデータであると判断すると、受信データはコンテンツの転送要求なので、キャッシュ管理サーバから送信されたデータに含まれる識別子で特定されるコンテンツをユーザ端末へ送信する（ステップ２２９）。その後、ステップ２１１に戻り、引き続き処理を実行する。
【００８３】
一方、ステップ２２８において、受信データがキャッシュ管理サーバから送信されたデータではないと判断すると、受信データはキャッシュサーバでは処理できないデータなので、受信データを破棄し、ステップ２１１に戻り、引き続き処理を実行する。
【００８４】
次に、ＣＤＮ連携ルータ１６の構成及び動作を説明する。
【００８５】
図６は、第１の実施の形態のＣＤＮ連携ルータ１６の構成を示すブロック図である。
【００８６】
ＣＤＮ連携ルータ１６は、ＣＰＵ部１６１、プログラム蓄積部１６２、メインメモリ１６３、ディスクメモリ１６４、入力部５−１〜５−６、出力部６−１〜６−６、バス１６７及びスイッチ１６８を備える。
【００８７】
ＣＰＵ部１６１は、ＣＤＮ連携ルータ１６の動作に必要なデータ処理をするプロセッサ、及びプロセッサによって実行される演算処理に必要なプログラムとデータを一時的に保持するＲＡＭを含む。プログラム蓄積部１６２は、ＲＯＭを含み、ＣＰＵ部１６１で実行されるプログラム（特に、ＣＤＮ連携ルータプログラム）を蓄積する。
【００８８】
メインメモリ１６３は、ＲＡＭを含み、ＣＰＵ部１６１で実行されるデータ処理に必要なデータを一時的に保持する。ディスクメモリ１６４は、ハードディスクドライブを含み、コンテンツの転送に必要な情報（例えば、キャッシュコンテンツのリスト、キャッシュ有無判定テーブル（図７参照））を格納する。
【００８９】
入力部５−１〜５−６及び出力部６−１〜６−６は、スイッチ１６８に接続されており、アクセス網１０に接続されるネットワークインターフェースである。バス１６７は、データバス及びアドレスバスを含み、ＣＰＵ部１６１、プログラム蓄積部１６２、メインメモリ１６３及びディスクメモリ１６４を接続して、相互にデータを転送する。
【００９０】
スイッチ１６８は、入力部５−１〜５−６から入力されたパケットの宛先に対応する出力部６−１〜６−６に出力する。
【００９１】
図７は、第１の実施の形態のキャッシュ有無判定テーブル３００の構成図である。
【００９２】
このキャッシュ有無判定テーブル３００は、ＣＤＮ連携ルータ１６に設けられたディスクメモリ１６４に保持される。
【００９３】
キャッシュ有無判定テーブル３００は、キャッシュサーバに設けられたディスクメモリ１６４に保持される。キャッシュ有無判定テーブル３００には、コンテンツ識別子のハッシュ値３０２と、キャッシュ管理サーバの識別子３０３とをペアにした複数のエントリ３０１が含まれる。コンテンツ識別子のハッシュ値３０２は、システム内にキャッシュしたコンテンツ識別子のハッシュ値である。コンテンツの識別子としてコンテンツの所在を示すＵＲＬが用いられる。キャッシュ管理サーバの識別子３０３は、キャッシュ管理サーバに付された一意の識別子であり、本実施の形態では、ＩＰアドレスの他、キャッシュ管理サーバ名が含まれている。
【００９４】
例えば、キャッシュ有無判定テーブル３００には、エントリ３０４に示されるように、ハッシュ値が０ｘＡ１Ｂ１Ｃ１Ｄ１で識別されるコンテンツを実際にキャッシュしているサーバを検索する場合、キャッシュ管理サーバ（Ａ）１７−１に問い合わせる必要があることが記憶されている。すなわち、当該コンテンツの要求はキャッシュ管理サーバ（Ａ）１７−１に転送する必要がある。
【００９５】
なお、本実施の形態では、コンテンツ識別子（ＵＲＬ）のハッシュ値３０２とキャッシュ管理サーバの識別子３０３（アドレス）とのペアを管理したが、コンテンツ識別子（ＵＲＬ）そのものとキャッシュ管理サーバの識別子３０３（アドレス）とのペアを管理してもよい。その場合、コンテンツ識別子（ＵＲＬ）によって、要求されるコンテンツがシステム内にキャッシュされているか否かが判断される。
【００９６】
図８は、第１の実施の形態のＣＤＮ連携ルータ１６のＣＰＵ部１６１にて実行されるＣＤＮ連携ルータプログラムの動作を示すフローチャートである。
【００９７】
始めに、ＣＤＮ連携ルータ１６は、プログラム蓄積部１６２に保持された処理プログラムをＣＰＵ部１６１にロードし、ＣＤＮ連携ルータ１６として動作するための処理を開始する（ステップ３１０）。すなわち、ＣＰＵ部１６１がＣＤＮ連携ルータプログラムを実行することによって、以下に説明する処理が行われる。
【００９８】
ＣＤＮ連携ルータ１６が動作を開始すると、オリジンサーバ１宛のＩＰパケットをＣＰＵ部１６１に転送するよう全ての入力部を設定する（ステップ３２０）。
【００９９】
その後、ＩＰパケットデータを受信したか否かを判断する（ステップ３１１）。
【０１００】
ステップ３１１において、ＩＰパケットデータを受信していないと判断すると、引き続きステップ３１１の処理を繰り返す。一方、ステップ３１１において、ＩＰパケットデータを受信したと判断すると、受信データがキャッシュサーバから送信されたデータか否かを判断する（ステップ３１２）。
【０１０１】
ステップ３１２において、受信データがキャッシュサーバから送信されたデータであると判断すると、受信データはコンテンツの要求なので、キャッシュ有無判定テーブル３００を参照し、要求されたコンテンツがシステム内にキャッシュされているか否かを判断する（ステップ３１３）。
【０１０２】
ステップ３１３において、要求されたコンテンツがキャッシュシステム内にキャッシュされていると判断すると、当該コンテンツを実際にキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバへ、当該コンテンツ要求を送信する（ステップ３１４）。その後、ステップ３１１に戻り、引き続き処理を実行する。
【０１０３】
一方、ステップ３１３において、要求されたコンテンツがキャッシュシステム内にキャッシュされていないと判断すると、当該コンテンツ要求をオリジンサーバ１に送信する（ステップ３１５）。その後、ステップ３１１に戻り、引き続き処理を実行する。
【０１０４】
また、ステップ３１２において、受信データがキャッシュサーバから送信されたデータではないと判断すると、受信データがオリジンサーバ１から送信されたデータあるか否かを判断する（ステップ３１６）。ステップ３１６において、受信データがオリジンサーバ１から送信されたデータであると判断すると、受信データはユーザ端末から要求されたコンテンツのデータなので、受信したコンテンツのデータを要求元のキャッシュサーバへ送信する（ステップ３１７）。その後、ステップ３１１に戻り、引き続き処理を実行する。
【０１０５】
一方、ステップ３１６において、受信データがオリジンサーバ１から送信されたデータではないと判断すると、キャッシュ管理サーバから送信されたデータであるか否かを判断する（ステップ３１８）。
【０１０６】
ステップ３１８において、受信データがキャッシュ管理サーバから送信されたデータであると判断すると、受信データはキャッシュ管理サーバの登録要求なので、受信データからキャッシュされたコンテンツのハッシュ値と当該コンテンツを実際にキャッシュしているキャッシュサーバの識別子とを抽出する。そして、抽出されたコンテンツのハッシュ値とキャッシュ管理サーバの識別子を、キャッシュ有無判定テーブル３００に登録する（ステップ３１９）。
【０１０７】
一方、ステップ３１８において、受信データがキャッシュ管理サーバから送信されたデータではないと判断すると、ステップ３１１に戻り、引き続き処理を実行する。
【０１０８】
次に、キャッシュ管理サーバ１７−１〜１７−２の構成及び動作を説明する。
【０１０９】
キャッシュ管理サーバ１７−１及び１７−２は、前述したように、キャッシュサーバ（Ａ）１４−１（図３）と同じ構成を備える。具体的には、各キャッシュ管理サーバ１７−１及び１７−２は、ＣＰＵ部、プログラム蓄積部（ＲＯＭ）、メインメモリ（ＲＡＭ）、ディスクメモリ（ＨＤＤ）、入力部及び出力部を備え、これらがバスによって接続されているコンピュータである。
【０１１０】
キャッシュ管理サーバ１７−１及び１７−２は、キャッシュされたコンテンツの識別子と、そのコンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理する。
【０１１１】
ＣＰＵ部は、キャッシュサーバの動作に必要な演算処理をするプロセッサ、及びプロセッサによって実行される演算処理に必要なプログラムとデータを一時的に保持するＲＡＭを含む。プログラム蓄積部は、ＲＯＭを含み、ＣＰＵ部で実行されるキャッシュサーバプログラムを蓄積する。メインメモリは、ＲＡＭを含み、ＣＰＵ部で実行される演算処理に必要なデータを一時的に保持する。
【０１１２】
ディスクメモリは、ハードディスクドライブを含み、ユーザ端末に配信されるコンテンツを格納する。具体的には、ディスクメモリは、キャッシュされたコンテンツ及びキャッシュコンテンツ管理テーブル（図９参照）を保持する。
【０１１３】
入力部及び出力部は、アクセス網１０に接続されるネットワークインターフェースであり、ＩＰパケットを送受信する。
【０１１４】
図９は、第１の実施の形態のキャッシュコンテンツ管理テーブル４００の構成図である。
【０１１５】
キャッシュコンテンツ管理テーブル４００は、キャッシュ管理サーバに設けられたディスクメモリに保持される。キャッシュコンテンツ管理テーブル４００には、キャッシュコンテンツの識別子４０２と、キャッシュサーバリスト４０３とをペアにした複数のエントリ４０１が含まれる。
【０１１６】
キャッシュコンテンツの識別子４０２は、コンテンツの所在を示すＵＲＬである。キャッシュサーバリスト４０３は、当該コンテンツをキャッシュしているキャッシュサーバの識別子及びそのキャッシュサーバのＣＰＵの負荷情報を含む。キャッシュサーバの識別子は、キャッシュサーバに付された一意の識別子であり、本実施の形態では、ＩＰアドレスの他、キャッシュサーバ名が含まれている。キャッシュサーバのＣＰＵの負荷情報は、キャッシュサーバ識別子で特定されるキャッシュサーバに備わるＣＰＵの負荷状態を１００分率で表したもので、１００％が最も負荷が高いことを意味する。
【０１１７】
例えば、キャッシュコンテンツ管理テーブル４００には、エントリ４０４に示されるように、ｈｔｔｐ：／／ｗｗｗ．１２３．ｃｏ．ｊｐ／ｃｏｎｔｅｎｔ．ｈｔｍｌで識別されるコンテンツを、キャッシュサーバ（Ａ）１４−１及びキャッシュサーバ（Ｂ）１４−２がキャッシュしていることを示す。また、キャッシュサーバ（Ａ）１４−１のＣＰＵの負荷が２５％であり、キャッシュサーバ（Ｂ）１４−２のＣＰＵの負荷が３５％であることが記憶されている。
【０１１８】
なお、第１の実施の形態では、コンテンツのＵＲＬ、キャッシュサーバの識別子及びＣＰＵの負荷情報を一つのテーブルに含めたが、コンテンツのＵＲＬ及びキャッシュサーバの識別子を一つのテーブルにし、キャッシュサーバの識別子及びＣＰＵの負荷情報を別のテーブルにしてもよい。
【０１１９】
図１０は、第１の実施の形態のキャッシュ管理サーバプログラムのフローチャートである。
【０１２０】
始めに、各キャッシュ管理サーバ１７−１〜１７−２は、プログラム蓄積部１７２に保持された処理プログラムをＣＰＵ部にロードし、キャッシュ管理サーバとして動作するための処理を開始する（ステップ４１０）。すなわち、キャッシュ管理サーバのＣＰＵ部がキャッシュ管理サーバプログラムを実行することによって、以下に説明する処理が行われる。
【０１２１】
キャッシュ管理サーバが動作を開始すると、ＩＰパケットデータを受信したか否かを判断する（ステップ４１１）。
【０１２２】
ステップ４１１において、ＩＰパケットデータを受信していないと判断すると、引き続きステップ４１１の処理を繰り返す。一方、ステップ４１１において、ＩＰパケットデータを受信したと判断すると、受信データが負荷監視サーバ１２から送信されたデータか否かを判断する（ステップ４１２）。
【０１２３】
ステップ４１２において、受信データが負荷監視サーバ１２から送信されたデータであると判断すると、受信データはキャッシュサーバの負荷情報なので、受信したキャッシュサーバの負荷情報を、ディスクメモリ１７３に保持されたキャッシュコンテンツ管理テーブル４００に登録する（ステップ４１３）。その後、自キャッシュ管理サーバのＣＰＵの負荷を測定し、負荷監視サーバ１２へ送信する（ステップ４１４）。その後、ステップ４１１に戻り、引き続き処理を実行する。
【０１２４】
ステップ４１２において、受信データが負荷監視サーバ１２から送信されたデータではないと判断すると、受信データがキャッシュサーバから送信されたデータであるか否かを判断する（ステップ４１５）。
【０１２５】
ステップ４１５において、受信データがキャッシュサーバから送信されたデータであると判断すると、新たにコンテンツがキャッシュされたか否かを判断する（ステップ４１６）。
【０１２６】
ステップ４１６において、新たにコンテンツがキャッシュされたと判断すると、新たにキャッシュされたコンテンツの識別子４０２と当該コンテンツをキャッシュしたキャッシュサーバの識別子４０３とを、キャッシュコンテンツ管理テーブル４００に登録する（ステップ４１７）。その後、新たにキャッシュされたコンテンツの識別子と、実際に当該コンテンツをキャッシュしているキャッシュサーバの識別子のリストを管理するキャッシュ管理サーバの識別子とがペアとなった情報を、ＣＤＮ連携ルータ１６に送信する（ステップ４１８）。
【０１２７】
一方、ステップ４１６において、新たにコンテンツがキャッシュされたのではないと判断すると、キャッシュコンテンツ管理テーブル４００において、当該コンテンツをキャッシュしているキャッシュサーバの追加する登録をする（ステップ４１９）。その後、ステップ４１１に戻り、引き続き処理を実行する。
【０１２８】
また、ステップ４１５において、キャッシュサーバから送信されたデータではないと判断すると、受信データがＣＤＮ連携ルータ１６から送信されたデータか否かを判断する（ステップ４２０）。
【０１２９】
ステップ４２０において、受信データがＣＤＮ連携ルータ１６から送信されたデータであると判断すると、キャッシュコンテンツ管理テーブル４００を参照し、要求されたコンテンツをキャッシュしているキャッシュサーバのうち負荷が最小のキャッシュサーバを選択する（ステップ４２１）。そして、ステップ４２１において選択されたキャッシュサーバに対して、要求されたコンテンツを要求元のキャッシュサーバへ転送するよう指示する（ステップ４２２）。その後、ステップ４１１に戻り、引き続き処理を実行する。
【０１３０】
また、ステップ４２０において、ＣＤＮ連携ルータ１６から送信されたデータではないと判断すると、受信データはキャッシュ管理サーバでは処理できないデータなので、受信データを破棄し、ステップ４１１に戻り、引き続き処理を実行する。
【０１３１】
次に、負荷監視サーバ１２の構成及び動作を説明する。
【０１３２】
負荷監視サーバ１２は、前述したように、キャッシュサーバ（Ａ）１４−１（図３）と同じ構成を備える。具体的には、負荷監視サーバ１２は、ＣＰＵ部、プログラム蓄積部（ＲＯＭ）、メインメモリ（ＲＡＭ）、ディスクメモリ（ＨＤＤ）、入力部、出力部及びバスを備えるコンピュータであり、キャッシュ管理サーバ１７−１〜１７−２及びキャッシュサーバ１４−１〜１４−２から負荷の情報を取得し、これらのサーバの負荷状態を監視する。
【０１３３】
ＣＰＵ部は、負荷監視サーバ１２の動作に必要な演算処理をするプロセッサ、及びプロセッサによって実行される演算処理に必要なプログラムとデータを一時的に保持するＲＡＭを含む。プログラム蓄積部は、ＲＯＭを含み、ＣＰＵ部で実行される負荷監視サーバプログラムを蓄積する。メインメモリは、ＲＡＭを含み、ＣＰＵ部で実行される演算処理に必要なデータを一時的に保持する。キャッシュサーバ負荷情報テーブル（図１１参照）及びキャッシュ管理サーバ負荷情報テーブル５５０を保持する。
【０１３４】
入力部及び出力部は、アクセス網１０に接続されるネットワークインターフェースであり、ＩＰパケットを送受信する。
【０１３５】
図１１は、第１の実施の形態のキャッシュサーバ負荷情報テーブル５００の構成図である。
【０１３６】
キャッシュサーバ負荷情報テーブル５００は、負荷監視サーバ１２に設けられたディスクメモリに保持される。キャッシュサーバ負荷情報テーブル５００には、キャッシュサーバの識別子５０２とＣＰＵの負荷情報５０３とをペアにした複数のエントリ５０１が含まれる。キャッシュサーバの識別子５０２は、キャッシュサーバに付された一意の識別子であり、本実施の形態では、ＩＰアドレスの他、キャッシュサーバ名が含まれている。ＣＰＵの負荷情報５０３は、キャッシュサーバ識別子５０２で特定されるキャッシュサーバに備わるＣＰＵの負荷状態を１００分率で表したもので、１００％が最も負荷が高いことを意味する。
【０１３７】
例えば、キャッシュ管理サーバ付加情報テーブル５００には、エントリ５０４に示されるように、ＩＰアドレスが１９２．１６８．１．１０であるキャッシュサーバ（Ａ）１７−１のＣＰＵ負荷が２５％であることが記憶されている。
【０１３８】
前述したように、負荷監視サーバ１２に設けられたディスクメモリにはキャッシュ管理サーバの負荷情報テーブル５５０も保持されている。負荷監視サーバ１２に保持されるキャッシュ管理サーバの負荷情報テーブル５５０は、キャッシュサーバの負荷情報テーブル２００（図４）と同じ構成である。
【０１３９】
キャッシュ管理サーバ負荷情報テーブル５５０には、キャッシュ管理サーバの識別子とＣＰＵの負荷情報とをペアにした複数のエントリが含まれる。キャッシュ管理サーバの識別子は、キャッシュ管理サーバに付された一意の識別子である。ＣＰＵの負荷情報は、キャッシュ管理サーバ識別子で特定されるキャッシュ管理サーバに備わるＣＰＵの負荷状態を１００分率で表した情報である。
【０１４０】
図１２は、第１の実施の形態の負荷監視サーバプログラムのフローチャートである。
【０１４１】
始めに、負荷監視サーバ１２は、プログラム蓄積部に保持した処理プログラムをＣＰＵ部１２１にダウンロードし、負荷監視サーバ１２の動作処理を開始する（ステップ６１０）。すなわち、負荷監視サーバ１２のＣＰＵ部が負荷監視サーバプログラムを実行することによって、以下に説明する処理が行われる。
【０１４２】
負荷監視サーバ１２が動作を開始すると、全てのキャッシュサーバの負荷情報を、全てのキャッシュ管理サーバに通知したか否かを判断する（ステップ６１１）。
【０１４３】
ステップ６１１において、全てのキャッシュサーバの負荷情報の、全てのキャッシュ管理サーバに対する通知が完了していないと判断すると、キャッシュサーバの負荷情報を通知していないキャッシュ管理サーバを選択し、選択されたキャッシュ管理サーバへ、全てのキャッシュサーバのＣＰＵの負荷情報を送信する。また、キャッシュサーバの負荷情報を送信する際に、宛先となるキャッシュ管理サーバのＣＰＵの負荷情報を返信する指示をあわせて送信する（ステップ６１２）。具体的には、キャッシュサーバの負荷情報を送信するデータ内にキャッシュ管理サーバのＣＰＵの負荷情報の返信指示を組み込む。
【０１４４】
その後、データを受信したか否かを判断する（ステップ６１３）。ステップ６１３において、データを受信していないと判断すると、引き続きステップ６１３の処理を繰り返す。
【０１４５】
一方、ステップ６１３において、データを受信したと判断すると、受信データがＣＰＵの負荷情報を要求したキャッシュ管理サーバから送信されたデータか否かを判断する（ステップ６１４）。
【０１４６】
ステップ６１４において、受信データがＣＰＵの負荷情報を要求したキャッシュ管理サーバから送信されたデータであると判断すると、受信データはキャッシュ管理サーバのＣＰＵの負荷情報なので、受信した負荷情報をキャッシュ管理サーバ負荷情報テーブル５５０に登録する（ステップ６１５）。その後、ステップ６１１に戻り、引き続き処理を実行する。
【０１４７】
また、ステップ６１１において、全てのキャッシュサーバの負荷情報の、全てのキャッシュ管理サーバに対する通知が完了したと判断すると、全てのキャッシュ管理サーバの負荷情報を、全てのキャッシュサーバに通知したか否かを判断する（ステップ６１６）。
【０１４８】
ステップ６１６において、全てのキャッシュ管理サーバの負荷情報の、全てのキャッシュサーバに対する通知が完了していないと判断すると、キャッシュ管理サーバの負荷情報を通知していないキャッシュサーバを選択し、選択されたキャッシュサーバへ、全てのキャッシュ管理サーバのＣＰＵの負荷情報を送信する。また、キャッシュ管理サーバの負荷情報を送信する際に、宛先となるキャッシュサーバのＣＰＵの負荷情報を返信する指示をあわせて送信する（ステップ６１７）。具体的には、キャッシュ管理サーバの負荷情報を送信するデータ内にキャッシュサーバのＣＰＵの負荷情報の返信指示を組み込む。
【０１４９】
その後、データを受信したかを判断する（ステップ６１８）。ステップ６１８において、データを受信していないと判断すると、引き続きステップ６１８の処理を繰り返す。
【０１５０】
一方、ステップ６１８において、データを受信したと判断すると、受信データがＣＰＵの負荷情報を要求したキャッシュサーバから送信されたデータか否かを判断する（ステップ６１９）。
【０１５１】
ステップ６１９において、受信データがＣＰＵの負荷情報を要求したキャッシュサーバから送信されたデータであると判断すると、受信データはキャッシュサーバのＣＰＵの負荷情報なので、受信した負荷情報をキャッシュサーバ負荷情報テーブル５００に登録する（ステップ６２０）。
【０１５２】
また、ステップ６１６において、全てのキャッシュ管理サーバの負荷情報を、全てのキャッシュサーバに通知し終えたと判断すると、所定の時間だけ待機する（ステップ６２１）。その後、ステップ６１１に戻り、引き続き処理を実行する。
【０１５３】
このようにして、全てのキャッシュサーバの負荷情報の全てのキャッシュ管理サーバに対する通知、及び全てのキャッシュ管理サーバの負荷情報の全てのキャッシュサーバに対する通知が、周期的に実行される。
【０１５４】
前述した第１の実施の形態では、キャッシュ管理サーバは、負荷監視サーバ１２からの要求に基づいて、自身のＣＰＵの負荷情報を送信しているが、負荷監視サーバ１２からの要求に基づかずに、独自のタイミングで自身のＣＰＵの負荷情報を送信してもよい。また、同様に、キャッシュサーバも、負荷監視サーバ１２からの要求に基づかずに、独自のタイミングで自身のＣＰＵの負荷情報を送信してもよい。
【０１５５】
すなわち、第１の実施の形態で説明したシーケンス（図２）では、負荷監視サーバ１２から負荷情報が送信されるタイミングと、キャッシュ管理サーバ及びキャッシュサーバから負荷情報が送信されるタイミングが整合している。しかし、このようにすると、負荷監視サーバ１２から負荷情報が送信されるタイミングと、キャッシュ管理サーバ及びキャッシュサーバから負荷情報が送信されるタイミングが整合しなくなる。
【０１５６】
以上説明したように、第１の実施の形態によれば、キャッシュサーバが新たにコンテンツをキャッシュしたとき、負荷が最小のキャッシュ管理サーバを選択して、当該コンテンツをキャッシュしたことを通知することによって、キャッシュ管理サーバにかかる負荷を分散することができる。よって、本実施の形態を適用することによって、大規模な網においてもキャッシュシステムを構築することが可能となる。
【０１５７】
また、負荷が最小のキャッシュ管理サーバを動的に選択して、新たにキャッシュしたコンテンツの情報を登録するため、システムを停止することなく新たなキャッシュ管理サーバを追加できる。
【０１５８】
（第２の実施の形態）
前述した第１の実施の形態では、負荷監視サーバ１２が、キャッシュ管理サーバの負荷情報を送信する際に、キャッシュサーバのＣＰＵの負荷情報を返信する指示をあわせて送信し、キャッシュサーバの負荷情報を送信すると共に、宛先となるキャッシュ管理サーバのＣＰＵの負荷情報を返信する指示を送信している。これに対し、第２の実施の形態では、マルチキャスト配信にて、キャッシュ管理サーバの負荷情報を全てのキャッシュサーバに通知し、また、マルチキャスト配信によって、キャッシュサーバの負荷情報を全てのキャッシュ管理サーバに通知する点において、第１の実施の形態と異なる。
【０１５９】
図１３は、第２の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。
【０１６０】
第２の実施の形態の処理７０１〜７０６は、第１の実施の形態の（図２）の処理９０１〜９０６に相当する。また、第２の実施の形態の処理７１０〜７１５は、第１の実施の形態の（図２）の処理９０７〜９１２に相当する。それ故、これらの第２の実施の形態の処理は、第１の実施の形態の対応する処理と同一である。
【０１６１】
始めに、負荷監視サーバ１２は、キャッシュ管理サーバ（Ａ）１７−１に負荷状態（例えば、ＣＰＵの負荷状態）を通知するように要求する（７０１）。次に、キャッシュ管理サーバ（Ａ）１７−１は、自身の負荷情報を負荷監視サーバ１２に返信する（７０２）。負荷監視サーバ１２は、キャッシュ管理サーバ（Ａ）１７−１から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（７０３）。
【０１６２】
同様に、負荷監視サーバ１２は、キャッシュ管理サーバ（Ｂ）１７−２に負荷状態を通知するように要求する（７０４）。次に、キャッシュ管理サーバ（Ｂ）１７−２は、自身の負荷情報を負荷監視サーバ１２に返信する（７０５）。負荷監視サーバ１２は、キャッシュ管理サーバ（Ｂ）１７−２から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（７０６）。
【０１６３】
その後、負荷監視サーバ１２は、収集した全てのキャッシュ管理サーバの負荷情報をマルチキャストにて配信する（７０７）。
【０１６４】
ＣＤＮ連携ルータ１６は、キャッシュ管理サーバの負荷情報を受信すると、受信した負荷情報がマルチキャストで送信されているので、受信した負荷情報を、マルチキャストによって、さらにキャッシュサーバ（Ａ）１４−１及びキャッシュサーバ（Ｂ）１４−２に配信する（７０８、７０９）。
【０１６５】
また、  負荷監視サーバ１２は、キャッシュサーバ（Ａ）１４−１に負荷状態を通知するように要求する（７１０）。キャッシュサーバ（Ａ）１４−１は、自身の負荷情報を負荷監視サーバ１２に返信する（７１１）。負荷監視サーバ１２は、キャッシュサーバ（Ａ）１４−１から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（７１２）。
【０１６６】
同様に、負荷監視サーバ１２は、キャッシュサーバ（Ｂ）１４−２に負荷状態を通知するように要求する（７１３）。キャッシュサーバ（Ｂ）１４−２は、自身の負荷情報を負荷監視サーバ１２に返信する（７１４）。負荷監視サーバ１２は、キャッシュサーバ（Ｂ）１４−２から負荷情報を受信すると、受信した負荷情報を用いて、保持されている負荷情報を更新する（７１５）。
【０１６７】
その後、負荷監視サーバ１２は、収集した全てのキャッシュサーバの負荷情報をマルチキャストにて配信する（７１６）。
【０１６８】
ＣＤＮ連携ルータ１６は、キャッシュサーバの負荷情報を受信すると、受信した負荷情報がマルチキャストで送信されているので、受信した負荷情報を、マルチキャストによって、さらにキャッシュ管理サーバ（Ａ）１７−１及びキャッシュ管理サーバ（Ｂ）１７−２に配信する（７１７、７１８）。
【０１６９】
これ以後は、図２示す第１の実施の形態の処理９２０以降と同一の処理が実行され、ユーザ端末から要求されたコンテンツのデータがキャッシュされる。
【０１７０】
以上説明したように、第２の実施の形態によれば、キャッシュサーバの負荷をマルチキャストにてキャッシュ管理サーバに通知し、また、キャッシュ管理サーバの負荷をマルチキャストにてキャッシュサーバに通知するので、負荷を管理する負荷監視サーバ１２の負荷を軽減することができる。
【０１７１】
なお、第２の実施の形態で説明したシーケンス（図１３）では、キャッシュ管理サーバは、負荷監視サーバ１２からの要求に基づいて、自身のＣＰＵの負荷情報を送信しているが、負荷監視サーバ１２からの要求に基づかずに、独自のタイミングで自身のＣＰＵの負荷情報を送信してもよい。また、同様に、キャッシュサーバは、負荷監視サーバ１２からの要求に基づいて、自身のＣＰＵの負荷情報を送信しているが、負荷監視サーバ１２からの要求に基づかずに、独自のタイミングで自身のＣＰＵの負荷情報を送信してもよい。このようにすると、負荷監視サーバ１２から要求を送信する必要がなくなり、負荷監視サーバ１２の負荷を軽減することができる。
【０１７２】
（第３の実施の形態）
前述した第１及び第２の実施の形態では、負荷監視サーバ１２がキャッシュ管理サーバの負荷情報をキャッシュサーバに送信し、キャッシュサーバがキャッシュ管理サーバの負荷情報を保持している。また、負荷監視サーバ１２がキャッシュサーバの負荷情報をキャッシュ管理サーバに送信し、キャッシュ管理サーバがキャッシュサーバの負荷情報を保持している。
【０１７３】
これに対し、第３の実施の形態では、キャッシュサーバが新たにコンテンツをキャッシュしたことをキャッシュ管理サーバに通知する際、その都度、負荷監視サーバ１２に、負荷が最小のキャッシュ管理サーバを問い合わせる。そして、負荷が最小のキャッシュ管理サーバに当該コンテンツをキャッシュしたことを通知する。また、キャッシュ管理サーバは、ユーザから要求されたコンテンツをキャッシュサーバから配信させる際、その都度、負荷監視サーバ１２に、当該コンテンツをキャッシュしているキャッシュサーバのうち負荷が最小のキャッシュサーバを問い合わせる。そして、負荷が最小のキャッシュサーバより、当該コンテンツの配信を行うよう指示する。これらの点において、第３の実施の形態は前述した第１及び第２の実施の形態と異なる。
【０１７４】
図１４は、第３の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。
【０１７５】
なお、第３の実施の形態（図１４）において、第１の実施の形態（図２）又は第２の実施の形態（図１３）と同じ処理には同じ符号を付し、その説明は省略する。
【０１７６】
第３の実施の形態の処理７０１〜７０６及び７１０〜７１５は、第２の実施の形態の（図１３）の同じ番号の処理と同一である。これらの処理によって、負荷監視サーバ１２は、キャッシュサーバ１４−１及び１４−２及びキャッシュ管理サーバ１７−１及び１７−２から負荷情報を収集する。
【０１７７】
これに続く処理９２０〜９２７は、第１の実施の形態の（図２）の同じ番号の処理と同一である。これらの処理によって、ユーザ端末１５−１から要求されたコンテンツが、キャッシュサーバ（Ａ）１４−１にキャッシュされる。
【０１７８】
その後、キャッシュサーバ（Ａ）１４−１は、新たにコンテンツをキャッシュしたことをキャッシュ管理サーバに通知するため、負荷が最小のキャッシュ管理サーバを、負荷監視サーバ１２に問い合わせる（７５１）。負荷監視サーバ１２は、保持されている負荷情報を参照して、キャッシュサーバ（Ａ）１４−１に、負荷が最小であるキャッシュ管理サーバの識別子を返信する（７５２）。
【０１７９】
本実施の形態では、負荷監視サーバ１２が負荷が最小であるキャッシュ管理サーバを特定したが、負荷監視サーバ１２がキャッシュサーバ（Ａ）１４−１にキャッシュ監視サーバの負荷情報を送信し、キャッシュサーバ（Ａ）１４−１が、受信した負荷情報を参照して、負荷が最小であるキャッシュ管理サーバを特定してもよい。
【０１８０】
これに続く処理９３１〜９３５は、第１の実施の形態の（図２）の同じ番号の処理と同一である。これらの処理によって、コンテンツをキャッシュしたキャッシュサーバが登録され、当該キャッシュサーバを管理するキャッシュ管理サーバが登録される。
【０１８１】
これに続く処理９５０〜９５３は、第１の実施の形態の（図２）の同じ番号の処理と同一である。これらの処理によって、ユーザ端末（Ｃ）１５−３からのコンテンツ要求が、キャッシュ管理サーバ（Ａ）１７−１に転送される。
【０１８２】
キャッシュ管理サーバ（Ａ）１７−１は、ＣＤＮ連携ルータ１６より転送された、コンテンツ要求を受信すると、当該コンテンツをキャッシュしているキャッシュサーバのうち、どのキャッシュサーバの負荷が最も小さいかを、負荷監視サーバ１２に問い合わせる（７６１）。負荷監視サーバ１２は、保持されている負荷情報を参照して、キャッシュ管理サーバ（Ａ）１７−１に、負荷が最小であるキャッシュサーバの識別子を返信する（７６２）。
【０１８３】
なお、前述したように、負荷が最小であるサーバは負荷監視サーバ１２が特定してもよいが、要求元のキャッシュ監視サーバが、キャッシュサーバの負荷情報を取得し、取得した負荷情報に基づいて、負荷が最小であるサーバは負荷監視サーバ１２が特定してもよい。
【０１８４】
これに続く処理９５５〜９６１は、第１の実施の形態の（図２）の同じ番号の処理と同一である。これらの処理によって、キャッシュされたコンテンツがユーザ端末（Ｃ）１７−３に配信され、キャッシュサーバ（Ｂ）１４−２にコンテンツがキャッシュされたことが登録される。
【０１８５】
以上説明したように、第３の実施の形態によれば、キャッシュサーバが新たにコンテンツをキャッシュした際、その都度、負荷監視サーバ１２にキャッシュ管理サーバの負荷状態を確認する。すなわち、キャッシュ管理サーバの現在の負荷情報を必要とするキャッシュサーバのみに、キャッシュ管理サーバの負荷情報を通知するので、ネットワークのトラフィックを軽減することができる。
【０１８６】
同様に、キャッシュ管理サーバは、要求されたコンテンツをキャッシュしているキャッシュサーバから配信させる際、その都度、負荷監視サーバ１２にキャッシュサーバの負荷状態を確認する。すなわち、キャッシュサーバの現在の負荷情報を必要とするキャッシュ管理サーバのみに、キャッシュサーバの負荷情報を通知するので、ネットワークのトラフィックを軽減することができる。
【０１８７】
（第４の実施の形態）
次に、第４の実施の形態として、キャッシュサーバにキャッシュしているコンテンツを削除する動作について説明する。
【０１８８】
図１５は、第４の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。図１５は、キャッシュしたコンテンツの削除と、新たなコンテンツのキャッシュとの両方の処理を含む。
【０１８９】
始めに、キャッシュサーバ（Ａ）１４−１は、新たなコンテンツをキャッシュするディスク領域を確保するため、既にキャッシュしているコンテンツを削除する（８００）。そして、確保されたディスク領域に、新規コンテンツをキャッシュする（８０１）。
【０１９０】
その後、キャッシュ管理サーバの負荷情報を参照して、負荷が最小のキャッシュ管理サーバを特定する（８０２）。また、特定されたキャッシュ管理サーバ（Ａ）１７−１に、新たにコンテンツをキャッシュしたこと（キャッシュされたコンテンツの識別子及びキャッシュサーバ（Ａ）の識別子）を通知する（８０３）。
【０１９１】
さらに、処理８００で削除したコンテンツに関する自キャッシュサーバのキャッシュ登録の削除をキャッシュ管理サーバ（Ａ）１７−１に要求する（８０４）。この削除要求には、キャッシュサーバ（Ａ）１４−１の識別子（ＩＰアドレス）と削除したコンテンツの識別子（ＵＲＬ）とが含まれ、当該コンテンツの情報を管理するキャッシュ管理サーバ（Ａ）１７−１へ削除要求が送信される。
【０１９２】
なお、新たなコンテンツのキャッシュ登録（８０３）と、削除コンテンツに関するキャッシュ登録削除（８０４）とを、同一のキャッシュ管理サーバへ通知する場合は、個々に通知せず、両者をあわせて通知してもよい。
【０１９３】
キャッシュ管理サーバ（Ａ）１７−１は、新たなコンテンツのキャッシュ登録要求を受信すると、新たにキャッシュされたコンテンツが、キャッシュサーバ（Ａ）１４−１にキャッシュされたことを、キャッシュコンテンツ管理テーブル４００に登録する（８０５）。また、キャッシュ管理サーバ（Ａ）１７−１は、コンテンツのキャッシュ登録削除要求を受信すると、削除されたコンテンツに関するキャッシュサーバ（Ａ）１４−１のキャッシュ登録を、キャッシュコンテンツ管理テーブル４００より削除する（８０６）。
【０１９４】
さらに、キャッシュ管理サーバ（Ａ）１７−１は、新規にコンテンツがキャッシュされたことを登録するため、キャッシュされたコンテンツの識別子のハッシュ値と当該コンテンツの情報を管理するキャッシュ管理サーバの識別子（ＩＰアドレス）を、ＣＤＮ連携ルータ１６に通知して、キャッシュ有無判定テーブル３００への登録を要求する（８０７）。
【０１９５】
ＣＤＮ連携ルータ１６は、登録要求を受信すると、前記通知されたコンテンツ識別子のハッシュ値と当該コンテンツの情報を管理するキャッシュ管理サーバの識別子を、キャッシュ有無判定テーブル３００に登録する（８０８）。
【０１９６】
前述した処理が実行され、引き続きキャッシュサーバ（Ｂ）１４−２は、新規のコンテンツをキャッシュするためのディスク領域を確保するため、既にキャッシュしているコンテンツを削除し（８０９）、確保されたディスク領域に、新規コンテンツをキャッシュする（８１０）。
【０１９７】
その後、キャッシュ管理サーバの負荷情報を参照して、負荷が最小のキャッシュ管理サーバを特定する（８１１）。また、特定されたキャッシュ管理サーバ（Ａ）１７−１に、新たにコンテンツをキャッシュしたこと（キャッシュされたコンテンツの識別子及びキャッシュサーバ（Ｂ）の識別子）を通知する（８１２）。
【０１９８】
さらに、前記削除したコンテンツに対する自キャッシュサーバのキャッシュ登録を削除するよう、当該コンテンツの情報を管理するキャッシュ管理サーバ（Ａ）１７−１へ、キャッシュサーバ（Ｂ）１４−２の識別子を通知する（８１３）。なお、新たなコンテンツのキャッシュ登録（８１２）と、削除コンテンツに関するキャッシュ登録削除（８１３）とを、同一のキャッシュ管理サーバへ通知する場合は、個々に通知せず、両者をあわせて通知してもよい。
【０１９９】
キャッシュ管理サーバ（Ａ）１７−１は、新たなコンテンツのキャッシュ登録要求を受信すると、新たにキャッシュされたコンテンツが、キャッシュサーバ（Ｂ）にキャッシュされたことを、キャッシュコンテンツ管理テーブル４００に登録する（８１４）。また、キャッシュ管理サーバ（Ａ）１７−１は、コンテンツキャッシュ登録削除要求を受信すると、削除されたコンテンツに関するキャッシュサーバ（Ｂ）１４−２のキャッシュ登録を、キャッシュコンテンツ管理テーブル４００より削除する（８１５）。
【０２００】
さらに、キャッシュ管理サーバ（Ａ）１７−１は、新規にコンテンツがキャッシュされたことを登録するため、キャッシュされたコンテンツの識別子のハッシュ値と当該コンテンツの情報を管理するキャッシュ管理サーバの識別子（ＩＰアドレス）を、ＣＤＮ連携ルータ１６に通知して、キャッシュ有無判定テーブル３００への登録を要求する（８１６）。
【０２０１】
また、前記削除（８１５）を実行した際、登録サーバを削除したコンテンツが、いずれのキャッシュサーバにもキャッシュされていなれば、当該コンテンツに対するキャッシュが存在しなくなったことを示すため、ＣＤＮ連携ルータ１６に対して、削除されたコンテンツの識別子を通知して、キャッシュ有無判定テーブル３００からの削除を要求する（８１７）。なお、新規コンテンツの登録処理（８１６）と削除されたコンテンツに対する登録削除処理依頼（８１７）は、通知先であるＣＤＮルータが同じであるため、個々に通知せず、両者をあわせて通知してもよい。
【０２０２】
ＣＤＮ連携ルータ１６は、新たにキャッシュされたコンテンツの識別子のハッシュ値と当該コンテンツの情報を管理するキャッシュ管理サーバの識別子を、キャッシュ有無判定テーブル３００に登録する（８１８）。また、前記削除されたコンテンツの識別子に関する情報を、キャッシュ有無判定テーブル３００から削除する（８１９）。
【０２０３】
以上説明したように、第４の実施の形態によれば、キャッシュサーバが新たにキャッシュしたコンテンツ情報をキャッシュ管理サーバに通知する処理と、削除したコンテンツ情報をキャッシュ管理サーバに通知する処理とを、一回で送受信することができ、キャッシュサーバとキャッシュ管理サーバ間でのデータ送受信回数を削減して、両サーバの負荷を軽減することができる。
【０２０４】
また、キャッシュ管理サーバが、新規にキャッシュされたコンテンツの識別子のハッシュ値と当該コンテンツの情報を管理するキャッシュ管理サーバの情報をＣＤＮ連携ルータ１６に通知する処理と、削除したコンテンツ情報をＣＤＮ連携ルータ１６に通知する処理とを、一回で送受信することができ、キャッシュ管理サーバとＣＤＮ連携ルータ１６間でのデータ送受信回数を削減し、サーバ及びルータの負荷を軽減することができる。
【産業上の利用可能性】
【０２０５】
本発明は、複数のユーザが共通のアクセス網を利用し、インターネット上のＷｅｂデータ等を受信するネットワークシステムに適用することができ、大規模なユーザに対してキャッシュ機能を提供することができる。
【図面の簡単な説明】
【０２０６】
【図１】本発明の第１の実施の形態の分散キャッシュシステムのシステム構成図である。
【図２】本発明の第１の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。
【図３】本発明の第１の実施の形態のキャッシュサーバの構成図である。
【図４】本発明の第１の実施の形態のキャッシュ管理サーバ負荷情報テーブルの構成図である。
【図５】本発明の第１の実施の形態のキャッシュサーバの動作を示すフローチャートである。
【図６】本発明の第１の実施の形態のＣＤＮ連携ルータの構成図である。
【図７】本発明の第１の実施の形態のキャッシュ判定テーブルの構成図である。
【図８】本発明の第１の実施の形態のＣＤＮ連携ルータの動作を示すフローチャートである。
【図９】本発明の第１の実施の形態のキャッシュコンテンツ管理テーブルの構成図である。
【図１０】本発明の第１の実施の形態のキャッシュ管理サーバの動作を示すフローチャートである。
【図１１】本発明の第１の実施の形態のキャッシュサーバ負荷情報テーブルの構成図である。
【図１２】本発明の第１の実施の形態の負荷監視サーバの動作を示すフローチャートである。
【図１３】本発明の第２の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。
【図１４】本発明の第３の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。
【図１５】本発明の第４の実施の形態の分散キャッシュシステムの動作を示すシーケンス図である。
【符号の説明】
【０２０７】
１  オリジンサーバ
２  コア網
１０  アクセス網
１２  負荷監視サーバ
１３−１、１３−２  ルータ
１４−１、１４−２  キャッシュサーバ
１５−１〜１４−４  ユーザ端末
１６  ＣＤＮ連携ルータ
１７−１、１７−２  キャッシュ管理サーバ
【図１】
2007233700.tif 000003
【図２】
2007233700.tif 000004
【図３】
2007233700.tif 000005
【図４】
2007233700.tif 000006
【図５】
2007233700.tif 000007
【図６】
2007233700.tif 000008
【図７】
2007233700.tif 000009
【図８】
2007233700.tif 000010
【図９】
2007233700.tif 000011
【図１０】
2007233700.tif 000012
【図１１】
2007233700.tif 000013
【図１２】
2007233700.tif 000014
【図１３】
2007233700.tif 000015
【図１４】
2007233700.tif 000016
【図１５】
2007233700.tif 000017