(57)【要約】【課題】ネットワーク上のピークトラフィックを抑制する。【解決手段】ネットワーク上に、複数のキャッシュサーバを連携させる制御サーバを設け、更に制御サーバに特定データの需要予測をさせる。需要の増大が見込まれるデータに関しては、制御サーバの配下にあるキャッシュサーバに予め当該データをコピーして配信する。【選択図】  図１
2005010970.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントが接続されたキャッシュサーバと、該複数のキャッシュサーバを制御する制御サーバとを有し、
該制御サーバは、前記キャッシュサーバに対して将来アクセス要求されるデータを予測し、
該予測されたデータに対して現在アクセス要求の無いキャッシュサーバへ、該予測されたデータをコピーすることを特徴とするネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムにおいて、
前記制御サーバは、キャッシュサーバに格納されたキャッシュデータに対するクライアントからのアクセス履歴を格納したテーブルを有することを特徴とするネットワークシステム。
【請求項３】
請求項２に記載のネットワークシステムにおいて、前記テーブルにはキャッシュサーバで保持されているデータのＩＤが格納されていることを特徴とするネットワークシステム。
【請求項４】
前記複数の制御サーバに接続された上位制御サーバを備えたことを特徴とするネットワークシステム。
【請求項５】
複数のキャッシュサーバを備えたネットワークのキャッシュ制御方法において、
前記キャッシュサーバに対してアクセス要求されるデータを予測するステップと、
前記複数のキャッシュサーバのうちで前記予測されたデータをキャッシュしているキャッシュサーバから、該予測されたデータを他のキャッシュサーバへコピーするステップとを含むことを特徴とするキャッシュ制御方法。
【請求項６】
請求項５に記載のキャッシュ制御方法において、
前記ネットワークは、前記複数のキャッシュサーバを制御する制御サーバを有し、
前記予測されたデータをキャッシュしているキャッシュサーバが無い場合には、前記制御サーバが該予測されたデータのオリジナルデータを保持するサーバへデータの転送要求を出すことを特徴とするキャッシュ制御方法。
【請求項７】
請求項５に記載の分散キャッシュ制御方法において、
前記制御サーバは、キャッシュサーバで保持されているデータのＩＤの表である履歴表を備え、
前記制御サーバは、該履歴表の状態もしくは状態の変化に基づきアクセス要求されるデータを予測することを特徴とするキャッシュ制御方法。
【請求項８】
請求項５に記載の分散キャッシュ制御方法において、
前記複数の前記制御サーバを上位の制御サーバで制御することを特徴とするキャッシュ制御方法。
【請求項９】
クライアントに接続された複数のキャッシュサーバに接続される制御サーバであって、
前記複数のキャッシュサーバに対してクライアントから要求されたデータのＩＤと該データの要求元のキャッシュサーバのＩＤが記録される履歴表が格納された記憶手段と、
該履歴表に基づき、次にアクセス要求されるデータを予測する予測部と、
予測されたデータをキャッシュしているキャッシュサーバに対して、当該データのコピー命令を送信する要求処理部とを備えたことを特徴とする制御サーバ。
【請求項１０】
請求項９に記載の制御サーバにおいて、
前記予測部は、前記履歴表に既に要求されたデータのＩＤが登録されているかを判断し、
該データのＩＤが登録されていない場合には、該履歴表に新しくエントリを作成し、該データの要求元キャッシュサーバのＩＤを記録し、更に該データのＩＤを仮登録することを特徴とする制御サーバ。
【請求項１１】
請求項１０に記載の制御サーバにおいて、
前記要求処理部は、該データのオリジナルデータを保持するサーバに対し当該データの転送要求を送信し、
該オリジナルデータを保持するサーバから応答を受信した後、前記仮登録状態のＩＤを本登録状態に変更することを特徴とする制御サーバ。
【請求項１２】
請求項１１に記載の制御サーバにおいて、
前記オリジナルデータを保有するサーバから正常に応答を受信した場合、前記エントリ中で仮登録状態のサーバに対し、該応答を転送することを特徴とする制御サーバ。
【請求項１３】
請求項１０に記載の制御サーバにおいて、
前記履歴表に既に要求データに対応するエントリがあり、かつ本登録状態のキャッシュサーバが無い場合、当該エントリに要求元キャッシュサーバのＩＤを仮登録することを特徴とする制御サーバ。
【請求項１４】
請求項１０に記載の制御サーバにおいて、
前記履歴表にエントリがあり、かつ本登録状態のキャッシュサーバが複数ある場合、前記予測部は、当該本登録状態のキャッシュサーバの一つを選択し、
前記要求処理部は、当該選択されたキャッシュサーバに対し、前記要求データを前記要求元キャッシュサーバへ転送するよう命令することを特徴とする制御サーバ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報通信ネットワークにおいてネットワーク中に分散したキャッシュの制御方法ないし制御装置およびこれらの制御方法が適用されるネットワークシステムに属する。
【０００２】
【従来技術】
複数のクライアントが同一データを参照する場合、キャッシュ技術を用いることで、アクセス時に生じるネットワーク・トラフィックがクライアント−キャッシュサーバ間で閉じるため、ネットワーク全体のトラフィック量を抑制できる。しかし、大規模なネットワークで発生するトラフィックは単一のキャッシュサーバでは処理できず、通常、複数のキャッシュサーバが分散して配置される。
【０００３】
特開２００２−２５１３１３号公報には、複数のキャッシュサーバを連携させる技術が開示されている。本文献に開示された発明では、複数のキャッシュサーバを制御する親サーバを設けて、該親サーバ個々のキャッシュサーバが保持しているキャッシュデータの情報を格納する。更に、親サーバは、クライアントから要求のあったデータを配下のキャッシュサーバが保持しているかどうか照会し、要求されたデータを保持している配下のキャッシュサーバが有れば、当該キャッシュサーバより要求データを取得する。または要求を出したクライアントに接続されているキャッシュサーバに当該データを転送させる。このように複数のキャッシュサーバを連携させることにより、外部ネットワークへのアクセス頻度が低減し、クライアントのデータ要求に対する応答時間が短縮される。また、各キャッシュサーバが保持するキャッシュデータの量も低減することが可能である。
【０００４】
特開平１１−２４９８１号公報には、キャッシュデータの先読み技術が開示されている。本文献に開示された技術では、キャッシュサーバが、アクセスしたファイルを記録するアクセス履歴データベースと、先読み選出モジュールとを備え、アクセス頻度の高いファイルとその更新間隔から次に先読みすべきデータを決定し、ネットワークのトラフィック量が空いている時間帯に予め先読みデータをキャッシュする。本技術によれば、キャッシュヒット率が向上し、ファイルアクセスが高速化する。
【０００５】
また、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）から発行されているＲＦＣ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔ）２１８６には、キャッシュサーバを連携させる一方法として、ＩＣＰ（Ｉｎｔｅｒｎｅｔ  Ｃａｃｈｅ  Ｐｒｏｔｏｃｏｌ）が規定されている。ＩＣＰを用いたネットワークの構成例を図１４に示す。クライアント１７，１８はルータ１４を介してキャッシュサーバ１３に接続され、クライアント１９，２０はルータ１６を介してキャッシュサーバ１５に接続されている。ルータ１４，１６は内部ネットワークを介して上位のルータ１２に接続される。ルータ１２は外部ネットワークに接続される。ルータ１４、１６には、各々キャッシュデータを保持するキャッシュメモリを備えたキャッシュサーバが接続されている。
【０００６】
ＩＣＰでは、クライアントから要求されたデータがキャッシュに無い場合、他のキャッシュに問い合わせ、他のキャッシュが当該データを保持している場合は、そのキャッシュからデータを取り寄せることで、ネットワーク外部へのデータの取得を行わないようにし、応答時間の向上を計っている。
【０００７】
【発明が解決しようとする課題】
従来技術においては、問い合わせ時に多くのパケットが発行されるため、ネットワーク内のトラフィックは増加する傾向にある。さらに、短い時間に多くのクライアントから問い合わせが生じると、多くのキャッシュサーバがデータを取得する動作を起こすため、さらにネットワーク・トラフィックは増加する。従って、特定のコンテンツに対し突発的にアクセス要求が発生した場合などには対応できない。
本発明の目的は、ネットワーク上でのピークトラフィックを抑制することにある。
【０００８】
【課題を解決するための手段】
本発明の分散キャッシュ制御方式が適用されるネットワークでは、複数のクライアントが接続するネットワークにおいて、複数のキャッシュサーバと複数のキャッシュサーバを制御する制御サーバとを備えることを特徴とする。当該制御サーバは、キャッシュサーバで保持しているデータの状態もしくは状態の変化に基づき、クライアントからアクセス要求のあったデータを保持するキャッシュサーバからデータを保持していないキャッシュサーバへデータをコピーする指示を発行することを特徴とする。
なお、その他の特徴、効果等は、実施例にて詳細に説明される。
【０００９】
【発明の実施の形態】
（実施例１）
以下、実施例について、図面を用いて詳細に説明する。
（構成の説明）
図１には、本発明が適用されるネットワークの１形態について示した。１７、１８、１９、２０はクライアントであり、例えば、ネットワークに接続しているエンドユーザである。１４、１６は、複数のクライアントから延びる加入者線を集線する第１のルータ群であり、例えばネットワーク上に配置されたアクセスルータやＢＡＳ（Ｂｒｏａｄｂａｎｄ  Ａｃｃｅｓｓ  Ｓｅｒｖｅｒ）、ゲートウェイ等が第１のルータに相当する。第１のルータが集線するクライアントの数は、必ずしも複数である必要はない。便宜上、第１のルータは１４、１６の２つしか図示していないが、１４〜１６の間には、内部ネットワークに接続された第１のルータが複数配置されているものとする。以後、制御サーバの配下にある第１のルータの総称としては、「第１のルータ群」という文言を使用する。
１３、１５はキャッシュサーバであり、キャッシュサーバ１３は第１のルータ１４に、キャッシュサーバ１５は第１のルータ１６とそれぞれ接続している。１２は複数の第１のルータ群１４、１６を更に集線する第２のルータであり、クライアントから見てネットワーク上で第１のルータの奥側に配置されている。第１のルータと第２のルータとは、内部ネットワークで接続されており、内部ネットワークとは、例えば、ＬＡＮやその他の閉鎖網である。
１０は、第１のルータ群とキャッシュサーバ、第２のルータおよび内部ネットワークを含むネットワークを示す。このようなネットワークの例としては、例えば、エンドユーザがインターネットに接続するためのアクセス網がある。図示されていないが、第２のルータ１２から上に延びる線の更に上方には、１０とは異なるネットワークが存在しており、本実施例の第２のルータは、他ネットワークとの接続部分に配置されている。
【００１０】
第２のルータには制御サーバ１１が接続されており、複数のキャッシュサーバ１３、１５の動作を制御している。具体的には、個々のキャッシュサーバから上がってくるキャッシュデータの要求を監視し、監視結果に基づきアクセス要求が多くなると予測されたデータのコピー命令を、配下にあるキャッシュサーバへ送信する。
更に詳細な制御サーバの動作ステップについては、後段の「動作の説明」の欄で詳述する。
【００１１】
図２には、制御サーバ１１の構成例を示した。３０はパケットの送受信を司るパケットハンドラであり、例えば、パケットの入出力インタフェースカード等で構成される。３１は配下のキャッシュサーバからの要求や応答を処理する要求処理部であり、プロセッサやＡＳＩＣ等で実現される。履歴表３２は、配下のキャッシュサーバや下位の制御サーバからの要求の履歴が記録されるテーブルであり、メモリやハードディスクなどの記憶手段により構成される。要求処理部３１は、データ処理の際に履歴表３２を参照する。３３は予測部であり、履歴表３２の情報を元に将来のアクセス予測を行う。３０１は学習機能部である。後述するが、学習機能部は必ずしも必須ではない。アクセス予測を実行するには種々の方法があり、予測部３３の内部構成は予測方法に応じて変わるが、ここでは、本実施例では、タイムスタンプによりアクセス予測を行なう場合の予測部の内部構成について示す。
本実施例での予測部３３は、現在の時刻を示す時計３４、履歴表のエントリ４０に含まれる登録されているサーバＩＤの個数を数える計数機３８、タイムスタンプフィールド４０の値と時計３４の値の差を求める減算器３６と、予測条件を保持する閾値レジスタ３５と、計数機３８の出力もしくは減算器３６の出力と閾値レジスタ３５の値を比較する比較器３７を備えている。
【００１２】
図３には、予測手法としてタイムスタンプを用いた場合の履歴表の構成例を示した。履歴表３２はエントリ４０の集合から構成され、エントリ４０は更に、実際にデータが格納される複数のフィールドにより構成されている。デフォルトの状態では、各フィールドは空白である。
４１は、要求されたデータのＩＤを記録するデータＩＤフィールドである。ここで、データＩＤとは、クライアントから要求されたデータやコンテンツ等に対して付与されるユニークな識別子であり、例えば、データの格納先のＵＲＬやＩＰアドレス等が格納される。要求データに対して通し番号を付けても良い。４２、４４、４６は、データＩＤフィールド４１に格納されるデータを要求した直接の下位サーバのＩＤを記録するサーバＩＤフィールドである。
ここで「直接の下位サーバ」とは、自己が管理しているサーバのことであり、図１のネットワークシステムにおいては、第２のルータに対する「直接のサーバ」に相当するサーバは、キャッシュサーバ１３、１５となる。内部ネットワーク内に更に中継ノード装置が存在し、中継ノード装置に制御機能を備えたサーバが接続されていれば、制御サーバ１１が直接管理するサーバは中継ノード装置に接続されたサーバとなるため、「直接の下位サーバ」とは当該内部ネットワークに配置されたノード装置となる。
サーバＩＤとは、「直接の下位サーバ」に付与されたユニークな識別子であり、例えば、各下位サーバのＩＰアドレスである。第２のルータが集線しているルータないしノード装置に対しユニークな番号を付与して、この番号をサーバＩＤフィールドに格納しても良い。但しこの場合、サーバＩＤと各サーバのＩＰアドレスの対応テーブルを管理する必要が出てくるため、管理が多少複雑になる。
各サーバＩＤフィールドと対をなして、各サーバにおけるキャッシュデータの登録状態を記録する状態フィールド４３，４５，４７が設けられる。状態フィールドには、所定のキャッシュデータが、本登録状態か仮登録状態かを示す識別子が格納される。４８は、エントリ４０にサーバＩＤを登録した最終時刻を保持するタイムスタンプフィールドである。
【００１３】
第２のルータ１２は、配下にある第１のルータからのデータ要求パケット、ないしクライアントより要求のあったデータを元々保有しているオリジナルサーバからのデータ転送パケットを受け取ると、制御サーバに対して受信したパケットを転送する。受信パケット自体を転送する他に、受信パケットからヘッダ情報を切り出して転送しても良い。あるいは、受信パケットのコピーデータを制御サーバに転送しても良い。
パケットハンドラ３０は、第２のルータからパケットを受信すると、要求処理部３１へ受信パケットを転送する。要求処理部３１は、予測部３３を起動して、アクセス要求のあったデータあるいはオリジナルサーバから転送されてきたデータ（以下、単に”データ”と称する）の需要予測を実行させる。
【００１４】
予測部３３は、履歴表３２を参照して該当エントリのタイムスタンプフィールドから該当データの直近の登録時刻を取得する。また、予測部３３は、要求処理部３１から起動命令を受信した時刻を時計３４から取得する。時計３４は、例えば、プロセッサに付随しているカウンタクロック等により実現可能である。取得された登録時刻と現在時刻とは減算器３６に入力され、現在時刻と登録時刻との差が計算される。計算された差は、閾値レジスタ３５に格納された閾値データとともに比較器に入力される。この差が、閾値レジスタに格納された値よりも小さい場合は、当該データに対するアクセス要求の間隔が閾値を超えたと判定される。すなわち、当該データに対する需要が現時点以降も増大すると判定される。格納された値よりも差が大きい場合は、当該データに対するアクセス要求の間隔がまだ閾値を越えておらず、当該データに対するアクセス需要は、現時点以降でも増大しないものと判定される。判定結果は要求処理部３１へ送信される。
【００１５】
要求処理部３１は、予測部３３から送信された結果を基に、コピー命令の実行を行う。予測部３３から送信された判定結果が需要増大であった場合には、アクセス要求のあったデータを保持しているキャッシュサーバに対して、アクセス要求元であるキャッシュサーバだけではなく、配下のキャッシュサーバ全てに当該データのコピー命令を送信する。あるいは、オリジナルサーバから送信されたデータを、配下のキャッシュサーバ全部に送信する。予測部３３での予測結果が需要増大でなかった場合には、当該データは、アクセス要求のあったキャッシュサーバにのみ転送される。
予測動作によるデータコピーは、将来発生するであろうクライアントからのデータ要求によるキャッシュサーバ間のデータ移動を、予測動作時まで先行して実行することを意味する。従って、本実施例を実施することにより、トラフィックがピークとなる時刻をシフトする、つまりピークトラフィックの平坦化が可能となる。
なお、本実施例の制御サーバは、数値の入力手段と操作画面とを有する管理コンソール３００を備えており、閾値レジスタ３５に保持させる値は装置ユーザが自由に変更可能である。
【００１６】
また、制御サーバに学習機能を与えて閾値レジスタ３５に保持させる値を最適化させても良い。このため、学習機能部３０１が設けられる。もし予測動作を行うより前に、制御サーバに配下の過半数のキャッシュサーバから要求が届いた場合、コピー指示の発行が遅れたと見なし、コピー指示の発行タイミングを早めるため、閾値レジスタの値を大きくする。一方、クライアントからの要求到着がコピー指示のタイミングに比べ遅い場合には、コピー指示の発行を遅らせるため閾値レジスタの値を小さくする。
【００１７】
閾値レジスタ３５の値を小さくするためにはクライアントからの要求到着がコピー指示のタイミングに比べ遅いということを判定する必要がある。従って、キャッシュサーバは、コピー指示命令が到着してからクライアントからの要求到着までにかかった時間を計測し、計測結果を制御サーバ１１に送信する。このため、各キャッシュサーバは、時間を計測するための計時手段と、時間を計測したデータのデータＩＤと計測した時間とを対比して記憶する記録手段とを有する。記憶手段としては、例えば、メモリやディスク装置などに形成される管理テーブルでもよいし、あるいはデータＩＤと時間データをレジスタに直接格納してもよい。
学習動作を行なう場合、まず要求予測部３１が学習機能部３０１を起動する。学習機能部３０１は、起動すると、キャッシュサーバが送信する、クライアントから送信されたデータＩＤと時間データの受信をパケットハンドラ３０に要求し、パケットハンドラが送信するデータを計測結果表に格納する。代表値選択器は計測結果表に格納されたデータから代表値を計算、あるいは選択し、比較器に入力する。一方、比較閾値調節レジスタには、所定の閾値（調節閾値と称する）が格納されており、比較器は、代表値が入力されると調節閾値レジスタから閾値を取り込み、代表値と閾値とを比較する。
代表値が閾値よりも大きければ、クライアントからの要求到着がコピー指示のタイミングに比べ遅いと判定し、閾値レジスタに格納された閾値を、加減算器にて所定の負の値だけインクリメントする。代表値としては、各キャッシュサーバで計測された時間の累計データや計測時間の平均値などを用いることができる。また、インクリメントする値は、閾値レジスタや調節閾値レジスタ、あるいは加減算器内部のレジスタに格納しておけば良い。また、インクリメント値も、管理コンソールにてユーザが自由に設定可能である。
【００１８】
履歴表３２は、要求処理部３１からの指示によりエントリが更新された時、更新されたエントリを学習機能部３０１に送信する。学習機能部３０１は受信したエントリを計数機に入力する。計数機はエントリに登録されているサーバＩＤを数え、比較器に入力する。一方、比較閾値レジスタには、所定の閾値（調節閾値と称する）が格納されており、比較器は、登録済みのサーバＩＤの個数（登録個数と称する）が入力されると、登録個数と調整閾値とを比較する。
登録個数が調整閾値より大きければ、予測動作を開始すべきだと判定し、加減算器に閾値レジスタに格納された閾値を、インクリメントするよう指示を出す。加減算器は、予測部が予測動作を開始していない時点でインクリメント指示を受け取った場合、閾値レジスタに格納された閾値を、所定の正の値でインクリメントする。インクリメントする値は、閾値レジスタや調節閾値レジスタ、あるいは加減算器内部のレジスタに格納しておけば良い。また、インクリメント値も、管理コンソールにてユーザが自由に設定可能である。
【００１９】
学習動作を実行させるタイミングとしては、例えば、コピーデータを配下の管理サーバへ送信した時点がある。各々のキャッシュサーバは、自分がアクセス要求を行っていないデータＩＤのデータが制御サーバ１１より送信されてきた場合、コピーデータが送信されたと判定して、時間計測を開始する。クライアントから当該データＩＤのデータのアクセス要求パケットが届いた場合、計測をやめ、計測時間データとデータＩＤとを制御サーバ１１に送信する。
また、計測した時間データを制御サーバに送信する場合、２通りの方法がある。１つは、時間計測データをサーバＩＤの如何を問わず全て制御サーバに送信する方法であり、もう一つは、計測時間が判定のしきい値よりも大きい場合にのみ計測データを制御サーバへ送信し、小さい場合は送信しない方法である。後者の場合、制御サーバとキャッシュサーバ間のトラフィック量を低減できるという利点がある。
（動作の説明）
図１のトポロジーを有するネットワークシステムの動作形態は、以下の３種類の形態があると考えられる。
１）ネットワークシステム内に配置されたいずれのキャッシュサーバにもデータがキャッシュされていない場合。
２）ネットワークシステム内に配置されたいずれかのキャッシュサーバに、既にデータがキャッシュされており、当該データをキャッシュしていないキャッシュサーバからアクセス要求が発行される場合。
３）複数のキャッシュサーバから同じデータに対してアクセス要求が発行された場合。
まず、ネットワークシステム内にあるキャッシュサーバのいずれにもデータがキャッシュされていない場合である第１の動作例について説明する。
第１の動作例は、図４に記載したフローチャートのステップ１００〜１１７を用いて説明される。例えば、図１のトポロジーを有するネットワークにおいて、クライアント１７が、所定のデータＩＤのデータを取得しようとする場合、データ要求パケットをキャッシュサーバ１３に送信することで前記データを要求する。本実施例では、データＩＤが７００なる番号のデータを取得しようとしてデータ要求パケットを送信したものとする。データＩＤとしては、数字の他、任意の識別子を使用してよく、要はデータとデータＩＤとの関係が一位に定まるものであれば何でも良い。要求データのデータオリジナルサーバのＵＲＬ（Ｕｎｉｆｉｅｄ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を使用しても良い。例えば、ＵＲＬがｈｔｔｐ：／／ｗｗｗ．ｘｘｘ．ｃｏｍ／ｉｄ＃７００であったとすると、データＩＤとしてｈｔｔｐ：／／ｗｗｗ．ｘｘｘ．ｃｏｍ／ｉｄ＃７００をそのまま使用して構わない。クライアント１７がキャッシュサーバ１３のＩＰアドレスを知らない場合には、データ要求パケットをオリジナルサーバに送信する。いずれの場合でも、クライアントから送信されたデータ要求パケットは必ず第１のルータを通過することになる。第１のルータ１４は、クライアントからのデータ要求パケットを受信すると、受信パケットをキャッシュサーバ１３に転送する。キャッシュサーバ１３は、要求されたデータを保持していない場合、更に新たなデータ要求パケットを制御サーバ１１に送信する。
【００２０】
次に、図４のフローチャートを用いて、制御サーバの動作フローについて説明する。
制御サーバ１１は、ステップ１００でデータ取得の要求を受信すると、ステップ１０１にて、データＩＤフィールドにアクセス要求を受けたデータのＩＤが格納されたエントリの有無を履歴表３２で確認する。エントリが存在しないことは、当該ＩＤのデータは過去にアクセス要求の無かったデータであることを意味する。ステップ１０２において、制御サーバ１１の上位サーバに向けてデータ取得の要求パケットを送信する。図１のネットワークシステムの場合には、アクセス要求のあったデータを保持するオリジナルサーバへデータ要求パケットを送信する。
データ要求パケットの送信後、ステップ１０３において、履歴表３２にエントリ４０を新規に作成し、データＩＤフィールド  ４１に、データＩＤ  ７００を登録する。その後、ステップ１０４において、当該サーバに直接要求を送信した下位サーバのＩＤをサーバ  ＩＤフィールド  ４２に書き込む。図１に示したトポロジーのネットワークの場合、制御サーバ１１に対する下位サーバとしては、キャッシュサーバ１３、１５のいずれかが該当し、この場合は、データ要求パケットを送信したキャッシュサーバ１３のサーバＩＤである１３がサーバＩＤフィールドに記録される。サーバＩＤとしては、１３のような数字の他、ＩＰアドレス等、各キャッシュサーバに付与した任意の識別子を用いることが可能である。状態フィールド４３には、仮登録を示す値が書き込まれる。
【００２１】
図５には、ステップ１０４が終了した後の履歴表３２の状態を示した。データＩＤフィールドにデータＩＤ７００が格納されたエントリ４０が作成され、１番目のサーバＩＤフィールドにはサーバＩＤ１３が格納されている。１番目のサーバＩＤフィールドと対となる１番目の状態フィールド４３には、仮登録を示す状態値「仮」が格納されている。図１のトポロジーのネットワークの場合、エントリ４０に作成されるサーバＩＤフィールドは、制御サーバ１１の配下にあるキャッシュサーバの数と等しい数だけ生成される。ステップ１０４が終了した段階では、他のサーバＩＤフィールドおよび状態フィールド４４〜４７、タイムスタンプフィールド４８は空白である。
【００２２】
ステップ１０５で上位サーバからの応答パケット６０３を受信すると、ステップ１０６  で応答パケット中の応答コードを確認する。ここで、「応答コード」とは、要求したデータがオリジナルサーバにあったかなかったかを示す識別子であり、応答パケットに格納されている。要求データがオリジナルサーバになかった場合は、応答エラーを示す応答コードがパケットに付与される。応答コードがエラーでなければ、ステップ１０７に進み、当該エントリ４０の状態フィールドに「仮」が記録された下位サーバ１３に対して、制御サーバ１１は、応答データパケットを送信する。応答データパケットの送信後、ステップ１０８にて、エントリ４０のサーバＩＤ１３の状態フィールドに本登録状態を示す状態値「本」を記録する。キャッシュサーバ１３は、制御サーバから応答データパケット  を受け取ると、キャッシュにデータを登録し、更にデータを要求したクライアント１７に応答データパケット６０５を送信する。
ステップ１０６にて、応答コードがエラーと判断された場合、ステップ１１６へ処理を進め、エントリ４０のサーバＩＤフィールドが空白でないサーバ全てに応答エラーを通知し、ステップ１１７で当該エントリを削除する。
【００２３】
図６には、図７のステップ１０８を終了した後の履歴表３２の状態を示す。図５に示した履歴表のエントリに比べて、状態フィールド４３の値が「本」に変わっていることが判る。
【００２４】
次に、すでにデータをキャッシュしているキャッシュサーバがある状態で、別のキャッシュサーバが要求を発行した場合である第２の動作例について説明する。
図１のトポロジーを有するネットワークにおいて、キャッシュサーバ１３はデータＩＤが７００のデータをキャッシュしているものとする。この場合、制御サーバ１１の履歴表３２には、図６に示すようなエントリ４０が作成されている。つまり、サーバＩＤフィールドに既にデータをキャッシュしているサーバのＩＤが、また当該サーバＩＤフィールドに対応する状態フィールドに本登録状態であることを示す識別子「本」がそれぞれ格納されている。クライアント２０がデータ７００を取得する場合、要求パケットをキャッシュサーバ１５または第１のルータ１６に送信する。キャッシュサーバ１５は、自己のキャッシュにデータ７００を保持していないと判断すると、要求パケットを制御サーバ１１に送信する。制御サーバ１１は、キャッシュサーバ１５からの要求を受信するが、この動作が図７のステップ１００に相当する。
【００２５】
以下は、図７を用いて制御サーバの動作を説明する。下位サーバであるキャッシュサーバ１５からのデータアクセス要求を受信すると、制御サーバ１１の要求処理部３１は、ステップ１０１の動作を開始する。ステップ１０１では、履歴表３２にデータ７００のエントリ４０があるため、ステップ１１１に処理を進める。エントリ４０の状態フィールド４３が本登録になっているため、ステップ１１１ではステップ１１３に処理を進める。
ステップ１１３ではエントリ４０から本登録状態になっているサーバＩＤから一つを選択する。この動作は、要求処理部３１によって実行される。ここでは、サーバＩＤフィールド４２に記録されているキャッシュサーバ１３が選択される。次のステップ１１４で選択されたキャッシュサーバ１３に指示パケットが送信される。ステップ１１５でエントリ４０のサーバＩＤフィールド４４に１５を、状態フィールド４５に本登録を書き込むことで、エントリ４０は図７に示した状態となる。
キャッシュサーバ１３は、指示パケットを受信すると、指示に従いＩＤ７００のデータを載せた転送パケットをキャッシュサーバ１５へ送信する。キャッシュサーバ１５は転送パケットを受信すると、キャッシュにデータ７００を登録し、応答パケットをクライアント２０へ送信する。
【００２６】
最後に、複数のキャッシュサーバから同じデータに対してアクセス要求が発行された場合である第３の動作例について説明する。
図１に示すトポロジーを有するネットワークにおいて、クライアント１７とクライアント２０が同じデータ７００の取得を試みた場合を考える。この場合、クライアント１７からのデータアクセス要求が最初に制御サーバに到達し、クライアント２０の発行したデータアクセス要求はその後に制御サーバに到達するものとする。
まず、クライアント１７は、データ要求パケットをキャッシュサーバ１３に送信する。キャッシュサーバ１３はデータ７００を保持していない場合、要求パケットを制御サーバ１１に送信する。
制御サーバ１１は図７の制御フローに従い動作し、ステップ１００から１０４まで実行し、上位サーバに要求パケットを送信する。ステップ１０４の実行後、履歴表３２のエントリ４０は図５に示すように、データＩＤフィールド４１が７００、サーバＩＤフィールド４２が１３、状態フィールド４３が仮登録となる。クライアント２０はキャッシュサーバ１５に要求パケットを送信し、キャッシュサーバ１５は要求パケットを制御サーバ１１に送信する。制御サーバ１１は図７の制御フローに従い動作し、ステップ１００でパケットを受信した後、ステップ１０１で履歴表３２をチェックする。クライアント１７からのアクセス要求に対する応答がステップ１０４まで実行されているので、履歴表３２には、データＩＤフィールドの値が７００であるエントリ４０が存在する。よって、制御サーバ１１はステップ１１１に処理を進める。ステップ１１１ではエントリ４０をチェックする。オリジナルサーバからの応答がまだ帰ってきていないので、先に作成されたサーバＩＤフィールド４２に対応する状態フィールド４３は本登録状態になっていない。そこで、制御サーバ１１は、ステップ１１２に処理を進める。要求処理部３１は、エントリ４０の空きサーバＩＤフィールドにキャッシュサーバ１５のサーバＩＤを記録する。図８に、ステップ１１２が実行された後の履歴表３２の状態を示す。
上位サーバからの応答パケットが制御サーバ１１に到着すると、制御サーバ１１はステップ１０５から処理を再開し、ステップ１０７において、応答パケットをキャッシュサーバ１３と１５にそれぞれ送信する。キャッシュサーバ１３と１５は、制御サーバから送信された応答パケット中のデータをキャッシュに登録し、それぞれのクライアント１７と２０にアクセス要求のあったデータを応答パケットとして送信する。
【００２７】
なお、クライアント１７と２０のアクセス要求が制御サーバ１１に転送されるまでのタイムラグが大きく、クライアント２０からのアクセス要求が制御サーバ１１に届いたのが上位サーバからの応答を制御サーバ１１が受信した後になった場合、クライアント２０からのアクセス要求に対する応答は、図４のフローチャートにおいて、ステップ１０１→ステップ１１１→ステップ１１３の経路で処理される。
また、クライアント１７と２０からのデータアクセス要求がほぼ同時に制御サーバ１１へ転送された場合、少しでも先に到着した方のデータアクセス要求が先に処理される。このため、制御サーバ１１のパケットハンドラ３０は、受信したデータ要求パケットをキューイングするためのバッファメモリを備えている。
【００２８】
次に、予測動作時の動作について説明する。
まず、図４のフローチャートを用いて予測動作が発生するタイミングについて説明する。一つの例としては、要求元キャッシュサーバを履歴表に本登録した時点（図４のステップ１１０）である。また、もう一つの例としては、要求元キャッシュサーバを履歴表３２に仮登録する時点（図４のステップ１０４および１１２）である。更にもう一つの例としては、既に本登録済みのキャッシュサーバを選択する時点（図４のステップ１１３の時点）である。
【００２９】
予測動作が図４のステップ１１０、１０４または１１２で発生する場合、要求元キャッシュサーバにデータを転送する時点（図４の１０７）で、要求元キャッシュサーバだけでなく、予測動作によってデータの宛先となったキャッシュサーバにもまとめてデータを送信する。
また、予測動作が図４のステップ１１３の時点で発生する場合、コピー指示を送信する時点（図４の１１４）で、要求元キャッシュサーバだけでなく、予測動作によってデータの宛先となったキャッシュサーバにもコピーデータを送るように指示が出される。
いずれの時点で予測動作を発生させるかは、制御サーバ１１の要求処理部３１へシーケンスデータを格納しておくことにより、自由に設定可能である。設定は、前述の管理コンソールを介して行なわれる。
【００３０】
制御サーバ１１の履歴表３２が図６に示したような状態の時に、予測部３３が予測動作を開始したと仮定する。予測部３３は履歴表３２のエントリ４０を検索し、識別子「本」が登録されている状態フィールドに対応するサーバＩＤフィールドを選択する。一つ以上の本登録状態の下位サーバが複数あれば、いずれか一つを選択する。選択基準は任意に設定可能であるが、最初に「本」にヒットしたサーバＩＤフィールドに対応する下位サーバを選択すれば、履歴表の検索時間が短くてすむ。図６の状態では、本登録状態の下位サーバが一つしか無いので、サーバ１３が選択される。
次に、データ７００をエントリ４０に記録されていない下位サーバ１５にコピーするよう、制御サーバ１１からサーバ１３に指示パケットを送信する。制御サーバ１１はエントリ４０の空いているサーバＩＤフィールドにサーバ１５のサーバＩＤ１５を追加する。エントリ４０は図７のようになる。サーバ１３は指示パケットに従い、データ７００をパケットに乗せ、サーバ１５に送信する。サーバ１５はパケットを受信すると、データ７００をキャッシュに登録する。その後、クライアント２０がデータ７００の取得要求パケットを送信すると、キャッシュサーバ１５はキャッシュに保持しているデータ７００を乗せた応答パケットを返答する。
（実施例２）
実施例２では、複数の制御サーバを含む階層構造のネットワークに対して本発明を適用した場合の実施例である。図９には、本実施例のネットワーク構成の例を示す。
１４、１６、２１は、それぞれクライアントからもっとも近い位置に存在する第１のルータ群であり、それぞれ複数のクライアント１７〜１８，１９〜２０、２３〜２４を集線している。１３、１５，２２は、それぞれ第１のルータ１４、１６，２１に接続されたキャッシュサーバである。１２は第２のルータであり、他ネットワークとの接続部分に配置されている。１１は制御サーバであり、第２のルータ１２に接続されている。２５と２７は中間ルータに接続された制御サーバであり、中間制御ルータと称する。２６と２８は第１のルータと第２のルータ間に配置されたルータ群であり、以下中間ルータ群と称する。第１のルータ群と中間ルータ群とは何らかのネットワークにより接続されている。また、第２のルータと中間ルータ群とは、別のネットワークで接続されている。上記のネットワーク群には、中間制御サーバは配置されていないものとする。
【００３１】
本実施例では、ネットワーク上に配置された任意のサーバから見て、クライアントに近い側に配置されるサーバを下位サーバ、コアネットワークに接続しているルータに近い側に配置されるサーバを上位サーバと呼ぶ。図９には図示されていないが、第２のルータ１２の上へ延びる回線は、ネットワークトポロジー上、更に奥のネットワーク（コアネットワークと称する）に接続されている。コアネットワークに最も近い制御サーバである制御サーバ１１の上位サーバは、個々のクライアントやキャッシュサーバ、ないし中間制御サーバからアクセス要求のあったデータのオリジナルデータを保持するサーバのうち、他ネットワークに存在するサーバである（オリジナルサーバと呼ぶ）。制御サーバ１１とオリジナルサーバは、コアネットワークを介して接続されている。
キャッシュサーバ１３、１５、２２は制御サーバ１１と直接通信するのではなく、中間制御サーバ２５、２７と通信を行う。中間制御サーバは、ネットワークにより接続された配下のキャッシュサーバを制御する。例えば、制御サーバ２５はキャッシュサーバ１３の制御を行い、制御サーバ２７は、キャッシュサーバ１５と２２の制御を行う。制御サーバ１１は中間制御サーバ２５，２７の制御を行う。
【００３２】
次に、図９のトポロジーのネットワークの動作例を説明する。ここでは、図９に示すような制御サーバが階層化されたトポロジーのネットワークにおいて、制御サーバ１１は予測動作の結果、中間制御サーバ２５が制御する任意のキャッシュサーバから中間制御サーバ２７が制御するキャッシュサーバ群へデータをコピーすることを決定した場合の動作について説明する。制御サーバ１１は、キャッシュサーバに対して直接指示を送信するのではなく、制御サーバ１１が制御している中間制御サーバを介して指示を送信する。
【００３３】
今、制御サーバ１１が、下位サーバ２５に下位サーバ２７へデータを転送するよう指示を乗せたパケットを送信する。中間制御サーバである制御サーバ２５は図１０のフローに従い動作を行う。ステップ２００で上位サーバである制御サーバ１１からの転送指示を受信すると、ステップ２０１で制御サーバ２５の履歴表を検索し、当該データのエントリを選択する。ステップ２０２でエントリから本登録されている下位サーバを一つ選択する。ここで例えば、キャッシュサーバ１３を選択すると、ステップ２０３において、データ転送指示を乗せたパケットをサーバ１３へ送信する。サーバ１３はキャッシュからデータを取り出し、応答パケットを制御サーバ２５へ返す。
制御サーバ２５はステップ２０４で応答パケットを受信すると、ステップ２０５においてパケットで指示された制御サーバ２７へデータを転送する。受信側制御サーバ２７は図１２のフローに従い動作する。ステップ５００で制御サーバ２５からの転送パケットを受信すると、ステップ５０１で制御サーバ２７が制御している全下位サーバへのデータ転送のため、パケットを送信する。ステップ５０２で、履歴表から当該データに対応したエントリを削除する。
前記実施例において、データは上位サーバを経由して転送してもよい。また、前期実施例においてステップ５０１で一つ以上の任意の下位サーバを選択し、そのサーバにのみデータを転送し、ステップ５０２でエントリを削除する代わりに選択した下位サーバをエントリに登録してもよい。本実施例のようにネットワークを階層構造とした場合、あるサーバはその直接の下位サーバのみを管理すればよく、管理するデータ量を抑えることが出来る。従って、実施例１のトポロジーのネットワークに比べて大規模なネットワークにも対応可能である。
（実施例３）
本実施例では、実施例１の制御サーバとは異なるアルゴリズムを用いてデータの需要予測を行う例について、図２を用いて説明する。
パケットハンドラ３０が、第２のルータ１２からパケットを受信すると、要求処理部３１へ受信パケットを転送する。要求処理部３１は、予測部３３を起動して、データの需要予測を実行させる。
予測部３３は、履歴表３２を検索して、需要予測を行うＩＤのデータがデータＩＤフィールドに格納されているエントリを検索する。目的のデータが格納されたエントリにヒットしたら、予測部３３は当該エントリを検索して、計数器３８により、空でない状態フィールド、すなわち「仮」または「本」という識別子が記録されている状態フィールドに対応するサーバＩＤフィールドの個数を計数する。計数されたサーバＩＤの個数は、計数器から比較器３７に入力される。比較器３７は、閾値レジスタ３５から需要予測判定のための閾値を取得し、入力されたサーバの個数と比較する。計数器で計数されたサーバの個数が閾値よりも大きな場合は、当該データに対する需要が増大していると判断し、閾値よりも小さい場合は、当該データに対するアクセス需要は、現時点以降でも増大しないものと判定される。判定結果は要求処理部３１へ送信される。
要求処理部３１は、予測部３３から送信された結果を基に、コピー命令の実行を行う。実施例１と同様に、予測部３３から送信された判定結果が需要増大であった場合には、アクセス要求のあったデータを保持しているキャッシュサーバに対して、アクセス要求元であるキャッシュサーバだけではなく、配下のキャッシュサーバ全てに当該データのコピー命令を送信する。あるいは、オリジナルサーバから送信されたデータを、配下のキャッシュサーバ全部に送信する。予測部３３での予測結果が需要増大でなかった場合には、当該データは、アクセス要求のあったキャッシュサーバにのみ転送される。
【００３４】
実施例１と同様、制御サーバに管理コンソールを設けることで、装置ユーザが閾値レジスタの値を自由に変更可能である。例えば、閾値として制御サーバ１１が管理する下位サーバの過半数を設定しておけば、本登録または仮登録された下位サーバの数が、制御サーバ１１の配下のサーバの過半数を超えた場合に、アクセス要求のあったデータが需要増大に転じたと判定される。
また、予測部３３に学習機能を設けて閾値レジスタに設定する閾値を最適化しても良いことも、実施例１と同様である。
（実施例４）
本実施例では、本発明のネットワークシステムの、特に第１のルータに適したノード装置の構成について説明する。本実施例のノード装置はパケット選別部を有し、クライアントがオリジナルサーバ宛に送信したデータ要求パケットをキャッシュサーバに転送できる機能を有する。図１２には、本実施例のパケット選別部付きのノード装置の構造例を示す。
ルータ１４の入力処理部５０，５２にパケット選別部５１，５３を追加する。入力処理部５２は入力バッファ７０と、経路表７１と、選択器７２を備える。パケット選別器５３はフィルタバッファ７３と、条件レジスタ７４と、比較器７５を備える。
入力処理部５２に到着したパケットは入力バッファ７０とフィルタバッファ７３に取り込まれる。入力バッファ７０に取り込まれたパケットの特定フィールドは経路表７１を検索するキーとして用いられる。フィルタバッファ７３に取り込まれたパケットの一部と条件レジスタ７４の値を比較器７５で比較する。比較結果は選択器７２に送られる。選択器７２は経路表７１の出力である出力処理部５５，５６，５７のうちの一つの番号と、サーバに接続されている出力処理部５７の番号を、比較器７５の出力により選択する。比較器７５が真を出力したとき、比較器７２は出力処理部５７に対応する番号を出力し、比較器７５が偽を出力したとき、比較器７２は経路表７１の出力を比較器７２の出力とする。パケット選別器５３で選別する条件として、宛先ＩＰアドレスや、宛先ポート番号や、送り元ポート番号や、ＵＲＬを用いることが出来る。また、これら複数の条件の和や積とすることもできる。スイッチ部５４は各入力処理部５０，５２の選択器７２の出力に基づき、入力バッファ７０に保持されているパケットを出力処理部５５，５６，５７のどれかに出力する。
また、ルータ１４は単一の装置で選別するのではなく、図１３に示すように、選別装置を多段に接続し、それぞれの装置で選別するように構成することも可能である。ルータ１４に近い選別器では、宛先ＩＰアドレスのようにパケットの固定位置にある値を用いることで高速な処理をし、サーバに近い選別器では、ＵＲＬの比較など可変位置にある可変サイズの値の比較が必要な複雑で低速な処理を行うように、パイプライン処理にすることで、全体の処理速度と処理内容の高度化を両立することが出来る。
【００３５】
【発明の効果】
本発明によれば、ネットワークのピークトラフィックを抑制することができる。
【図面の簡単な説明】
【図１】分散キャッシュ制御のネットワーク構成例を示す図。
【図２】制御サーバのモジュール構成図。
【図３】タイムスタンプを用いて需要予測を行う方式の履歴表の構造図。
【図４】下位サーバからの要求受信時の動作フロー図。
【図５】履歴表の状態図。
【図６】履歴表の状態図。
【図７】履歴表の状態図。
【図８】履歴表の状態図。
【図９】分散キャッシュ制御方式の階層構成時のネットワーク構成図。
【図１０】上位サーバからの転送指示受信時の動作フロー図。
【図１１】他サーバからのデータ転送受信時の動作フロー図。
【図１２】パケット選別部つきのルータのモジュール構成図。
【図１３】多段のパケット選別装置を持つルータ構成図。
【図１４】従来技術におけるネットワーク構成図。
【符号の説明】
１０・・・ネットワーク、１１・・・制御サーバ、１２・・・第２のルータ、１３、１５、２２・・・キャッシュサーバ群、１４、１６・・・第１のルータ群、１７〜２０、２３、２４・・・クライアント、２５、２７・・・中間制御サーバ群、２６、２８・・・中継ノード装置、３０・・・パケットハンドラ、３１・・・要求処理部、３２・・・履歴表、３３・・・予測部、３４・・・時計、３５・・・閾値レジスタ、３６・・・減算器、３７・・・比較器、３８・・・計数器、４０・・・エントリ、４１・・・データＩＤフィールド、４２、４４，４６・・・サーバＩＤフィールド、４３、４５、４７・・・状態フィールド、４８・・・タイムスタンプフィールド、３００・・・管理コンソール、３０１・・・学習機能部。
【図１】
2005010970.tif 000003
【図２】
2005010970.tif 000004
【図３】
2005010970.tif 000005
【図４】
2005010970.tif 000006
【図５】
2005010970.tif 000007
【図６】
2005010970.tif 000008
【図７】
2005010970.tif 000009
【図８】
2005010970.tif 000010
【図９】
2005010970.tif 000011
【図１０】
2005010970.tif 000012
【図１１】
2005010970.tif 000013
【図１２】
2005010970.tif 000014
【図１３】
2005010970.tif 000015
【図１４】
2005010970.tif 000016