(57)【特許請求の範囲】
【請求項１】
送受信されるファイルを一時的に保持するノード装置を複数含むネットワークシステムであって、
複数の前記ノード装置には、次数の高い前記ノード装置から、当該ノード装置が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、当該ノード装置の近傍に存在するグループを順に除外した残りのグループが割り当てられ、
前記ファイルは、前記複数のグループの各々に対応し、対応するグループにおいて保持すべきことを示すビットを含むビット列で表される、ゼロ以上の前記グループを示す情報と関連付けられ、
前記ノード装置は、
当該ノード装置が属する前記グループを示す情報と関連付けられた前記ファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するキャッシュ保持部と、
他のノード装置が要求する前記ファイルに対応する前記キャッシュファイルを保持している場合、当該キャッシュファイルを前記他のノード装置に対して送信するキャッシュ送信部と、
を含む
ネットワークシステム。
【請求項２】
前記グループが４以上存在する
請求項１に記載のネットワークシステム。
【請求項３】
前記ファイルに対するアクセスの頻度を算出するアクセス管理装置をさらに含み、
前記アクセス管理装置は、算出した前記頻度に基づいて、前記ファイルに関連付ける前記グループを示す情報を変更する
請求項１又は２に記載のネットワークシステム。
【請求項４】
前記アクセス管理装置は、前記ファイルに割り当てる前記グループを示す情報を削除したファイルについて、前記ノード装置に対し当該ファイルを削除させるための通知を行い、
前記ノード装置は、前記通知に基づいて前記キャッシュファイルを削除するキャッシュ削除部をさらに有する
請求項３に記載のネットワークシステム。
【請求項５】
前記キャッシュ保持部は、キャッシュを許可するファイルを特定するためのホワイトリスト、キャッシュを禁止するファイルを特定するためのブラックリスト、又は前記ファイルが有する当該ファイルに対するキャッシュの許否を示すフラグに基づいて、受信した前記ファイルを保持するか否か判断する
請求項１から４のいずれか一項に記載のネットワークシステム。
【請求項６】
前記ファイルは、所定のハイパーテキストによる文書からリンクされると共に、基準となる文書からの経由するリンク数に基づいて、前記ファイルに割り当てる前記グループを示す情報が割り当てられる
請求項１から５のいずれか一項に記載のネットワークシステム。
【請求項７】
前記ファイルは秘密分散法により複数の部分ファイルに分割され、各部分ファイルには異なる前記グループを示す情報が関連付けられる
請求項１から６のいずれか一項に記載のネットワークシステム。
【請求項８】
前記ファイルはデジタルコンテンツであり、
前記ノード装置は、コンテンツ配信ネットワークを形成するキャッシュサーバである
請求項１から７のいずれか一項に記載のネットワークシステム。
【請求項９】
送受信されるファイルを一時的に保持するノード装置を複数含むネットワークシステムによって実行されるファイルのキャッシュ方法であって、
複数の前記ノード装置には、次数の高い前記ノード装置から、当該ノード装置が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、当該ノード装置の近傍に存在するグループを順に除外した残りのグループが割り当てられ、
前記ファイルは、前記複数のグループの各々に対応し、対応するグループにおいて保持すべきことを示すビットを含むビット列で表される、ゼロ以上の前記グループを示す情報と関連付けられ、
前記ノード装置が、
当該ノード装置が属する前記グループを示す情報と関連付けられた前記ファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するステップと、
他のノード装置が要求する前記ファイルに対応する前記キャッシュファイルを保持している場合、当該キャッシュファイルを前記他のノード装置に対して送信するステップと、
を実行する
ファイルのキャッシュ方法。
【請求項１０】
送受信されるファイルを一時的に保持するノード装置を複数含むネットワークシステムにおいて、前記ノード装置によって実行されるファイルのキャッシュプログラムであって、
複数の前記ノード装置には、次数の高い前記ノード装置から、当該ノード装置が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、当該ノード装置の近傍に存在するグループを順に除外した残りのグループが割り当
てられ、
前記ファイルは、前記複数のグループの各々に対応し、対応するグループにおいて保持すべきことを示すビットを含むビット列で表される、ゼロ以上の前記グループを示す情報と関連付けられ、
前記ノード装置に、
当該ノード装置が属する前記グループを示す情報と関連付けられた前記ファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するステップと、
他のノード装置が要求する前記ファイルに対応する前記キャッシュファイルを保持している場合、当該キャッシュファイルを前記他のノード装置に対して送信するステップと、
を実行させる
ファイルのキャッシュプログラム。
【請求項１１】
自身が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、複数のノード装置のうち次数の高い前記ノード装置から、当該ノード装置の近傍に存在するグループを順に除外した残りのグループが割り当てられると共に、自身が属する前記グループを示す情報と関連付けられた前記ファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するノード装置を複数含むネットワークシステムに接続される管理装置であって、
前記ノード装置から前記ファイルに対する取得要求を計数し、頻度を算出する頻度算出部と、
頻度算出部が算出した頻度に基づいて前記ファイルに割り当てる、当該ファイルを保持すべきゼロ以上の前記グループを決定し、前記ファイルと、決定されたグループを示す、前記複数のグループの各々に対応するビットを含むビット列で表される情報との組合せを示す情報を前記ノード装置へ送信する設定変更部と、
を備える管理装置。
【請求項１２】
前記設定変更部は、取得要求を受ける頻度が高いファイルほど多くのグループを割り当てる
請求項１１に記載の管理装置。
【請求項１３】
自身が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、複数のノード装置のうち次数の高い前記ノード装置から、当該ノード装置の近傍に存在するグループを順に除外した残りのグループが割り当てられると共に、自身が属する前記グループを示す情報と関連付けられた前記ファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するノード装置を複数含むネットワークシステムに接続される管理装置が、
前記ノード装置から前記ファイルに対する取得要求を計数し、頻度を算出するステップと、
頻度算出部が算出した頻度に基づいて前記ファイルに割り当てる、当該ファイルを保持すべきゼロ以上の前記グループを決定し、前記ファイルと、決定された前記グループを示す、前記複数のグループの各々に対応するビットを含むビット列で表される情報との組合せを示す情報を前記ノード装置へ送信するステップと、
を実行する管理方法。
【請求項１４】
自身が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、複数のノード装置のうち次数の高い前記ノード装置から、当該ノード装置の近傍に存在するグループを順に除外した残りのグループが割り当てられると共に、自身が属する前記グループを示す情報と関連付けられた前記ファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するノード装置を複数含むネット
ワークシステムに接続される管理装置に、
前記ノード装置から前記ファイルに対する取得要求を計数し、頻度を算出するステップと、
頻度算出部が算出した頻度に基づいて前記ファイルに割り当てる、当該ファイルを保持すべきゼロ以上の前記グループを決定し、前記ファイルと、決定された前記グループを示す、前記複数のグループの各々に対応するビットを含むビット列で表される情報との組合せを示す情報を前記ノード装置へ送信するステップと、
を実行させる管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステム、キャッシュ方法、キャッシュプログラム、管理装置、管理方法及び管理プログラムに関する。
【背景技術】
【０００２】
従来、ネットワークに接続されたコンピュータ間で伝送されるファイルを中間的にキャッシュするための様々な技術が提案されている。オリジナルファイルの代わりにキャッシュファイルをダウンロードすることで、オリジナルファイルへのアクセスの集中を避けると共に、受信側においてダウンロードを完了するまでの時間を短縮し得る。【０００３】
例えば、管理サーバにおいて、コンテンツの要求を取得すると、オリジナルノード及びキャッシュオーバレイノードの中から、該コンテンツを保持するノードを探索し、その中でユーザとのホップ数が最も小さいノードを、コンテンツ配信元ノードとして選択する技術が提案されている（特許文献１）。当該技術では、オーバレイノードにおいて、コンテンツ配信元ノードと配信要求ユーザの間の経路を決定し、決定された経路に従ってコンテンツを配信し、コンテンツ配信経路上に、キャッシュオーバレイノードが存在すれば、そこに該コンテンツをキャッシュする。【０００４】
また、携帯電話の端末間通信等において動画をキャッシュする技術も提案されている。例えば、ジャンルによって動画をグループ化すると共に、好みによってユーザをグループ化し、好みのジャンルに応じてユーザの携帯電話にキャッシュする動画を決定する技術（非特許文献１）、ユーザのＳＮＳ（Social Network Service）上の振る舞いや流動性パターンに基づいてキャッシュするコンテンツを決定する技術も提案されている（非特許文献２）。【０００５】
また、コンテンツをいずれのサーバに保持させるか決定する技術も提案されている（例えば、非特許文献３）。通信コストを最小化するキャッシュの分散配置を決定するために遺伝的アルゴリズムを用いる技術も提案されている（例えば、非特許文献４）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１１４６４９号公報
【非特許文献】
【０００７】
【非特許文献１】Xiangyang Zhang, Ying Wang, Ruijin Sun, Dong Wang, “Clustered Device-to-Device Caching Based on File Preferences”IEEE PIMRC 2016
【非特許文献２】Xiaofei Wang, Min Chen, Zhu Han, Dapeng Oliver Wu, Ted “Taekyoung” Kwon, “TOSS: Traffic Offloading by Social Network Service-Based Opportunistic Sharing in Mobile Social Networks” IEEE INFOCOM 2014
【非特許文献３】Bruce M. Maggs, Ramesh K. Sitaraman, “Algorithmic Nuggets in Content Delivery” ACM SIGCOMM Computer Communication Review Volume 45 pp.52-66
【非特許文献４】Zhe Li and, Gwendal Simon, ”In a Telco-CDN, Pushing Content Makes Sense”, IEEE Transactions on Network and Service Management
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来、ネットワークシステムを構成する複数のノードに分散してファイルをキャッシュさせる場合、アクセスの集中を避け、全体の通信量を低減できるファイル配置を決定するためには、一般的に処理に時間がかかるという問題があった。【０００９】
本発明は、簡易な構成により、ファイルへのアクセスの集中を避け、且つ全体の通信量を削減できるネットワークシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るネットワークシステムは、送受信されるファイルを一時的に保持するノード装置を複数含む。ノード装置は、当該ノード装置が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、隣接するノード装置とは異なるグループに属し、ファイルは、ゼロ以上のグループを示す情報と関連付けられる。また、ノード装置は、当該ノード装置が属するグループを示す情報と関連付けられたファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するキャッシュ保持部と、他のノード装置が要求するファイルに対応するキャッシュファイルを保持している場合、当該キャッシュファイルを他のノード装置に対して送信するキャッシュ送信部とを含む。【００１１】
隣接するノード装置に異なるグループを割り当て、ファイルにキャッシュすべきグループを関連付けておくことで、ネットワーク上において適切に分散させてファイルをキャッシュすることができる。また、すなわち、簡易な構成により、オリジナルファイルへのアクセスの集中を避け、且つ全体の通信量を削減できる準最適なネットワークシステムを提供することができる。【００１２】
また、グループが４以上存在するようにしてもよい。例えばリンクが交差しないネットワークトポロジ上のノードをグループに分ける場合、平面上の領域を隣接しない色で塗り分ける問題と同様に考えることができる。したがって、少なくとも４つのグループによれば同一のグループが隣接しないようにノードをグループ分けできる。【００１３】
また、ファイルに対するアクセスの頻度を算出するアクセス管理装置をさらに含み、アクセス管理装置は、算出した頻度に基づいて、ファイルに関連付けるグループを示す情報を変更するようにしてもよい。このようにすれば、アクセス頻度の傾向の変化に追従して、ファイルをキャッシュすべきノードのグループを変更することができる。なお、アクセス管理装置は、オリジナルのファイルを配信する装置であってもよい。【００１４】
また、アクセス管理装置は、ファイルに割り当てるグループを示す情報を削除したファイルについて、ノード装置に対し当該ファイルを削除させるための通知を行い、ノード装置は、通知に基づいてキャッシュファイルを削除するキャッシュ削除部をさらに有するようにしてもよい。上述のようにファイルに対するグループの関連付けを変更する場合、ノード装置におけるキャッシュの削除も制御するようにしてもよい。【００１５】
また、キャッシュ保持部は、キャッシュを許可するファイルを特定するためのホワイトリスト、キャッシュを禁止するファイルを特定するためのブラックリスト、又はファイルが有する当該ファイルに対するキャッシュの許否を示すフラグに基づいて、受信したファイルを保持するか否か判断するようにしてもよい。このようにすれば、キャッシュを禁止するファイルを明示的に定義でき、例えば秘密情報の漏えいを防ぐことができる。【００１６】
また、ファイルは、所定のハイパーテキストによる文書からリンクされると共に、基準となる文書からの経由するリンク数に基づいて、ファイルに割り当てるグループを示す情報が割り当てられるようにしてもよい。このようにすれば、アクセス頻度のような情報がない場合においても優先してキャッシュすべきファイルを定義することができる。【００１７】
また、ファイルは秘密分散法により複数の部分ファイルに分割され、各部分ファイルには異なるグループを示す情報が関連付けられるようにしてもよい。このようにすれば、情報の漏えいを防止することができる。【００１８】
また、本発明に係るキャッシュ方法は、送受信されるファイルを一時的に保持するノード装置を複数含むネットワークシステムによって実行される。また、ノード装置は、当該ノード装置が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、隣接するノード装置とは異なるグループに属し、ファイルは、ゼロ以上のグループを示す情報と関連付けられる。そして、ノード装置が、当該ノード装置が属するグループを示す情報と関連付けられたファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するステップと、他のノード装置が要求するファイルに対応するキャッシュファイルを保持している場合、当該キャッシュファイルを他のノード装置に対して送信するステップとを実行する。【００１９】
また、本発明に係る管理装置は、自身が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、隣接するノード装置とは異なるグループが優先して割り当てられると共に、自身が属するグループを示す情報と関連付けられたファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するノード装置を複数含むネットワークシステムに接続される。そして、管理装置は、ノード装置からファイルに対する取得要求を計数し、頻度を算出する頻度算出部と、頻度算出部が算出した頻度に基づいてファイルに割り当てる、ゼロ以上のグループを決定し、ファイルとグループとの組合せを示す情報をノード装置へ送信する設定変更部とを備える。【００２０】
このようにすれば、ファイルに対する取得要求の頻度に応じて、ファイルをキャッシュすべきノードのグループを設定することができる。なお、管理装置は、オリジナルのファイルを配信する装置であってもよい。【００２１】
また、設定変更部は、取得要求を受ける頻度が高いファイルほど多くのグループを割り当てるようにしてもよい。このようにすれば、要求の頻度が高い人気のあるファイルをより多くのノード装置にキャッシュさせられるようになる。【００２２】
また、本発明に係る管理方法は、自身が保持すべきファイルを特定するための複数のグループのいずれかであって、ネットワークトポロジ上、隣接するノード装置とは異なるグループが優先して割り当てられると共に、自身が属するグループを示す情報と関連付けられたファイルを受信した場合、当該ファイルをキャッシュファイルとして一時的に保持するノード装置を複数含むネットワークシステムに接続される管理装置が実行する。具体的には、ノード装置からファイルに対する取得要求を計数し、頻度を算出するステップと、頻度算出部が算出した頻度に基づいてファイルに割り当てる、ゼロ以上のグループを決定し、ファイルとグループとの組合せを示す情報をノード装置へ送信するステップとが実行される。【００２３】
なお、課題を解決するための手段に記載の内容は、本発明の課題や技術的思想を逸脱しない範囲で可能な限り組み合わせることができる。また、課題を解決するための手段の内容は、コンピュータ等の装置若しくは複数の装置を含むシステム、コンピュータが実行する方法、又はコンピュータに実行させるプログラムとして提供することができる。なお、プログラムを保持する記録媒体を提供するようにしてもよい。
【発明の効果】
【００２４】
簡易な構成により、ファイルへのアクセスの集中を避け、且つ全体の通信量を削減できるネットワークシステムを提供することができるようになる。
【図面の簡単な説明】
【００２５】
【図１】実施形態に係るネットワークシステムの構成の一例を示す図である。
【図２】ファイルに付される、グループを示す情報を説明するための図である。
【図３】ノードの構成の一例を示すブロック図である。
【図４】配信サーバの構成の一例を示すブロック図である。
【図５】ネットワークシステムが行うファイル配信処理の一例を示す処理フロー図である。
【図６】フルメッシュ型のネットワークの例を示す図である。
【図７】バス型のネットワークの例を示す図である。
【図８】企業のネットワークシステムにおける実施例を示す図である。
【図９】キャッシュ対象更新処理の一例を示す処理フロー図である。
【図１０】所定期間におけるファイルへのアクセス数と、当該ファイルに関連付けて割り当てられるグループを示すタグの一例を示す図である。
【図１１Ａ】図１のノード１１ａが記憶する、近傍のノードが存在する方向を示す情報の一例である。
【図１１Ｂ】図１のノード１１ｂが記憶する、近傍のノードが存在する方向を示す情報の一例である。
【図１２】キャッシュの許否を示すホワイトリストを中継ノードが有する例を説明するための図である。
【図１３】ファイルに対して当該ファイルをキャッシュすべきグループを示すタグと、当該ファイルにアクセスを認可するユーザを特定するための情報とを関連付けて記憶する例を示す図である。
【図１４】遺伝的アルゴリズムを利用してキャッシュ配置を決定する手順を説明するための図である。
【図１５】外部サーバとの通信量を示すグラフである。
【図１６】ネットワーク上にキャッシュされるファイル及びその数を示すグラフである。
【図１７】ネットワーク内部における通信量を示すグラフである。
【発明を実施するための形態】
【００２６】
以下、図面を参照して本発明を実施するための形態について説明する。なお、実施形態の構成は例示であり、本発明は実施形態に示す構成に限定されない。
【００２７】
＜ネットワーク構成＞
図１は、実施形態に係るネットワークシステム（単に「ネットワーク」とも呼ぶ）１の構成の一例を示す図である。実施形態に係るネットワーク１は、例えば電気通信回線を介して相互に通信可能に接続された複数のコンピュータによって形成され、コンピュータが記憶する様々な形式の電子データ（「ファイル」とも呼ぶ）をコンピュータ間において送受信することができる。図１に示すメッシュ型のネットワークは、日本国内に設けられたバックボーンの一例を表すモデルである。
【００２８】
図１に示すハッチングが施された正円の各々は、ネットワーク１に接続されたコンピュータ（「ノード」又は「ノード装置」とも呼ぶ）を示す。なお、一部のノードに、便宜上１１ａ〜１１ｅの符号を付している。また、各ノードは、図１に直線で示す光ファイバケーブル等の伝送路（「リンク」とも呼ぶ）で隣接する１以上のノードと接続されている。なお、あるノードに対して、他のノードを介することなくリンクで直接的に接続されたノードを、隣接するノードと呼ぶものとする。
【００２９】
また、ネットワーク１は、オリジナルのファイルを記憶し、例えばノードからの要求を受けてファイルを配信するコンピュータである配信サーバ２を含む。配信されるファイルは、配信サーバ２から要求元のノードへ、経路上のノードを経由して伝送される。また、本実施形態では、各ノードは、キャッシュサーバとしても機能する。キャッシュサーバは、送受信するファイルをキャッシュファイルとして一時的に記憶（キャッシュ）し、同一のファイルに対する要求に対しキャッシュファイルを送信する。
【００３０】
また、本実施形態では、複数のノードが同一のファイルを分散してキャッシュする。そして、ファイルのダウンロードを要求するノードは、例えば当該ファイルをキャッシュするノードのうち、自ノードからのホップ数が最も小さいノードからファイルを受信する。具体的には、各ノードが保持すべきファイルを特定するためのグループを定義する。各ノードは、予め定められた複数のグループのいずれかに属するものとする。図１の例では、各ノードに施されたハッチングのパターンが、当該ノードの属するグループを表している。一方、各ファイルは、当該ファイルをキャッシュすべきゼロ以上のグループを示す情報を有する。そして、各ノードは、自身が属するグループを示す情報を有するファイルを送受信する際、当該ファイルをキャッシュする。
【００３１】
図１の例では、ノードは４つのグループに分類されている。ここで、四色定理によれば、図１に示すようなリンクが交差しないメッシュ型のネットワークにおいては、少なくとも４色あれば同じ色が隣接しないようにノードを塗り分けられることがわかる。隣接するノードが異なるグループに属するように、ノードをＮ個のグループに分ける場合、Ｎ色による塗り分け問題を解くことでグループを決定することができる。具体的には、次数の高いノードから順に、色間距離が遠い色を付すことにより、同色が隣り合わないように彩色することができる。すなわち、接続されているリンクが多いノードから順に、そのノードの近くに存在する色を順に除外していき残った色を付す。なお、既存のネットワークに新たなノードを接続する場合は、単に隣接するノードとは異なる色を付すようにしてもよいし、ネットワーク全体について塗り直すようにしてもよい。なお、グループの数は４以上が好ましいが、ネットワークによっては４未満でも塗り分けできる場合がある。以下、本実施形態に係るグループを「色」とも呼ぶものとする。
【００３２】
図２は、ファイルに付される、グループを示す情報を説明するための図である。図２のファイル３は、コンピュータによって生成、読み出し、書き込み、記憶等される様々な電子データであり、動画や文書、アプリケーションの実行ファイル等である。また、ファイル３には、ゼロ以上の上述したグループを示す情報が関連付けられている。図２の例では、１つのファイル３に対し、吹出し内に示すようにハッチングのパターンで表した０〜４個のグループの組合せが関連付けられる。具体的には、各ノードにおいて、例えばグループの数だけ桁数を有するビット列によって表されるタグを、ファイルの識別情報に関連付けて保持しておくことにより、各ノードはキャッシュすべきファイルを特定することができる。また、このようなファイルのリストは、各ノードにおいてデータベースのテーブルに記憶させるようにしてもよい。また、このような関連付けは、例えば配信サーバ２等の管理装置が一元的に管理し、例えばキャッシュすべきファイルのリストをネットワーク上のノードにブロードキャストして各ノードの記憶装置に保持するようにしてもよいし、ネットワーク上の所定の管理装置に保持させて各ノードが読み出せるようにしてもよい。なお、４つのグループが存在する場合、４桁のビット列によって２４種類のタグを生成することができる。また、頻繁にアクセスされるファイルほど、多くのグループでキャッシュするようにしてもよい。また、すべてのファイルにグループを関連付ける必要はなく、タグが「００００」のファイルは、いずれのグループにもキャッシュされないファイルを示す。
【００３３】
そして、図１に示したノードは、自身が属するグループを示す情報を有するファイルを受信した場合、当該ファイルをキャッシュすると共に、他のノードからの要求に対して自身がキャッシュしている情報を出力する。
【００３４】
＜ノードの構成＞
図３は、ノードの構成の一例を示すブロック図である。ノード４は、一般的なコンピュータであり、通信Ｉ／Ｆ４１と、記憶装置４２と、入出力装置４３と、プロセッサ４４と、バス４５とを備えている。
【００３５】
通信Ｉ／Ｆ４１は、例えばネットワークカードであり、所定のプロトコルに基づき、図１に示したリンクを介して他のコンピュータと通信を行う。例えば、ノード間においてファイル３を送受信する。
【００３６】
記憶装置４２は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等の主記憶装置及びＨＤＤ（Hard-disk Drive）やＳＳＤ（Solid State Drive）、フラッシュメモリ等の補助記憶装置（二次記憶装置）である。主記憶装置は、プロセッサが読み出したプログラムやデータを一時的に記憶したり、プロセッサの作業領域を確保したりする。補助記憶装置は、プロセッサが実行するプログラムや、送受信されるファイルのキャッシュ、当該ノード４が属するグループを示す情報等を記憶する。
【００３７】
入出力装置４３は、例えばキーボード、マウス等の入力装置や、モニタ等の出力装置、タッチパネル等である。例えば、ユーザは、入出力装置４３を介して配信サーバに対しファイルの送信を要求したり、受信したファイルを読み出して表示させたりする。
【００３８】
プロセッサ４４は、ＣＰＵ（Central Processing Unit）等の演算処理装置であり、アプリケーション（プログラム、ソフトウェア等とも呼ぶ）を実行することにより本実施の形態に係る各処理を行う。図３の例では、プロセッサ４４内に機能ブロックを示している。プロセッサ４４は、例えば、ファイル要求部４４１、伝送中継部４４２、キャッシュ保持部４４３、キャッシュ送信部４４４、キャッシュ削除部４４５、セキュリティ制御部４４６の各処理部として機能する。ファイル要求部４４１は、例えばユーザの操作に基づいて、ネットワークを介して接続されたファイル配信サーバに対し、ファイルの送信を要求する。伝送中継部４４２は、他のノードと配信サーバとの経路上に当該ノード４が位置する場合において、他のノードから配信サーバへのファイル送信要求や、他のノードへ送信するファイルを中継する。キャッシュ保持部４４３は、ファイルに関連付けられたグループを示す情報に基づいて、受信したファイルを保持するか否か判断し、記憶装置４２に一時的に保持させる。キャッシュ送信部４４４は、他のノードから配信サーバへのファイルの要求に対し、当該ノード４の記憶装置４２にキャッシュされている場合、キャッシュされているファイルを他のノード装置に送信する。キャッシュ削除部４４５は、所定のルールに基づいて、記憶装置４２に記憶されたキャッシュを削除する。また、セキュリティ制御部４４６は、キャッシュの保持に際し、所定の秘匿化を行う。
【００３９】
以上のような構成要素が、バス４５を介して接続されている。
【００４０】
＜配信サーバの構成＞
図４は、配信サーバの構成の一例を示すブロック図である。配信サーバ２も、一般的なコンピュータであり、通信Ｉ／Ｆ２１と、記憶装置２２と、入出力装置２３と、プロセッサ２４と、バス２５とを備えている。
【００４１】
通信Ｉ／Ｆ２１は、例えばネットワークカードであり、所定のプロトコルに基づき、図１に示したリンクを介して他のコンピュータと通信を行う。例えば、隣接するノードにとの間でファイル３を送受信する。
【００４２】
記憶装置２２は、ＲＡＭやＲＯＭ等の主記憶装置及びＨＤＤやＳＳＤ、フラッシュメモリ等の補助記憶装置である。主記憶装置は、プロセッサが読み出したプログラムやデータを一時的に記憶したり、プロセッサの作業領域を確保したりする。補助記憶装置は、プロセッサが実行するプログラムや、配信するオリジナルのファイル等を記憶しているものとする。また、各ファイルに関連づけて、当該ファイルをキャッシュするグループを示す情報を記憶するようにしてもよい。さらに、ファイルに対する送信要求を計数し、所定期間における頻度に基づいて各ファイルをキャッシュするグループの設定を変更するようにしてもよい。
【００４３】
入出力装置２３は、例えばキーボード、マウス等の入力装置や、モニタ等の出力装置、タッチパネル等である。
【００４４】
プロセッサ２４は、ＣＰＵ等の演算処理装置であり、アプリケーションを実行することにより本実施の形態に係る各処理を行う。図４の例では、プロセッサ２４内に機能ブロックを示している。プロセッサ２４は、例えば、ファイル配信部２４１、頻度算出部２４２、設定変更部２４３、セキュリティ制御部２４４の各処理部として機能する。ファイル配信部２４１は、送信の要求を受けたファイルを記憶装置２２から読み出し、要求元のノードに対して送信する。頻度算出部２４２は、ファイルごとにアクセス数を計数し、所定期間内のアクセス頻度を算出する。設定変更部２４３は、アクセス頻度に応じて、各ファイルをキャッシュするグループを示す情報を変更する。設定の変更に伴い、設定変更部２４３は、ネットワーク上のノードに対し、特定のキャッシュファイルの削除を指示する情報を送信するようにしてもよい。また、セキュリティ制御部２４４は、送信するファイルに対し、所定の秘匿化を行う。
【００４５】
以上のような構成要素が、バス２５を介して接続されている。
【００４６】
＜ファイル配信処理＞
図５は、ネットワークシステムが行うファイル配信処理の一例を示す処理フロー図である。図５の要求元ノードは、図１に示したいずれかのノードに相当し、図３に示した機能部を備えている。図５の配信サーバは、図１に示した配信サーバ２に相当する。また、図５の中継ノードは、図１おける要求元ノードと配信サーバ２との間の経路上に存在するノードに相当する。すなわち、２以上の中継ノードを経由する場合もあるし、中継ノードを経由しない場合もある。図５では、便宜上、１つの中継ノードを示す。
【００４７】
まず、要求元ノードのファイル要求部４４１は、配信サーバが保持するファイルの送信を要求する（図５：Ｓ１）。一方、中継ノードの伝送中継部４４２は、要求を受信し（Ｓ２）、自ノードの記憶装置４２に対応するキャッシュファイルを保持しているか判断する（Ｓ３）。キャッシュを保持している場合（Ｓ３：Ｙｅｓ）、中継ノードのキャッシュ送信部４４４は、キャッシュファイルを要求元ノードに送信する（Ｓ４）。また、中継ノードがキャッシュを保持していない場合（Ｓ３：Ｎｏ）、中継ノードの伝送中継部４４２は、隣接する中継ノード（図示せず）又は配信サーバに要求を中継する（Ｓ５）。なお、中継ノードが複数存在する場合は、同様の処理が繰り返される。そして、配信サーバ２のファイル配信部２４１は、ファイルに対する送信の要求を受信し（Ｓ６）、該当するファイルを記憶装置２２から読み出して送信する（Ｓ７）。一方、中継ノードの伝送中継部４４２は、ファイルを要求元のノード対して中継する（Ｓ８）。そして、Ｓ８の後、又はＳ４において中継ノードがキャッシュを送信した後、要求元ノードのファイル要求部４４１はＳ１において要求したファイルを受信する（Ｓ９）。また、Ｓ８においてファイルを要求元ノードへ送信する場合、中継ノードのキャッシュ保持部４４３は、当該ファイルは自ノードにおいてキャッシュすべき対象であるか判断する（Ｓ１０）。本ステップでは、ファイルに対し、自ノードが属するグループを示す情報が関連付けられているか判断する。ファイルとグループを示す情報との関連付けは、自ノードの記憶装置４２又はネットワーク上の所定の装置が保持するデータベースのテーブルやファイルに記憶させておくことができる。そして、中継したファイルがキャッシュすべき対象であると判断された場合（Ｓ１０：Ｙｅｓ）、中継ノードのキャッシュ保持部４４３は、当該ファイルを記憶装置４２に一時的に保持する。一方、中継したファイルがキャッシュすべき対象でないと判断された場合は、中継ノードはファイルを保持しない。ネットワークシステム１は、要求元ノードからファイルの送信要求に対して、図５に示したようなファイル配信処理を繰り返す。
【００４８】
＜効果＞
本実施形態によれば、同一のグループに属するノードが隣接しないようにノードをグループ分けするという簡便な方法により、同一のファイルをキャッシュするノードをネットワーク上に分散させ、いずれのノードからもある程度近接した位置に各グループに属するキャッシュサーバが存在するという準最適なキャッシュ配置を実現することができる。また、図２に示したように、１つのファイルには複数のグループを示す情報を関連付けておくようにしてもよい。アクセス頻度の高いファイルほど、多くのグループに属するノードでキャッシュすれば、ネットワーク上におけるキャッシュのヒット率を向上させることができる。
【００４９】
図１では国内のバックボーンを示すメッシュ型のネットワークを例示したが、実施形態に係るネットワークは様々な規模及びトポロジのネットワークに適用することができる。例えば、複数の拠点ごとにネットワークを形成し、いわゆるクラウド上に共通のファイルサーバを設けた、企業等のような組織のネットワークシステムに適用するようにしてもよい。各拠点のイントラネットにおいてファイルをキャッシュすれば、一般的に、ファイルの取得に要する時間を短縮することができるといえる。また、クラウドとの通信量に応じて料金が発生するような場合、キャッシュを利用することにより費用を低減させることができる。
【００５０】
図６、７は、ネットワークのトポロジの他の例を示す図である。本実施形態に係るネットワークのトポロジも特に限定されず、メッシュ型のほか、いわゆるリング型、スター型、ツリー型、ライン型等に適用することができる。ただし、図６に示すように、フルメッシュ型のネットワーク（図６：左図）については、交差する任意のリンクを削除する（図６：右図）ことで、同一のグループに属するノードが隣接しないように４つのグループに分類できるようにしてもよい。また、グループの数を増やすことによって、同一のグループに属するノードが隣接しないようにしてもよい。
【００５１】
また、図７は、バス型のネットワークの例である。バス型のネットワーク（図７：上図）については、例えば新たなグループ（図７：無色）の定義を追加し、スイッチを新たなグループ（図７：下図）に属するノードとして扱うことにより、同一のグループに属するノードが隣接しないようにしてもよい。ここでは、レイヤ２スイッチ、レイヤ３スイッチ、ルータ等を「スイッチ」と呼ぶものとする。図７のスイッチは、ファイル転送を行うが、補助記憶装置の容量はゼロのノードといえる。また、１つスイッチに接続されたコンピュータを、距離がゼロのノードと定義し、距離がゼロである複数のノード内において、グループが分散するように割り当てられるようにしてもよい。
【００５２】
図８は、４つの拠点を有する企業のネットワークシステムにおいて、社員のコンピュータにファイルを分散させてキャッシュする一例を示す図である。東京、名古屋、大阪、博多の各拠点は、インターネット上に構築されたＶＰＮ（Virtual Private Network）を介して接続されている。また、クラウドサービスを提供する配信サーバ２に、社内で利用するコンテンツを記憶させ、配信サーバ２から適宜ダウンロードするものとする。図８のネットワークシステムでは、各拠点におけるＶＰＮサーバを送受信されるファイルを一時的にキャッシュするノードとして、隣接するノードが異なるグループに属するように、グループを割り当てるようにしてもよい。また、各拠点においては、互いに距離がゼロのノードが、スイッチを介して複数接続されている。図８の例では、各拠点においてもグループが分散するように各ノードに割り当てられている。拠点のローカルネットワークに接続されたノードは、所望のファイルにアクセスする場合、拠点内のノードにキャッシュされているときは拠点内のノードからダウンロードする。拠点内のノードにキャッシュされていない場合は、他の拠点又は配信サーバ２からダウンロードする。このようにすれば、クラウド上の配信サーバ２との通信量の増大を抑えることができると共に、ファイルのダウンロードに要する時間を低減させることができる。
【００５３】
＜キャッシュ対象更新処理＞
また、上述したネットワークシステムにおいて、ファイルに対するキャッシュの優先度を決定し、ファイルに関連付けられたグループを示す情報（キャッシュすべきファイルの一覧）を動的に変更するようにしてもよい。キャッシュの優先度は、配信サーバ２又は他の管理装置の頻度算出部２４２が算出する各ファイルへのアクセス頻度に基づき決定する。
【００５４】
図９は、キャッシュ対象のファイルを変更するキャッシュ対象更新処理の一例を示す処理フロー図である。例えば、ネットワークシステム１は、図５に示したファイル配信処理に加え、図９に示すような処理を行う。
【００５５】
まず、中継ノードは、要求に応じてキャッシュファイルを送信した回数をファイルごとに計数しておき、当該回数を所定のタイミングで配信サーバ２へ送信する（図９：Ｓ２１）。一方、配信サーバ２は、各中継ノードからファイルの送信回数を受信し、ファイルごとのアクセス数を記憶する（Ｓ２２）。本ステップでは、アクセス数を集計するためのアクセスログを受信するようにしてもよい。また、図４に示した処理フロー図において、例えば配信サーバはＳ７においてファイルを送信する場合、さらに当該ファイルへのアクセスログを記憶装置２２に書き出す（Ｓ２３）。
【００５６】
そして、配信サーバ２は、所定のタイミングで所定期間における各ファイルへのアクセス回数（すなわち、アクセスの頻度）を算出し（図示せず）、頻度の高いファイルほどキャッシュの優先度が高いものとしてより多くのグループにキャッシュさせる。すなわち、ファイルに対しより多くのグループを示す情報を関連付けるようにする。具体的には、まず、頻度算出部２４２は、キャッシュ対象を更新するタイミングであるか判断する（Ｓ２４）。例えば、予め定められた動作時刻が到来した場合や、前回の処理から所定期間が経過した場合等の条件を満たした場合に、キャッシュ対象を更新するタイミグであると判断するものとする。キャッシュ対象を更新するタイミングでないと判断された場合、配信サーバ２は特に処理を行わない。一方、キャッシュ対象を更新するタイミングであると判断された場合（Ｓ２４：Ｙｅｓ）、頻度算出部２４２は、ファイルごとのアクセス頻度を算出し、キャッシュ対象を決定する（Ｓ２５）。
【００５７】
図１０は、所定期間におけるファイルへのアクセス数と、当該ファイルに関連付けて割り当てられるグループを示すタグの一例を示す図である。配信サーバ２は、当該配信サーバ２が要求に応じて送信したファイルについてのアクセスログと、中継ノードがキャッシュを送信した旨のアクセスログを所定期間分集計し、図１０に示すようなファイルごとの統計データを生成する。図１０に示す表は、「アクセス数」、「順位」、「人気」、「ファイル名」、及び「タグ」の項目を有する。「アクセス数」のフィールドには、所定期間におけるファイルへのアクセス数であり、頻度を表す値が記録されている。図９のＳ２５においては、所定期間におけるアクセス数が算出される。「順位」のフィールドには、頻度の高さを基準に並べたファイルの順序を表す数値が記録されている。「人気」のフィールドには、頻度の高さ又は順位を基準に分類したカテゴリを示す情報が記録されている。「ファイル名」のフィールドには、各ファイルの識別情報の一例である名称が記録されている。「タグ」のフィールドには、当該ファイルをキャッシュするグループを示す情報が上述したタグの形式で記録されている。
【００５８】
また、設定変更部２４３は、アクセス頻度に応じて、各ファイルをキャッシュするグループを決定する（図９：Ｓ２５）。本ステップでは、各ファイルに対しキャッシュするグループを割り当てる。まず、所定期間のアクセス数に基づいて、図１０に示す人気の程度を決定する。例えばノードを４つのグループに分ける場合、人気の程度を５段階に分類する。すなわち、人気「高」のファイルを４つのグループすべてにおいてキャッシュさせ、人気「中高」のファイルを３つのグループにおいてキャッシュさせ、人気「中」のファイルを２つのグループにおいてキャッシュさせ、人気「中低」のファイルを１つのグループにおいてキャッシュさせ、人気「低」のファイルはいずれのグループにおいてもキャッシュさせないものとする。このように、人気のカテゴリに応じて当該ファイルをキャッシュするノードのグループ数が決定され、その後、同数のグループが割り当てられたファイルに対し循環的にグループの組合せを割り当てる。例えば、図１０の順位１１以降のレコードの「タグ」のフィールドには、３つのグループの組み合わせを循環的に割り当てることにより決定されたタグが記録されている。Ｓ２５においては、直近の所定期間における各ファイルへのアクセス頻度に基づいて、ファイルに関連付けられるタグが更新される。
【００５９】
そして、設定変更部２４３は、各ファイルをキャッシュの対象とするグループを示すリストを、各ノードへ配信する（図９：Ｓ２６）。本ステップでは、例えば図１０の「ファイル名」及び「タグ」の列に示す情報が、各ノードへブロードキャストされる。中継ノードは、リストを受信すると、当該リストを記憶装置４２に保持させると共に以降は当該リストに基づいて自ノードがキャッシュする対象のファイルを決定する（Ｓ２７）。
【００６０】
なお、本実施形態においては、各ノードは、各グループが割り当てられた近傍のノードが存在する方向を予め記憶しておくようにしてもよい。図１１Ａは、図１のノード１１ａが記憶する、近傍のノードが存在する方向を示す情報の一例である。図１１Ｂは、図１のノード１１ｂが記憶する、近傍のノードが存在する方向を示す情報の一例である。図１１Ａ及び図１１Ｂの表は、「グループ」の列と「宛先ノード」の列とを含む。「グループ」のフィールドには、ノード及びファイルに割り当てられるグループを示す識別情報が登録される。ここでは、図１における横線のハッチングをグループＡ、右上から左下へ向かう太い実線のハッチングをグループＢ、縦の破線のハッチングをグループＣ、左上から右下に向かう細い実線のハッチングをグループＤと呼ぶものとする。また、「宛先ノード」のフィールドには、各グループに属するノードのうち最小のホップ数で到達できるものへアクセスするための、要求の宛先となるノードを示す識別情報が登録される。具体的には、ネットワークシステムの構成や採用するプロトコルに応じて、機器のＭＡＣアドレス、ＩＰアドレス、ポート番号等の識別情報が登録される。図１のノード１１ａから最も近い、グループＡに属するノードは、ノード１１ｄであり、ノード１１ｂを介してアクセスすることができる。したがって、図１１Ａにおいては、グループＡに対応づけてノード１１ｂが登録されている。また、図１においてノード１１ａから最も近い、グループＢに属するノードは、ノード１１ｃであり、図１１ＡにおいてはグループＢに対応付けてノード１１ｃが登録されている。図１においてノード１１ａから最も近い、グループＣに属するノードは、ノード１１ｂであり、図１１ＡにおいてはグループＣに対応付けてノード１１ｂが登録されている。また、自ノードが属するグループＤについては、宛先ノードのフィールドには他のノードは登録されない。
【００６１】
ノード１１ａは、図９のＳ２７において受信するリストに基づいて、あるファイルがいずれかのグループに属するノードによってキャッシュされることを知ることができる。そして、図１１Ａに示す情報に基づいて、所望のファイルが属するグループが割り当てられた最も近いノードにファイルを要求することができる。同様に、ノード１１ｂは、図１１Ｂに示すような情報を保持している。例えば、ノード１１ａから、グループＡに属するファイルを取得するための要求を受けた場合、ノード１１ｂは、図１１Ｂに示す情報のうちグループのフィールドに「Ａ」が登録されたレコードを参照し、グループＡに属する最も近いノードは、ノード１１ｄであることがわかる。また、ノード１１ｂを基準とする場合のグループＢに属する最も近いノードは、いずれもホップ数が２のノード１１ｃ及びノード１１ｅであり、図１１Ｂに示す情報には宛先ノードとしてノード１１ａ及びノード１１ｄの２つが登録されている。このようなとき、複数の宛先のノードのうち１つを主系として登録して通常利用し、他方をネットワーク切断等の障害発生時に利用するようにしてもよい。また、複数の宛先ノードを順に利用するラウンドロビン方式を採用し、ノード及び通信回線にかかる負荷を分散させるようにしてもよい。
【００６２】
各ノードに割り当てられたグループは、ノード間に新たなノードが追加されたり、ノード間の既存のノードが削除されたりしない限り、基本的には変更されない。したがって、図１２Ａ及び図１２Ｂに示す情報も基本的には変更する必要がない。
【００６３】
＜効果＞
キャッシュ対象更新処理によれば、配信サーバから新たに配信されるファイルについてもその後のアクセス数に応じてキャッシュさせることができると共に、既存のファイルに対するアクセス頻度の傾向が変化した場合にも、傾向の変化に追従してネットワークにおけるキャッシュのヒット率を維持及び向上させられるよう設定を変更できる。なお、アクセス頻度の算出やキャッシュすべきファイルのリストの更新は、配信サーバ２とは異なるネットワーク上の管理装置が行うようにしてもよい。また、各中継ノードが記憶するファイルへのアクセスログは、ネットワーク上の所定の装置に保持させ、配信サーバ２又は上記管理装置が各中継ノードにおけるアクセスログを読み出せるようにしてもよい。
【００６４】
＜変形例１＞
上述したネットワークシステムにおいて、ファイルに対するキャッシュの許否を示す情報をさらに設定するようにしてもよい。キャッシュの許否を示す情報は、例えば各ファイルがメタデータとして保持するようにしてもよい。また、ブラックリスト又はホワイトリストにより、各ノードがキャッシュの許否を示す情報を保持するようにしてもよい。ブラックリスト又はホワイトリストは、例えばＵＲＬ（Uniform Resource Locator）フィルタによって記述するようにしてもよいし、ファイル名又はファイルの格納場所を示す階層構造等を識別情報とするリストによって記述するようにしてもよい。
【００６５】
このような場合、図４に示した処理フロー図において、例えば中継ノードはＳ１０において中継したファイルがキャッシュを許可されているか否かさらに判断し、キャッシュを許可されていない場合にはキャッシュを保持しないようにする。
【００６６】
図１２は、キャッシュの許否を示すホワイトリストを中継ノードが有する例を説明するための図である。図１２では、配信サーバ２は「Ａ．ｐｄｆ」〜「Ｄ．ｐｄｆ」等のファイルを保持している。また、中継ノードは、正規表現で「Ａ．ｐｄｆ」〜「Ｃ．ｐｄｆ」等のキャッシュを許可する旨のホワイトリストを有している。このような場合において、中継ノードに接続された端末１からの要求を受けて配信サーバ２から端末１へ「Ａ．ｐｄｆ」が送信され、端末２からの要求を受けて配信サーバ２から端末２へ「Ｄ．ｐｄｆ」が送信されたものとする。このような場合において、仮に「Ａ．ｐｄｆ」及び「Ｄ．ｐｄｆ」のいずれも中継ノードが属するグループを示す情報が関連付けられていたとしても、中継ノードはホワイトリストにおいてキャッシュが許可されている「Ａ．ｐｄｆ」はキャッシュし、ホワイトリストにおいてキャッシュが許可されていない「Ｄ．ｐｄｆ」はキャッシュしない。
【００６７】
変形例１によれば、明示的にキャッシュを禁止することができるため、例えばファイルが社員の給与明細のように秘密性のあるものである場合に情報の漏えいを防止することができる。また、ブラックリスト又はホワイトリストをノードに保持させることにより、図１０に示したファイルの人気の程度からは独立して、キャッシュの許否を設定することができる。すなわち、例えば配信サーバ２は、仮にあるファイルに対してキャッシュの許否を示す設定が変更された場合であっても、アクセス頻度に基づくファイルの順位を再度求めたり、ファイルのタグを「００００」（いずれのグループに属するノードにもキャッシュさせない設定）に変更したりする必要がない。また、ブラックリスト又はホワイトリストをノードに保持させることにより、ノードごとに異なる設定をすることもできる。例えば、ある社外秘のファイルについて、社内のローカルネットワーク又はプライベートクラウドを形成するノードに対してはキャッシュを許可し、社外のパブリッククラウドを形成するノードに対してはキャッシュを拒否するという設定にしてもよい。
【００６８】
＜変形例２＞
ファイルについて、アクセスされ易いファイルを予測しておき、キャッシュすべきか否か決定するようにしてもよい。例えば、ファイルがハイパーテキスト形式の文書からリンクされている場合、ウェブサイトのトップページのように基準となる文書からアクセスするまでに経由するリンクの数が少ないほどアクセスされ易いと予測するようにしてもよい。すなわち、トップページから少ないクリックで到達するファイルはアクセスされる可能性が高いと判断してキャッシュするものとする。具体的には、ウェブクローラによりウェブサイトを巡回させて各ファイルに到達するまでに経由するリンクを計数し、経由するリンク数が所定の閾値よりも少ないファイルの一覧を作成する。このようにすれば、アクセスされ易いと予測されるファイルを自動的に抽出し、ファイルをキャッシュさせるための設定を生成することができる。
【００６９】
ファイルをキャッシュさせるための設定は、例えば配信サーバからブロードキャストされ、各ノードが記憶する。この場合、ファイルも配信して予めキャッシュさせるようにしてもよいし、各ノードにおいて該当するファイルの送受信が初めて発生したときにキャッシュさせるようにしてもよい。
【００７０】
変形例２によれば、ファイルごとにアクセス頻度の算出を行うことなく、所定の基準に基づいてキャッシュすべきか否か判断することができる。また、例えば配信サーバから新たに配信される、アクセス頻度が未知のファイルについても、所定の基準に基づいてキャッシュすべきか否か判断できるようになる。
【００７１】
＜変形例３＞
また、配信サーバが保持するファイルは、任意のタイミングで更新されることもあり得る。本変形例では、中継ノードはキャッシュしたファイルについて再取得が必要であるか否か、確認又は通知するものとする。
【００７２】
例えば、中継ノードは要求元ノードから要求を受けたファイルをキャッシュしている場合であっても、配信サーバにおける更新の有無を毎回確認するようにしてもよい。具体的には、図４に示した処理フロー図のＳ３においてキャッシュを保持していると判断した場合（Ｓ３：Ｙｅｓ）、さらに配信サーバが保持するファイルが更新されていないか判断する（図示せず）。ファイルの更新の有無は、例えば、キャッシュしているファイルとファイル名等の識別情報が同一である配信サーバ上のファイルについて、タイムスタンプが更新されているか否かを基準として判断するようにしてもよいし、所定のアルゴリズムによりファイルから算出されるチェックサムに基づいて判断するようにしてもよい。また、配信サーバにおいてファイルが更新されていない場合は、図４のＳ４に遷移し、キャッシュファイルを要求元ノードへ送信する。一方、配信サーバにおいてファイルが更新されている場合は、図４のＳ５に遷移し、配信サーバからファイルを取得する。このようにすれば、配信サーバにおいてファイルが更新された場合であっても、速やかに最新のファイルを要求元ノードに送信することができる。
【００７３】
また、中継ノードはキャッシュファイルについて所定の有効期限を定めておき、有効期限を超過した場合に更新の有無を配信サーバへ確認するようにしてもよい。例えば、図４に示した処理フロー図のＳ１１においてキャッシュを保持する際には当該時点の日時又は当該時点から所定期間後の有効期限を示す日時を関連づけて記憶装置４２に保持しておく。その後、Ｓ３においてキャッシュを保持していると判断した場合（Ｓ３：Ｙｅｓ）、さらにキャッシュした時点から所定期間を超過しているか判断し、超過している場合には配信サーバが保持するファイルが更新されていないか判断する（図示せず）。その後の処理は、上述の毎回確認する場合と同様とする。このようにすれば、ファイルの更新を確認するために発生する通信の増大を抑制しつつ、妥当なタイミングで更新の有無を確認できる。
【００７４】
また、配信サーバは、オリジナルのファイルについて追加、更新（変更）、削除等された場合に、キャッシュし直すべきファイルを示すリストの差分を生成し、各ノードへブロードキャストするようにしてもよい（図示せず）。このようにして更新等の通知を受けた場合、中継ノードは、図４のＳ３においてキャッシュの有無に関わらずＳ５へ遷移し、配信サーバから更新後のファイルを取得する。このようにすれば、ファイルの更新を確認するために発生する通信の増大を抑制しつつ、配信サーバにおいてファイルが更新された場合であっても、速やかに最新のファイルを要求元ノードに送信することができる。
【００７５】
＜変形例４＞
また、中継ノードにおいて、適切なタイミングでキャッシュを削除するようにしてもよい。例えば、上記変形例２においてファイルへのアクセス頻度に基づいてキャッシュすべきファイルの一覧を更新すると共に、一覧から外れたファイルについてキャッシュを削除すべき旨の命令を各ノードへブロードキャストする。一方、中継ノードのキャッシュ削除部４４５は、命令に従い、キャッシュしているファイルを記憶装置４２から削除する。
【００７６】
また、削除するキャッシュファイルは、各中継ノードが決定するようにしてもよい。例えば、ＬＦＵ（Least Frequently Used）方式を採用し、キャッシュ削除部４４５は、アクセス頻度の低いキャッシュファイルを優先的に削除するようにしてもよい。
【００７７】
変形例４によれば、ファイルのキャッシュに要する中継ノードの記憶領域を、適宜解放することができる。
【００７８】
＜変形例５＞
また、中継ノード又は配信サーバ２は、キャッシュファイルに対し秘匿化又は暗号化を行うセキュリティ制御部を備えるようにしてもよい。セキュリティ制御部４４６は、例えば、ファイルに対してアクセスを許可するユーザを示す情報を関連付けて記憶させておき、要求元ノードがファイルの送信を要求する際にユーザの認証を行うようにしてもよい。
【００７９】
図１３は、ファイルに対して当該ファイルをキャッシュすべきグループを示すタグと、当該ファイルにアクセスを認可するユーザを特定するための情報（ＡＣＬ（Access Control List））とを関連付けて記憶する例を示す図である。図１３の例では、ＡＣＬのフィールドにユーザが属する部署を示す情報が登録されている。そして、要求元ノードは、図４のＳ１において、ユーザの認証情報を含むリクエストを中継ノードに送信する。一方、中継ノードは、図４のＳ３においてキャッシュファイルを保持していると判断した場合（Ｓ３：Ｙｅｓ）、さらに認証情報が示すユーザの所属部署に基づいて要求されたファイルの送信の許否を判断する。そして、ユーザに対してアクセスが認可されている場合は、Ｓ４に遷移してキャッシュファイルを要求元ノードへ送信する。
【００８０】
また、ファイルの送受信に係る通信について、例えばＳＳＬ（Secure Socket Layer）／ＴＬＳ（Transport Layer Security）を用いて暗号化するようにしてもよい。このようにすれば、通信データの傍受やなりすましによる情報の漏えいを防止することができる。
【００８１】
また、配信サーバ２のセキュリティ制御部２４４は、秘密分散法を利用してファイルを分割し、分割後のファイルをそれぞれ異なるグループに属するノードによってキャッシュさせるようにしてもよい。例えば、ファイルは、ノードが属するグループの数に分割され、図１０に示したようなリストにおいて、分割後のファイルの各々について異なるタグが関連付けられる。このような方法によっても、情報の漏えいを防止することができる。
【００８２】
また、中継ノードのセキュリティ制御部４４６は、ファイルを暗号化してキャッシュすると共に、キャッシュファイルのハッシュ値を算出し、キャッシュファイルと関連付けて記憶装置４２に記憶させておくようにしてもよい。また、セキュリティ制御部４４６は、保持しているキャッシュデータから算出されるハッシュ値と、記憶装置４２が保持しているハッシュ値とを比較し、異なる場合にはキャッシュファイルの改ざんを検知したものと判断してキャッシュファイルを削除するようにしてもよい。このようにすれば、保持するキャッシュファイルの完全性が担保される。また、暗号化することにより、正当な権限のあるユーザのみが当該ファイルを読み出せるようになる。したがって、キャッシュファイルの機密性を担保できる。
【００８３】
＜変形例６＞
上述した実施形態及び変形例に係るネットワークシステムは、動画等のデジタルコンテンツを配信するためのコンテンツ配信ネットワーク（ＣＤＮ：Contents Delivery Network）に適用することもできる。すなわち、上述したファイルは、動画データや音声データ、ＶＲ（Virtual Reality）コンテンツ、３Ｄコンテンツ、ゲームに用いられるデータ、その他のデジタルコンテンツであり、ノード４は、ＣＤＮを形成するキャッシュサーバ等であってもよい。
【００８４】
上述したネットワークトポロジ上の隣接するノードとは、ノード間に配線以外の装置を含まないことを意図したものではなく、ＣＤＮのような所定のネットワークを構成する複数のノードのうちの隣接するノードを指す。また、ノード２は、いわゆるキャッシュサーバとして働き、ユーザの端末が要求するコンテンツファイルを送信する。ＣＤＮは、インターネット上に公開されたものに限らず、ローカルネットワーク上に形成するようにしてもよい。このとき、ネットワークにおいて利用されるプロトコルは特に限定されない。また、ノード４若しくは配信サーバ２、又は上述したネットワークシステムは、ゲートウェイ等のプロトコル変換装置を介してネットワークに接続されていてもよい。
【００８５】
例えばＨＴＴＰＳを利用する場合には、キャッシュファイルを以下のようなＵＲＩ（Uniform Resource Identifier）で表すようにしてもよい。
<プロトコル>://<キャッシュサーバのＵＲＬ>:<キャッシュサーバのポート番号>/<エンコードされたアクセス先のＵＲＬ>
ここで、あるＣＤＮのコンテンツサーバからＨＴＴＰＳで配信されるファイルのＵＲＬが以下の通りであったとする。
https://cdn.example.com/video.mp4
これをＵＲＬエンコーディング（パーセントエンコーディング）すると、以下のような文字列が生成される。
https%3A%2F%2Fcdn.example.com%2Fvideo.mp4
【００８６】
なお、キャッシュサーバのホスト名とＩＰアドレスとは一対一に対応付けられていてもよいし、キャッシュサーバは複数存在するため、一対多に対応付けられていてもよい。一対一に対応付けられている場合は、例えば要求元のユーザ端末が、ＣＤＮを構成するキャッシュサーバのうち、近くのキャッシュサーバ（例えば、ホップ数が最も少ないキャッシュサーバ）のＵＲＬを指定し、アクセスする。また、一対多に対応付けられている場合は、ユーザ端末は、キャッシュサーバのＵＲＬについてＤＮＳ（Domain Name System）サーバに名前解決を要求する。例えば、アクセス先のアドレスが以下の通りであったとする。
https://cache.example.net
これに上述した文字列を設定すると、以下のようなリクエストＵＲＬが生成される。
https://cache.example.net/https%3A%2F%2Fcdn.example.com%2Fvideo.mp4
ここで、キャッシュサーバのホスト名とＩＰアドレスとが一対一に対応付けられている場合は、ＤＮＳサーバは、キャッシュサーバに対応付けられたＩＰアドレスを返答する。また、一対多に対応付けられている場合は、ＤＮＳサーバは、例えばユーザ端末のＩＰアドレスに基づいて接続元の地域を特定し、当該地域に近いキャッシュサーバのＩＰアドレスを返答する。その後、ユーザ端末は、ＤＮＳサーバが返答したＩＰアドレスに対して接続を試みる。すなわち、ユーザ端末が備えるインターネットブラウザ等のクライアント側アプリケーションは、cache.example.netにＨＴＴＰＳで接続し、ブラウザとキャッシュサーバとの間において暗号化通信を行う。このとき、サーバ証明書は、cache.example.netのものが利用される。なお、複数のキャッシュサーバはcache.example.netの証明書を有している。
【００８７】
一方、キャッシュサーバは、リクエストＵＲＬをデコードし、もとのＵＲＬ（すなわち、https://cdn.example.com/video.mp4）を生成する。キャッシュサーバは、自身がキャッシュファイルを保持していない場合には、ファイルに割り当てられたグループと自身及び近隣のキャッシュサーバに割り当てられたグループとに基づいて、他の装置からファイルを取得する。コンテンツサーバからファイルを取得する場合には、デコードしたＵＲＬに基づいてcdn.example.comとＨＴＴＰＳセッションを張り、video.mp4の送信を要求する。このとき、サーバ証明書は、cdn.example.comのものが利用される。また、キャッシュサーバは、他の装置から要求したファイルを受信した場合は、ユーザ端末の要求元アプリケーションへ転送する。以上のような処理によれば、キャッシュサーバを介する場合においても、証明書の不一致を回避し、ＨＴＴＰＳで配信されるファイルをユーザ端末へ送信することができる。なお、キャッシュサーバのホスト名とＩＰアドレスとの対応関係や、キャッシュサーバに対するコンテンツサーバへのリクエストＵＲＬの命名規則等は一例であり、上述した例には限定されない。
【００８８】
＜変形例７＞
また、ノード４にグループを割り当てる処理は、上述した実施形態に示したものには限られない。例えば、次数の高いノードから順に、グループ間の距離が遠くなるようにグループを選択すると共に、グループ間の距離が同じになるグループが複数存在する場合には、ネットワーク中に存在するノードが少ないグループを割り当てるようにしてもよい。このようにすれば、あるノード４に対し、隣接するノード４とは異なるグループを優先して割り当てることができると共に、ネットワーク全体において各グループができるだけ均等に含まれるようバランスさせることができる。
【００８９】
また、１つのノード４に複数のグループを割り当てるようにしてもよい。特に、複数のノード４においてストレージの容量（すなわち、キャッシュ容量）が異なるような場合には、容量の大きなノード４に複数のグループを割り当てることでリソースを効率よく利用する子ができる。この場合も、あるノード４に対し、隣接するノード４とは異なるグループを優先して割り当てる。
【００９０】
＜変形例８＞
図９のＳ２１及びＳ２２に示すアクセス数の集計処理は、ネットワーク上において予め定められた経路に従い、配信サーバ２又は図示していない管理装置が、各ノード４からアクセス数を受信するようにしてもよい。例えば、配信サーバ２又は図示していない管理装置を根とする木構造のネットワークを定義しておく。例えば、図１のネットワーク１において、配信サーバ２をルートとし、すべてのノード４を含む、既存のリンクで接続された木構造のネットワークを別途定義しておく。そして、葉から根に向かって所定のタイミングでファイルごとのアクセス数を送信する。この場合、分岐の合流点となるノードにおいてはファイルごとのアクセス数を集約するようにしてもよい。このようにすれば、集計にかかる通信量や配信サーバ２又は他の管理装置において集計にかかる負荷を低減させることができる。
【００９１】
上記の実施形態及び変形例１〜８に記載した事項は、適宜組み合わせて実施することができる。
【００９２】
＜比較例＞
図１４は、遺伝的アルゴリズムを利用してキャッシュ配置を決定する手順を説明するための図である。上述したようなネットワークにおいて分散してキャッシュを保持する場合、キャッシュの配置を決定する手法として例えば遺伝的アルゴリズムを利用することができる。具体的には、以下の手順を繰り返し、最適なキャッシュ配置を探索する。
【００９３】
（１）初期値の決定
まず、各サーバにおいてキャッシュするファイルをランダムに決定した配置を、一定数生成する。本ステップでは、例えばランダムに３００通りのキャッシュ配置を生成する。図１４の例では、模式的に配信サーバと接続された３つの中継ノードと、各中継ノードに１つずつ接続された要求元ノードを示している。初期値の決定においては、キャッシュ配置１、２、３・・・に示すように、ランダムにキャッシュするファイルを決定する。なお、図１４のキャッシュ配置１、２、３・・・に示す正方形内の数字は、キャッシュするファイルの識別情報を示している。また、３つの中継ノードは、５つずつファイルをキャッシュする例を示している。
【００９４】
（２）通信量の算出
次に、各キャッシュ配置に対して、通信量を算出する。通信量は、トポロジ、キャッシュ配置、アクセス頻度から求められる。要求元ノードｉが最も近いファイルｋを保持するノードｊからファイルを取得するときの通信量ｔｉｋは、以下の式（１）によって求めることができる。
【数１】
0006712744.tif 000002
また、発生する総通信量Ｔは、以下の式（２）によって求めることができる。
【数２】
0006712744.tif 000003
なお、ｓｋはファイルｋのサイズ、ｒｊｋはノードｊがファイルｋを保持しているとき１、それ以外のとき０、ｄ（ｉ，ｊ）はノードｉからノードｊまでのホップ数、ｐｋはファイルｋを要求する頻度である。図１４において、例えばキャッシュ配置１、２、３・・・の右に示す通り、キャッシュ配置１、２について算出された通信量が１００、９０であったものとする。
【００９５】
（３）選択
そして、通信量に基づいて所定数のキャッシュ配置を選択する。具体的には、通信量の逆数に比例した確率に基づき、キャッシュ配置を選択する。すなわち、通信量の小さいものほど選択されやすいルールによってキャッシュ配置が抽出される。図１１の例では、キャッシュ配置１、２が選択される確率の大きさは、相対的に１／１００と、１／９０の関係になる。図１４の例においては、キャッシュ配置１及び２が選択されたものとする。
【００９６】
（４）交叉
次に、選択されたキャッシュ配置から新たなキャッシュ配置を生成する。具体的には、まず図１４の交叉１に示すように、キャッシュ配置１とキャッシュ配置２とにおいて、中継ノードごとに共通しているキャッシュファイルを抽出する。そして、交叉２に示すように、もとのキャッシュ配置１及び２に共通していないファイルからランダムにファイルを選択する。
【００９７】
（５）突然変異
その後、生成されたキャッシュ配置の一部をランダムに変化させる。本ステップでは、すべてのキャッシュファイルを対象として、例えば０．１％のように所定の確率でランダムにファイルを変更する。
【００９８】
（６）選択
さらに、手順（３）〜（５）を繰り返して生成された複数のキャッシュ配置の中から、通信量の小さいものを所定数選択する。本ステップでは、例えば３００種類のキャッシュ配置を選択する。
【００９９】
その後、手順（２）に戻り、処理を繰り返す。以上のようにして、通信量がより小さいキャッシュ配置へ収束させ、準最適なキャッシュ配置を求めることができる。
【０１００】
図１５は、本発明に係るネットワーク、比較例に係るネットワーク、協調なしのＬＦＵによってキャッシュを行うネットワークについて、外部サーバとの通信量を比較したグラフである。グラフの縦軸は、キャッシュを行わない場合を１とした外部サーバとの相対的な通信量を表している。ネットワークトポロジは、図１に示したメッシュ型のネットワークを採用した。また、外部サーバとは、図１の配信サーバ２をいうものとする。また、通信量の計算において、各ノードはそれぞれファイル全体の１０％を保持可能とした。
【０１０１】
図１６は、ネットワーク上にキャッシュされるファイル及びその数を示すグラフである。図１６の横軸は、アクセス頻度の降順にソートしたファイルの通し番号を表し、縦軸は、各ファイルをキャッシュするノード数を表している。本発明に係るネットワークにおいて、ファイルに付すタグの設定は、上述した比較例において求められるキャッシュ配置においてノード上にキャッシュされるファイルの種類及び同一のファイルをキャッシュするノードの数に従って決定してもよい。図１６の実線は、遺伝的アルゴリズム（ＧＡ：Genetic Algorithm）によって求められた準最適なキャッシュ配置におけるファイルと当該ファイルがネットワーク上にキャッシュされる数との関係を表している。また、丸の点線は、本発明に係る４種のグループに分類したノードで形成されるネットワークにおいて、ＧＡのファイル数に従って決定されたキャッシュするファイル数の設定の一例を表している。太く短い破線は、本発明に係る８種のグループに分類したノードによってキャッシュするファイルを、ＧＡで求めたファイル数に基づいて決定する例を表している。細く長い破線は、本発明に係る１６種のグループに分類したノードによってキャッシュするファイルを、ＧＡで求めたファイル数に従って決定する例を表している。本実施形態では、上述したタグによって表される、各ファイルに割り当てるグループを変更することにより、当該ファイルをキャッシュするネットワーク上のノード数を調整することができる。また、グループの種類の数を増やすことで準最適な配置に対する近似の精度を向上させることができる。このように、図１０に示した、人気の程度を示す各カテゴリに対応付けられるファイルの数は、予め所定のアルゴリズムを利用して求められた、ほぼ同一のネットワークにおける準最適なキャッシュ配置を近似した値となるように、上記ファイルに割り当てるグループ及びネットワーク上のノードに割り当てるグループの少なくともいずれかを決定するようにしてもよい。
【０１０２】
図１５のグラフの横軸に示す協調なしＬＦＵは、各ノードが独立してアクセス頻度の低いキャッシュファイルを削除する場合の通信量の一例を示す。４色、８色、１６色は、それぞれノードを４つのグループ、８つのグループ、１６のグループに分類して本発明に係るキャッシュ配置を行った場合の通信量を示す。ＧＡは、比較例に係る遺伝的アルゴリズムによりキャッシュ配置を決定した場合の通信量を示す。図１５に示すように、本発明に係るキャッシュ配置によれば、グループ数の増加に伴い実効キャッシュ容量が増加し、１６色の例ではファイル配信サーバとの通信量は、協調なしＬＦＵに対し９５．３％の通信量を削減できている。これに対し、ＧＡの方が通信量は低いものの、１６色の例ではＧＡによる準最適なキャッシュ配置とほぼ同等の通信量といえる。
【０１０３】
図１７は、ネットワーク内部における通信量を、本発明に係るネットワーク、比較例に係るネットワーク、協調なしのＬＦＵによってキャッシュを行うネットワークについて示すグラフである。縦軸は、キャッシュを行わない場合を１としたネットワーク内の通信量を表している。横軸は、図１５の例と同様である。例えば１６色のネットワークにおいては、協調なしＬＦＵに対して５１％の通信量が削減されている。また、本発明に係るネットワークとＧＡによる準最適なキャッシュ配置とはほぼ同等の通信量といえる。
【０１０４】
ＧＡによるキャッシュ配置の決定には、一般的なコンピュータで１０時間以上の計算が必要であるのに対し、本発明に係るキャッシュ配置は数秒程度で計算が完了する。すなわち、本発明によれば、ファイルのアクセス頻度に従ってファイルに対し循環的にタグを付すことによりファイルのキャッシュ配置を決定することができる。また、ノードに対するグループ分けの設定も、本発明によればＮ色による塗り分け問題として決定することができる。ノードに対するグループ分けの設定は、キャッシュサーバで構成されるネットワークにおいては構成の変更が少なく再計算を行う必要はほとんどない。また、ＰＣ（Personal Computer）によって構成されるネットワークにおいて個々のＰＣをキャッシュサーバとして機能させる場合は、新たにネットワークに接続されるＰＣに対し近傍に存在しないグループを割り当てることによりグループを決定できる。このように、本発明によれば、準最適な配置に比して遜色ないキャッシュ配置を、簡便に決定できる。
【０１０５】
＜その他＞
本発明は上述の処理を実行するコンピュータプログラムを含む。さらに、当該プログラムを記録した、コンピュータ読み取り可能な記録媒体も、本発明の範疇に属する。当該プログラムが記録された記録媒体については、コンピュータに、この記録媒体のプログラムを読み込ませて実行させることにより、上述の処理が可能となる。
【０１０６】
ここで、コンピュータ読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータから取り外し可能なものとしては、フレキシブルディスク、光磁気ディスク、光ディスク、磁気テープ、メモリカード等がある。また、コンピュータに固定された記録媒体としては、ハードディスクドライブやＲＯＭ等がある。
【符号の説明】
【０１０７】
１  ネットワークシステム
２  配信サーバ
２４１  ：ファイル配信部
２４２  ：頻度算出部
２４３  ：設定変更部
２４４  ：セキュリティ制御部
３  ファイル
４  ノード
４４１  ：ファイル要求部
４４２  ：伝送中継部
４４３  ：キャッシュ保持部
４４４  ：キャッシュ送信部
４４５  ：キャッシュ削除部
４４６  ：セキュリティ制御部
【図１】
0006712744.tif 000004
【図２】
0006712744.tif 000005
【図３】
0006712744.tif 000006
【図４】
0006712744.tif 000007
【図５】
0006712744.tif 000008
【図６】
0006712744.tif 000009
【図７】
0006712744.tif 000010
【図８】
0006712744.tif 000011
【図９】
0006712744.tif 000012
【図１０】
0006712744.tif 000013
【図１１Ａ】
0006712744.tif 000014
【図１１Ｂ】
0006712744.tif 000015
【図１２】
0006712744.tif 000016
【図１３】
0006712744.tif 000017
【図１４】
0006712744.tif 000018
【図１５】
0006712744.tif 000019
【図１６】
0006712744.tif 000020
【図１７】
0006712744.tif 000021