以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに本発明を適用した場合の実施形態である。
[1.コンテンツ配信システムの概要構成]
始めに、図1を参照して、本実施形態に係るコンテンツ配信システムの概要構成について説明する。
図1は、本実施形態に係るコンテンツ配信システムSの概要構成例を示す図である。
図1に示すように、コンテンツ配信システムSは、ネットワークNWに、配信センターネットワークNSと複数の拠点ネットワークNLm(m=1,2,3・・・の何れか)とが接続されている。このネットワークNW、配信センターネットワークNS、及び各拠点ネットワークNLmは、現実世界の通信ネットワークである。なお、ネットワークNWは、外部ネットワークの一例である。また、拠点ネットワークNLmは、内部ネットワークの一例である。
ネットワークNWは、配信センターネットワークNS及び各拠点ネットワークNLmを相互接続するためのネットワークである。このネットワークNWは、例えば、インターネットやWAN(Wide Area Network)等である。そして、ネットワークNWは、例えば、IX(Internet eXchange)、ISP(Internet Service Provider)、DSL(Digital Subscriber Line)回線事業者の装置、FTTH(Fiber To The Home)回線事業者の装置、及び通信回線等によって構築されている。なお、ネットワークNWは、コンテンツ配信システムS専用のネットワークであっても良い。
配信センターネットワークNSは、配信センターの敷地内に構築されたネットワークである。この配信センターネットワークNSは、例えば、LAN(Local Area Network)等により構築されている。
また、配信センターネットワークNSには、投入サーバST、管理サーバSM、ポータルサーバSP等のサーバ装置、及び管理端末MT等が接続されている。更に、配信センターネットワークNSには、通信回線LSを介して配信センターネットワークNSとネットワークNWとを相互接続するファイアーウォールFWが接続されている。
各拠点ネットワークNLmは、夫々拠点mの敷地内に構築されたネットワークである。拠点としては、例えば、会社、学校、病院、塾等がある。この拠点ネットワークNLmは、例えば、LAN等により構築されている。或いは、拠点ネットワークNLmは、複数のLANが相互接続して構築されたネットワークであっても良い。この場合、複数のLANは、ルータ等のネットワーク機器を介して接続される。複数のLANが相互接続されたネットワークとしては、例えば、CAN(Campus Area Network)等がある。
また、各拠点ネットワークNLmには、複数のユーザ端末Tm−n(n=1,2,3・・・の何れか)、及びエッジサーバSEmが接続されている。更に、各拠点ネットワークには、通信回線Lmを介して配信センターネットワークNSとネットワークNWとを相互接続するファイアーウォールFW又はブロードバンドルータBRが接続されている。ファイアーウォールFW又はブロードバンドルータBRの何れが拠点に設置されるかは、拠点毎に任意に決定される。なお、ユーザ端末Tm−nは、ノード装置の一例である。また、エッジサーバSEmは、サポート装置の一例である。
このような構成のコンテンツ配信システムSにおいて、構成要素たる各装置の機能概要は以下の通りである。
投入サーバSTは、後述するP2PネットワークPWにコンテンツデータを投入するサーバ装置である。ここで、コンテンツデータの投入とは、コンテンツデータをエッジサーバSEm及びユーザ端末Tm−nから取得可能な状態におくことをいう。なお、コンテンツデータを、「コンテンツ」という。
ポータルサーバSPは、ユーザ端末Tm−nからのリクエストに応じてWebページをユーザ端末Tm−nに送信する。ポータルサーバSPにより送信されるWebページは、コンテンツの一例として動画データを配信するWebサイトを構成する。
管理サーバSMは、配信するコンテンツを管理するためのWebアプリケーションを管理端末MTに提供する。つまり、管理サーバSMは、コンテンツを管理するためのWebページを管理端末MTに送信する。また、管理サーバSMは、各エッジサーバSEm及び各ユーザ端末Tm−nの動作モードを設定するためのWebアプリケーションを管理端末MTに提供する。なお、動作モードについての詳細は後述する。
ユーザ端末Tm−nは、拠点mにいるユーザにより使用される端末装置である。ユーザ端末Tm−nは、ポータルサーバSP等のWebサーバからWebページを取得し、取得したWebページを画面表示する。また、ユーザ端末Tm−nは、他のユーザ端末Tm−n、エッジサーバSEm又は投入サーバSTからコンテンツを取得し保存する。基本的にユーザ端末Tm−nは、どの拠点mに設置されているユーザ端末Tm−n及びエッジサーバSEmからもコンテンツを取得することができる。更に、ユーザ端末Tm−nは、動画データ等のコンテンツを再生する。
エッジサーバSEmは、各拠点mに少なくとも1台設置されている。エッジサーバSEmは、同じ拠点mに接続する端末Tm−nによるコンテンツの取得を支援する。具体的に、エッジサーバSEmは、ユーザ端末Tm−nにより取得される可能性が高いコンテンツを、ユーザ端末Tm−n、他のエッジサーバSEm又は投入サーバSTから取得する。基本的にエッジサーバSEmは、どの拠点mに設置されているユーザ端末Tm−n及びエッジサーバSEmからもコンテンツを取得することができる。また、エッジサーバSEmは、取得したコンテンツを保存する。
[2.ピアツーピアネットワークの概要]
次に、図2を参照して、コンテンツ配信システムSにおけるピアツーピアネットワークの概要を説明する。
図2は、本実施形態に係るコンテンツ配信システムSにおけるP2PネットワークPWの構築例を示す図である。
コンテンツ配信システムSにおいては、コンテンツ配信のためのピアツーピアネットワークが構築されている。このピアツーピアネットワークを、「P2PネットワークPW」という。
図2に示すように、P2PネットワークPWは、ネットワークNWと複数の拠点ネットワークNLmとにより形成されるネットワーク上に構築された論理的なオーバーレイネットワークである。このP2PネットワークPWは、コンテンツ配信システムSを構成するユーザ端末Tm−n及びエッジサーバSEmのうち、何れか複数のユーザ端末Tm−n及びエッジサーバSEmの接続により形成されるネットワークである。なお、P2PネットワークPWには、投入サーバSTも接続されるようにしても良い。各拠点ネットワークNLmからは、ブロードバンドルータBRやファイアーウォールFWを介してネットワークNWに接続される。そのため、ユーザ端末Tm−n及びエッジサーバSEmが、ピアツーピア方式で通信を行えるよう、ブロードバンドルータBRやファイアーウォールFWにおいてポートフォワーディングの設定を行っておく。例えば、ブロードバンドルータBRであれば、UPnP(Universal Plug and Play)機能等を利用して自動的にポートフォワーディングの設定が行われるようにしておくと良い。
以下の説明においては、P2PネットワークPWに接続する装置を、「ノード」と称する。このノードに相当する装置は、ユーザ端末Tm−n及びエッジサーバSEmである。或いは、ユーザ端末Tm−n、エッジサーバSEm及び投入サーバSTがノードに相当する。
P2PネットワークPWは、特定のアルゴリズム、例えば、DHT(Distributed Hash Table)を利用したアルゴリズムにより実現される。そして、コンテンツ配信システムSに接続されている各ノードには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
また、ノードIDは、例えば、各ノードに個別に割り当てられたIPアドレス、製造番号、或いはMACアドレス(Media Access Control address)等を共通のハッシュ関数によりハッシュ化した値である。ノードIDは、ID空間に偏りなく分散して配置されることになる。ハッシュ関数としては、例えば、SHA−1等が用いられる。また、ハッシュ化した値は、例えば、bit長が160bitとなる。そして、このノードIDは、ID空間に偏りなく分散して配置されることになる。なお、ノードIDは、P2PネットワークPWに接続するためのP2Pソフトウェアのセットアップ時に、システム管理者やユーザ等によってノード毎に登録されても良い。図2に示すP2PネットワークPWは、ノードIDのID空間をリング状のものとして示されている。そして、図2のリング状のID空間において示されている各ノードの位置は、夫々のノードIDに対応している。
P2PネットワークPWへの接続は、P2PネットワークPWに接続していないノードが、接続している任意のノードに対してコンテンツ配信システムへの参加要求を示す参加要求メッセージを送信することによって行われる。この参加要求メッセージは参加要求情報の一例である。ここで、P2PネットワークPWへの参加とは、ノードが、P2PネットワークPWに接続され、P2PネットワークPWからコンテンツを取得可能になることである。任意のノードは、例えば、P2PネットワークPWに常時接続しているコンタクトノードである。P2PネットワークPWにおけるコンタクトノードは、例えば、投入サーバSTである。
各ノードは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ配信システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノードのアドレス等を示すノード情報が複数登録されている。このノード情報は、ノードのノードID、IPアドレス及びポート番号を含む。
P2PネットワークPWに接続している1台のノードは、必要最低限のノードのノード情報をルーティングテーブルとして記憶している。各ノード間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードについてのノード情報が取得される。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
P2PネットワークPWは、内容の異なる様々なコンテンツのレプリカを所定のファイル形式で複数のノードに分散して保存する。そして、各ノード間でレプリカが利用可能になっている。各コンテンツのオリジナルは投入サーバSTに保存されている。例えば、エッジサーバSE5のコンテンツキャッシュエリアには、タイトルがXXXの映画のコンテンツのレプリカが保存されている。一方、エッジサーバSE3のコンテンツキャッシュエリアには、タイトルがYYYの映画のコンテンツのレプリカが保存される。このように、コンテンツは複数のノードに分散されて保存されている。コンテンツキャッシュエリアとは、コンテンツを記憶保存するための領域である。実際のコンテンツキャッシュエリアは、例えば、ノードが備える特定のハードディスクに割り当てられていたり、ハードディスクの特定のパーティションに割り当てられていたりする。エッジサーバSEmのコンテンツキャッシュエリアの記憶容量は、ユーザ端末Tm−nのコンテンツキャッシュエリアの記憶容量よりも大きくなっている。一例として、エッジサーバSEmのコンテンツキャッシュエリアの記憶容量は、ユーザ端末Tm−nのコンテンツキャッシュエリアの記憶容量の10〜100倍程度である。コンテンツキャッシュエリアにコンテンツが保存しきれなくなった場合は、新しいコンテンツを保存するため、例えば、コンテンツキャッシュエリアから、旧い順にコンテンツが削除される。コンテンツの新旧は、例えば、コンテンツの利用日時等により判断される。以下、コンテンツのレプリカが保存されるノードを、「コンテンツ保持ノード」という。また、以下の説明においては、オリジナルのコンテンツとレプリカとを特に区別することなく、コンテンツと称する。
上述のコンテンツには、夫々、コンテンツ名及びコンテンツ毎に固有の識別情報であるコンテンツID等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。或いは、システム管理者が、コンテンツ毎に一意のID値を付与しても良い。
分散保存されているコンテンツの所在は、インデックス情報として、コンテンツの所在を管理(記憶)しているノード等により記憶される。以下、コンテンツの所在を管理(記憶)しているノードを、「ルートノード」という。インデックス情報は、コンテンツを保存したノードのノード情報と、コンテンツのコンテンツIDと等の組を含む。このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、IDの上位桁が最も多く一致するノードIDである。
例えば、タイトルがXXXの映画のコンテンツについてのインデックス情報は、そのコンテンツのルートノードであるユーザ端末T3−1により管理される。また、例えば、タイトルがYYYの映画のコンテンツについてのインデックス情報は、そのコンテンツのルートノードであるユーザ端末T3−3により管理される。
そして、或るノードのユーザが、所望するコンテンツを取得したい場合、このコンテンツの取得を望むノードは、メッセージを生成する。以下、ユーザによりコンテンツの取得を望むノードを、「ユーザノード」という。このメッセージは、取得を望むコンテンツのコンテンツID、ユーザノードのIPアドレス、ポート番号等を含むコンテンツ所在問合せメッセージである。コンテンツ所在問合せメッセージは、コンテンツ保持ノードを検索するためのメッセージである。上述のコンテンツ所在問合せメッセージが、ユーザノードが取得するDHTのルーティングテーブルに従って、他のノードに対して送出される。つまり、ユーザノードは、コンテンツ所在問合せメッセージを、ルートノードに向けて送出する。これにより、コンテンツ所在問合せメッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
各ノードにおいて、コンテンツのコンテンツID等の属性情報は、コンテンツカタログ情報に記述されている。このコンテンツカタログ情報に記述されるコンテンツの属性情報としては、例えば、コンテンツ名、コンテンツID、コンテンツの公開開始日時、公開終了日時、有効無効フラグ等がある。有効無効フラグは、コンテンツが有効であるか無効であるかを示すフラグである。この有効無効フラグが無効を示す場合、該当するコンテンツはコンテンツキャッシュエリアから削除される。
コンテンツカタログ情報は、例えば、投入サーバSTから全てのノードに配信される。このコンテンツカタログ情報の配信は、例えば、特開2007−053662号公報にて開示されたDHTマルチキャスト(マルチキャストメッセージ転送処理)により行われても良い。また、各ノードが、定期的に投入サーバSTにアクセスすることによりコンテンツカタログ情報を取得しても良い。
なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
上記コンテンツ所在問合せメッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックス情報キャッシュから取得する。取得されたインデックス情報は、コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツをダウンロード(取得)することが出来る。インデックス情報に含まれるコンテンツ保持ノードのIPアドレス及びポート番号等に基づいて、ユーザノードはコンテンツ保持ノードにアクセスする。ユーザノードは、アクセスしたコンテンツ保持ノードから、コンテンツをダウンロードすることが可能になる。なお、インデックス情報には、複数のコンテンツ保持ノードのノード情報が含まれていることもある。この場合、ユーザノードは、この複数のコンテンツ保持ノードのうち1つのコンテンツ保持ノードを選択する。そして、ユーザノードは、選択したコンテンツ保持ノードに接続してコンテンツをダウンロードすることが出来る。
なお、ルートノードは、このインデックス情報に含まれるIPアドレス及びポート番号等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信しても良い。これにより、ユーザノードは、上記コンテンツ保持ノードからそのコンテンツをダウンロードすることも出来る。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、このルートノードと同じインデックス情報をキャッシュしているキャッシュノードからこのインデックス情報を取得することも出来る。
ユーザノードが、コンテンツ保持ノードからコンテンツを取得して保存したとき、保存したユーザノードは、パブリッシュメッセージを生成する。このパブリッシュメッセージは、コンテンツを保存したことをルートノードへ知らせるためのメッセージである。パブリッシュメッセージは、コンテンツのコンテンツID及びコンテンツを保存したノード装置のノード情報を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、コンテンツ所在問合せメッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、ルートノードは、パブリッシュメッセージを受信する。ルートノードは、パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報をインデックス情報キャッシュ領域に記憶する。こうして、上記ユーザノードは、新たに、上記コンテンツを保持するコンテンツ保持ノードとなる。
[3.コンテンツ配信の概要]
次に、図3及び図4を参照して、コンテンツを配信する場合におけるコンテンツ配信システムSの動作概要について説明する。
図3は、本実施形態に係るコンテンツ配信システムSにおいてコンテンツが配信される様子の一例を示した概念図である。
先ず、システム管理者が、管理端末MTを操作して、配信するコンテンツを登録する(図3(1))。具体的に、システム管理者が、Webアプリケーション上で、コンテンツのファイル名及びコンテンツ名等を指定する。すると、管理端末MTは、ファイル名によって指定されたコンテンツを管理サーバSMに送信する。
管理サーバSMは、受信したコンテンツを投入サーバSTに送信し、コンテンツの配信を指示する(図3(2))。投入サーバSTは、受信したコンテンツに新たなコンテンツIDを割り当て、このコンテンツを保存する。また、投入サーバSTは、コンテンツに割り当てたコンテンツIDを管理サーバSMに返信する。管理サーバSMは、コンテンツIDを受信すると、ポータルサーバSPによって配信されるWebページを更新する。具体的に、管理サーバSMは、Webページを構成するHTML(Hyper Text Markup Language)文書に、割り当てられたコンテンツID及びコンテンツ名を記述したタグを追加する。これにより、再生可能なコンテンツとして新たなコンテンツが選択可能となる。
投入サーバSTは、管理サーバSMから受信したコンテンツをP2PネットワークPWに投入する(図3(3))。具体的に、投入サーバSTは、1又は複数の任意のエッジサーバSEm及びユーザ端末Tm−nにコンテンツを送信する。また、投入サーバSTは、登録されたコンテンツの属性情報が追加されたコンテンツカタログ情報を各エッジサーバSEm及びユーザ端末Tm−nに配信する。なお、投入サーバSTは、この時点ではコンテンツを送信せずに、コンテンツを自らが保存しておくだけでも良い。この場合、エッジサーバSEm及びユーザ端末Tm−nが必要なときに投入サーバSTからコンテンツを取得する。
その後、或るユーザ端末Tm−n、例えば、ユーザ端末T1−3がポータルサーバSPにアクセスすることにより、Webページを受信して画面表示する。そして、画面表示されたWebページ上で、ユーザが或るコンテンツ、例えば、コンテンツAの再生を指示する。すると、ユーザ端末T1−3は、P2PネットワークPWからコンテンツAを取得しようとする。具体的に、ユーザ端末T1−3は、P2PネットワークPWに参加しているコンテンツAのルートノードに向けて、コンテンツ所在問合せを送信する(図3(4))。このコンテンツ所在問合せは、例えば、ユーザ端末T2−1、エッジサーバSE6、及びユーザ端末T3−3を経由して、ルートノードであるユーザ端末T3−1に転送される。
ユーザ端末T3−1は、コンテンツAのインデックス情報をユーザ端末T1−3に送信する(図3(5))。ユーザ端末T1−3は、受信したインデックス情報にノード情報が含まれている何れかのコンテンツ保持ノード、例えば、ユーザ端末T5−1にコンテンツ要求メッセージを送信する(図3(6))。ユーザ端末T5−1は、ユーザ端末T5−1自身のコンテンツキャッシュエリアに保存されているコンテンツAをユーザ端末T1−3に送信する(図3(7))。そして、ユーザ端末T1−3は、受信したコンテンツの再生を開始する。なお、エッジサーバSEmがコンテンツを取得する場合も、図3(4)〜図3(7)に示した場合と同様に、コンテンツが取得される。
[4.コンテンツの取得先に対する優先順位]
上述したように、ユーザ端末Tm−nは、P2PネットワークPWに参加しているどのユーザ端末Tm−n及びエッジサーバSEmからもコンテンツを取得することが出来る。しかしながら、ユーザ端末Tm−n自身が接続する拠点ネットワークNLm以外の拠点ネットワークNLmに接続しているユーザ端末Tm−n又はエッジサーバSEmからコンテンツを取得すると、通信回線Lmのトラフィックが増加してしまう。
そこで、コンテンツ配信システムSにおいては、コンテンツの取得先に優先順位が設けられている。具体的な優先順位は以下の通りである。
第1位:同一拠点内のユーザ端末Tm−n
第2位:同一拠点内のエッジサーバSEm
第3位:他拠点のエッジサーバSEm
第4位:他拠点のユーザ端末Tm−n
第5位:投入サーバST
ここに示す同一拠点内のユーザ端末Tm−n又は同一拠点内のエッジサーバSEmとは、コンテンツを取得するユーザ端末Tm−nが接続する拠点ネットワークNLmに接続するユーザ端末Tm−n又はエッジサーバSEmである。また、他拠点のユーザ端末Tm−n又は他拠点のエッジサーバSEmとは、コンテンツを取得するユーザ端末Tm−nが接続する拠点ネットワークNLm以外の拠点ネットワークNLmに接続するユーザ端末Tm−n又はエッジサーバSEmである。なお、同一拠点内のユーザ端末Tm−nは、接続先ノード装置の一例である。また、同一拠点内のエッジサーバSEmは、接続先サポート装置の一例である。また、他拠点のエッジサーバSEmは、接続先外サポート装置の一例である。また、他拠点のユーザ端末Tm−nは、接続先外ノード装置の一例である。
同一拠点内のユーザ端末Tm−n及びエッジサーバSEmの優先順位が、他拠点のユーザ端末Tm−n及びエッジサーバSEmの優先順位よりも高く設定されている。その理由は、通信回線Lmのトラフィックを減らすためである。
同一拠点内のユーザ端末Tm−nの優先順位は、同一拠点内のエッジサーバSEmの優先順位よりも高く設定されている。エッジサーバSEmのコンテンツキャッシュエリアには、後述するように、ユーザ端末Tm−nによりダウンロードされる可能性が高いコンテンツが保存される。また、エッジサーバSEmのコンテンツキャッシュエリアの記憶容量は、ユーザ端末Tm−nのコンテンツキャッシュエリアの記憶容量よりも大きくなっている。こうしたことから、エッジサーバSEmの方がユーザ端末Tm−nよりも、コンテンツが要求される可能性が高い。そこで、エッジサーバSEmの負荷を減らすため、上述した優先順位となっている。
他拠点のエッジサーバSEmの優先順位は、他拠点のユーザ端末Tm−nの優先順位よりも高く設定されている。拠点mによっては、複数のネットワークがルータ装置等のネットワーク機器を介して接続されることにより、拠点ネットワークNLmが構築されている場合がある。この場合において、ネットワークNWからネットワーク的に遠いネットワークに、コンテンツ保持ノードとしてのユーザ端末Tm−nが接続されていると、このユーザ端末Tm−nから送信されたコンテンツが多数のネットワーク機器を経由する。そうすると、これらのネットワーク機器に負荷がかかるとともに、コンテンツの取得効率が低下する。そこで、ネットワーク機器の負荷を減らすため、上述した優先順位となっている。ここでは、拠点ネットワークNLmが、複数のルータ等の中継機器から構成される場合が想定されている。この場合、拠点ネットワークNLmに所属するエッジサーバSEmまたはユーザ端末Tm−nの中に、中継機器を介してネットワークNWに接続する装置と、中継機器を介さずネットワークNWに接続する装置とがある場合がある。この場合においては、エッジサーバSEmがネットワーク機器を介さずネットワークNWに接続することにより、中継機器の負荷を減らすことができる。或いは、拠点ネットワークNLmに接続する複数の装置の中で、ネットワークNWからネットワーク的に比較的近いネットワークにエッジサーバSEmが接続されても良い。ネットワーク的に近いとは、ネットワークNWに接続する際、中継する中継機器の数が少ないことである。なお、ネットワークNWから或る装置が接続するネットワークまでのネットワーク的な距離とは、データがネットワークNWからその装置が接続するネットワークまでに至るまでにデータが経由するネットワークの数、又は、経由するネットワーク機器の台数をいう。データが経由するネットワーク機器の台数が少ないほど、ネットワークNWからの距離は近いということになる。
投入サーバSTの優先順位は最下位となっている。その理由は、投入サーバSTは全てのコンテンツの発信源であるので、投入サーバSTの負荷を極力減らす必要があるためである。
このように設定された優先順位に基づいてコンテンツを取得するため、コンテンツを保存したノードは、パブリッシュメッセージを送信する際に、このパブリッシュメッセージに、ノード自身が設置されている拠点mの拠点識別情報及びノード種別を含める。拠点識別情報は、拠点mの識別情報である。また、ノード種別は、コンテンツ保持ノードが、ユーザ端末Tm−nであるか又はエッジサーバSEmであるかを示す。パブリッシュメッセージを受信したルートノードは、パブリッシュメッセージに含まれるコンテンツ保持ノードのノード情報、保存されたコンテンツのコンテンツID、コンテンツ保持ノードの拠点識別情報及びノード種別等を組とするインデックス情報を記憶する。ルートノードは、コンテンツ所在問合せメッセージを受信すると、拠点識別情報及びノード種別を含むインデックス情報をユーザノードに送信する。そして、ユーザノードは、受信したインデックス情報に含まれる拠点識別情報及びノード種別と、前記優先順位とに基づいて、コンテンツの取得先となるコンテンツ保持ノードを決定する。
図4は、インデックス情報に登録される内容の一例を示す図である。なお、図4に示すインデックス情報は、複数のコンテンツのインデックス情報を統合したものである。また、図4のノード情報欄には、ノード情報の代わりとして、コンテンツ保持ノードとしてのエッジサーバSEmの符号又はユーザ端末Tm−nの符号が示されている。また、図4のコンテンツID欄には、コンテンツIDの代わりとして、コンテンツ名が示されている。また、拠点識別情報欄には、拠点識別情報の一例としての事業所名が示されている。
図4に示すように、例えば、コンテンツ名が「映画1」であるコンテンツは、エッジサーバSE1、ユーザ端末T1−1、ユーザ端末T1−2、及びエッジサーバSE3に保存されている。この場合において、ユーザノードとしてのユーザ端末T1−3は、優先順位が第1位であるユーザ端末T1−1又はユーザ端末T1−2から「映画1」のコンテンツを取得する。また、ユーザノードがユーザ端末T3−1の場合は、優先順位が第2位であるエッジサーバSE3から「映画1」のコンテンツを取得する。また、ユーザノードがユーザ端末T2−1である場合は、優先順位が第3位であるエッジサーバSE1又はエッジサーバSE3から「映画1」のコンテンツを取得する。また例えば、コンテンツ名が「ドラマ2」であるコンテンツは、ユーザ端末T2−2に保存されている。この場合において、ユーザノードとしてのユーザ端末T1−1は、優先順位が第4位であるユーザ端末T2−2から「ドラマ2」のコンテンツを取得する。コンテンツ名が「映画3」であるコンテンツは、どのノードにも保存されていない。この場合において、ユーザノードは、優先順位が第5位である投入サーバSTから「映画3」のコンテンツを取得する。
[5.エッジサーバによるコンテンツの事前取得]
上述したように、ユーザ端末Tm−n及びエッジサーバSEmは、コンテンツの取得先として、同一拠点内のユーザ端末Tm−n及びエッジサーバSEmを、他拠点のユーザ端末Tm−n及びエッジサーバSEmよりも優先して選択する。ただし、同一拠点内のユーザ端末Tm−n又はエッジサーバSEmが、必要とされるコンテンツを保存していることがその前提となる。
そこで、エッジサーバSEmが、ユーザ端末Tm−nによりダウンロードされる可能性が高いコンテンツを、P2PネットワークPWから予め取得しておく(図3(8))。そうすることで、コンテンツの取得先として同一拠点内のエッジサーバSEmが選択されやすくなる。これにより、通信回線Lmのトラフィックを減らすことができる。なお、エッジサーバSEmがコンテンツを取得する場合も、ユーザ端末Tm−nの場合と同じ優先順位で、コンテンツの取得先が選択される。
ダウンロードされる可能性が高いか否かを判断する条件としては種々存在する。例えば、新着のコンテンツを、ダウンロードされる可能性が高いコンテンツの条件としても良い。新着のコンテンツの方が、そうではないコンテンツよりも、短期間の間により多くのユーザ端末Tm−nにより取得される可能性が高いと予想されるからである。または、過去一定期間におけるダウンロード回数が所定回数以上のコンテンツを、ダウンロードされる可能性が高いコンテンツの条件としても良い。つまりこれは、コンテンツの人気度によってダウンロードの可能性を判断するものである。或いは、システム管理者等によって、予めダウンロードの可能性が高いか否かを判断し、ダウンロードの可能性が高い又は低いを示す情報をコンテンツカタログ情報に付加しても良い。そうしておくことにより、エッジサーバSEmは、ダウンロードされる可能性が高いコンテンツをコンテンツカタログ情報から判別することができる。
[6.動作モードの切り替え]
次に、図5及び図6を参照して、ユーザ端末Tm−n及びエッジサーバSEmがコンテンツを取得する際の動作モードの切り替えについて説明する。
図5は、動作モード指定ファイルに記述される内容の一例を示す図である。また、図6は、本実施形態に係るコンテンツ配信システムSにおいて動作モード指定ファイルが配信される様子の一例を示した概念図である。
上述したように、ユーザ端末Tm−n及びエッジサーバSEmは、P2PネットワークPWからコンテンツを取得する。
しかしながら、拠点によっては、ネットワークのセキュリティポリシーの都合上、ユーザ端末Tm−n又はエッジサーバSEmがP2PネットワークPWに参加することが出来ない場合がある。例えば、拠点ネットワークNLmが複数のネットワークの相互接続によって構築されている場合、特定のウェルノウンポート番号等のポート番号のパケットのみネットワーク間を通過することが許可されている場合がある。ポート番号としては、例えばHTTPの80番等がある。また、ファイアーウォールFWからネットワークNWに送出されるパケットとしては、特定のウェルノウンポート番号等のポート番号のパケットのみ許可されている場合がある。また、拠点m間の直接の通信は許容せずに、必ず本部に設置されたサーバ装置を介してデータをやりとりするように定められている場合がある。なお、本部とは、例えば、配信センターであったり、特定の拠点mであったりする。このような場合、ピアツーピア方式の通信を行うことが出来ない。また、拠点mにおけるセキュリティポリシーは、例えば、組織変更や部門の統廃合等によって頻繁に変更される場合がある。
そこで、コンテンツ配信システムSにおいては、こうしたセキュリティポリシーの変更に柔軟に対応すべく、ユーザ端末Tm−n毎及びエッジサーバSEm毎に動作モードを切り替えることが出来るようになっている。この動作モードとしては、ピアツーピアモードと、クライアントサーバモードとがある。以下、ピアツーピアモードは、「P2Pモード」という。なお、初期の動作モードは、ユーザ端末Tm−n及びエッジサーバSEm何れの場合も、クライアントサーバモードである。
動作モードがP2Pモードである場合、ユーザ端末Tm−n又はエッジサーバSEmは、ピアツーピア方式で通信を行うように動作する。つまり、ユーザ端末Tm−nは、P2PネットワークPWに参加し、エッジサーバSEmは、P2PネットワークPWに参加する。一方、動作モードがクライアントサーバモードである場合、ユーザ端末Tm−n又はエッジサーバSEmは、クライアントサーバ方式で通信を行うように動作する。この場合、ユーザ端末Tm−nは、投入サーバSTをクライアントサーバ方式におけるサーバとして、エッジサーバSEmからコンテンツを取得する。また、エッジサーバSEmは、投入サーバSTをクライアントサーバ方式におけるサーバとして、投入サーバSTからコンテンツを取得する。
なお、ユーザ端末Tm−nは、クライアントサーバモードである場合、同じ拠点ネットワークNLmに接続するエッジサーバSEmをクライアントサーバ方式におけるサーバとして、エッジサーバSEmからコンテンツを取得しても良い。このとき、ユーザ端末Tm−nは、エッジサーバSEmにコンテンツ代理取得要求メッセージを送信する。このコンテンツ代理取得要求メッセージには、コンテンツのコンテンツIDが含まれている。コンテンツ代理取得要求メッセージを受信したエッジサーバSEmは、要求されたコンテンツがコンテンツキャッシュエリアに保存されているか否かを確認する。そこで、エッジサーバSEmは、コンテンツキャッシュエリアにコンテンツが保存されている場合には、コンテンツキャッシュエリアからコンテンツを取得し、取得したコンテンツを要求元のユーザ端末Tm−nに送信する。一方、エッジサーバSEmは、コンテンツキャッシュエリアにコンテンツが保存されていない場合には、エッジサーバSEm自身の動作モードに従ってコンテンツを取得する。そして、エッジサーバSEmは、取得したコンテンツを要求元のユーザ端末Tm−nに送信する。また、エッジサーバSEmは、取得したコンテンツをコンテンツキャッシュエリアに保存する。
上記の動作モードは、動作モード指定ファイルに記述される。この動作モード指定ファイルは、方式情報の一例である。図5に示すように、動作モード指定ファイルには、例えば、拠点m毎に分けて動作モードが記述される。具体的には、先ず、拠点mの拠点識別情報としての拠点名、エッジサーバSEmのIPアドレス、及びエッジサーバSEmの動作モードが記述される。なお、図5の例では、拠点名の一例として事業所名が示されている。また、拠点mの拠点名に対応して、各ユーザ端末Tm−nのノードID及び動作モードが記述される。なお、図5において、動作モードとしてのクライアントサーバのことを、「クラサバ」と示している。
動作モードの設定及び変更は、配信センターにて行われる。システム管理者は、各拠点mのセキュリティポリシーに関する情報を収集し、セキュリティポリシーの変更があった場合には、ユーザ端末Tm−n単位及びエッジサーバSEm単位で動作モードの設定変更を行う(図6(1))。動作モードが変更されると、管理サーバSMは、変更された動作モードを反映した新たな動作モード指定ファイルを作成する。そして、管理サーバSMは、作成した動作モード指定ファイルを投入サーバSTに送信し、コンテンツの配信を指示する(図6(2))。投入サーバSTは、受信した動作モード指定ファイルを、コンテンツとして新たなコンテンツIDを割り当てる。そして、投入サーバSTは、動作モード指定ファイルをコンテンツとして投入する(図6(3))。このときの投入方法は、通常のコンテンツの場合と同様でも良い。また、投入サーバSTは、新たに作成された動作モード指定ファイルの属性情報が追加されたコンテンツカタログ情報を各エッジサーバSEmに配信する。
各エッジサーバSEmは、定期的に最新の動作モード指定ファイルを取得する。具体的に、現在クライアントサーバモードで動作しているエッジサーバSEm、例えばエッジサーバSE1は、投入サーバSTから最新の動作モード指定ファイルを取得する(図6(4A))。また、現在P2Pモードで動作しているエッジサーバSEm、例えばエッジサーバSE2は、P2PネットワークPWから最新の動作モード指定ファイルを取得する(図6(4B))。つまり、エッジサーバSE2は、P2PネットワークPWに参加しているエッジサーバSEm及びユーザ端末Tm−nのうち、最新の動作モード指定ファイルのコンテンツ保持ノードである、例えばエッジサーバSE3から動作モード指定ファイルを取得する。
各ユーザ端末Tm−nも、定期的に最新の動作モード指定ファイルを取得する。具体的に、現在クライアントサーバモードで動作しているユーザ端末Tm−n、例えばユーザ端末T1−2は、エッジサーバSE1から最新の動作モード指定ファイルを取得する(図6(5A))。また、現在P2Pモードで動作しているユーザ端末Tm−n、例えばユーザ端末T2−6は、P2PネットワークPWから最新の動作モード指定ファイルを取得する(図6(5B))。つまり、ユーザ端末T2−6は、P2PネットワークPWに参加しているエッジサーバSE2及びユーザ端末Tm−nのうち、最新の動作モード指定ファイルのコンテンツ保持ノードから動作モード指定ファイルを取得する。図6に示す例におけるコンテンツ保持ノードは、ユーザ端末T4−1である。また、例えばユーザ端末T2−3が現在P2Pモードで動作している場合、ユーザ端末T2−3は、最新の動作モード指定ファイルのコンテンツ保持ノードとなったユーザ端末T2−6からこの動作モード指定ファイルを取得することが出来る。
このように、動作モード指定ファイルは、コンテンツとして配信される。そのため、コンテンツカタログ情報上、どのコンテンツが動作モード指定ファイルであるかを識別可能になっている必要がある。例えば、動作モード指定ファイルの属性情報中のコンテンツ名を、「動作モード指定ファイル」としても良い。このようにすることで、コンテンツ名で動作モード指定ファイルの属性情報を検索することが出来る。また例えば、動作モード指定ファイルの属性情報中に、動作モード指定ファイルであることを示す識別情報を付加しても良い。また例えば、動作モード指定ファイルのコンテンツIDの最上位ビットの値を1とし、動作モード指定ファイル以外のコンテンツのコンテンツIDの最上位ビットの値を0としても良い。
また、動作モード指定ファイルが新たに作成される度に、新たなコンテンツIDが割り当てられる。そのため、コンテンツカタログ情報上、どの動作モード指定ファイルが最新の動作モード指定ファイルであるかを識別可能になっている必要がある。例えば、コンテンツカタログ情報には、今まで作成された動作モード指定ファイルのうち最新の動作モード指定ファイルの属性情報のみを記述しても良い。または、動作モード指定ファイルの属性情報中の公開開始日時に、動作モード指定ファイルが作成された日時を記述しても良い。こうしておけば、公開開始日時が最も新しい動作モード指定ファイルが、最新の動作モード指定ファイルであると分かる。或いは、最新の動作モード指定ファイルのみ属性情報中の有効無効フラグを有効に設定し、その他の動作モード指定ファイルの有効無効フラグを無効に設定しても良い。
[7.投入サーバSTの構成及び機能等]
次に、図7を参照して、投入サーバSTの構成及び機能について説明する。
図7は、投入サーバSTの概要構成例を示す図である。
投入サーバSTは、図7に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部11を備えている。また、投入サーバSTは、各種データ及び各種プログラム等を記憶保存するためのHD等から構成された記憶部12を備えている。更に、投入サーバSTは、配信センターネットワークNSを通じて管理サーバSM等との間の情報の通信制御を行ったり、ネットワークNW等を通じてエッジサーバSEmとの間の情報の通信制御を行うための通信部13を備えている。そして、制御部11、記憶部12、及び通信部13はバス14を介して相互に接続されている。
記憶部12には、各エッジサーバSEm及び各ユーザ端末Tm−nのノードID、IPアドレス及びポート番号等が記憶されている。また、記憶部12には、配信対象となるコンテンツが記憶されている。また、記憶部12には、動作モード指定ファイルがコンテンツとして記憶されている。また、記憶部12には、オペレーティングシステム、コンテンツ配信制御プログラム、運用管理プログラム、拠点サーバ管理プログラム等が記憶されている。なお、これらのプログラムは、例えば、配信センターネットワークNS上の所定のサーバからダウンロードされるようにしても良い。また、これらのプログラムは、例えば、記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、投入サーバST全体を統括制御する。
[8.エッジサーバの構成及び機能等]
次に、図8を参照して、エッジサーバSEmの構成及び機能について説明する。
図8は、エッジサーバSEmの概要構成例を示す図である。
エッジサーバSEmは、図8に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部21を備えている。また、エッジサーバSEmは、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部22と、受信されたコンテンツ等を一時蓄積するバッファメモリ23とを備えている。なお、記憶部22は、記憶手段の一例である。更に、エッジサーバSEmは、コンテンツに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコードするデコーダ部24を備えている。また更に、エッジサーバSEmは、上記デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部25と、この映像処理部25から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部26と、を備えている。更にまた、エッジサーバSEmは、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部27と、この音声処理部27から出力されたオーディオ信号を音波として出力するスピーカ28と、を備えている。また更に、エッジサーバSEmは、拠点ネットワークNLmを通じてユーザ端末Tm−nとの間の情報の通信制御を行ったり、ネットワークNWを通じて他のエッジサーバSEmや投入サーバST等との間の情報の通信制御を行うための通信部29を備えている。更にまた、エッジサーバSEmは、ユーザからの指示を受け付けこの指示に応じた指示信号を制御部21に対して与える入力部(例えば、キーボード、マウス、或いは、リモコンや操作パネル等)30を備えている。そして、制御部21、記憶部22、バッファメモリ23、デコーダ部24、通信部29、及び入力部30はバス31を介して相互に接続されている。なお、エッジサーバSEmとしては、例えば、専用のサーバ装置のほか、パーソナルコンピュータ等を適用可能である。なお、エッジサーバ上で、ユーザがコンテンツを再生利用しない場合は、デコーダ部24、映像処理部25、表示部26、音声処理部27、スピーカ28、入力部30は不要である。
記憶部22には、DHTを用いたルーティングテーブル、インデックス情報、コンテンツカタログ情報、動作モード指定ファイル、及び取得済みリスト等が記憶されている。取得済みリストには、今まで取得されたコンテンツのコンテンツIDが登録される。また、記憶部22には、P2PネットワークPWに参加する際のアクセス先となるコンタクトノードのIPアドレス及びポート番号、及び投入サーバSTのIPアドレス及びポート番号等が記憶されている。また、記憶部22には、エッジサーバSEmが設置される拠点mの拠点識別情報、及びエッジサーバSEmに割り当てられたノードIDが記憶されている。また、記憶部22の記憶容量の一部にコンテンツキャッシュエリアが割り当てられている。このコンテンツキャッシュエリアにはコンテンツが記憶される。また、記憶部22には、オペレーティングシステム、エッジサーバ用プロクシプログラム、P2Pソフトウェア等が記憶されている。なお、これらのプログラムは、例えば、投入サーバSTからダウンロードされるようにしても良い。また、これらのプログラムは、例えば、記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
制御部21は、CPUが記憶部22等に記憶されたプログラムを読み出して実行することにより、本発明における第2取得手段、及び方式情報取得手段として機能する。
[9.ユーザ端末の構成及び機能等]
次に、図9を参照して、ユーザ端末Tm−nの構成及び機能について説明する。
図9は、ユーザ端末Tm−nの概要構成例を示す図である。
ユーザ端末Tm−nは、図9に示すように、制御部41、記憶部42、バッファメモリ43、デコーダ部44、映像処理部45、表示部46、音声処理部47、スピーカ部48、通信部49、入力部50、及びバス51を備える。制御部41、記憶部42、バッファメモリ43、デコーダ部44、映像処理部45、表示部46、音声処理部47、スピーカ部48、入力部50、及びバス51の基本的な構成及び機能は、エッジサーバSEmにおける制御部21、記憶部22、バッファメモリ23、デコーダ部24、映像処理部25、表示部26、音声処理部27、スピーカ部28、入力部30、バス31と同様である。なお、ユーザ端末Tm−nとしては、例えば、パーソナルコンピュータ等を適用可能である。
通信部49は、拠点ネットワークNLmを通じて他のユーザ端末Tm−nやエッジサーバSEmとの間の情報の通信制御を行ったり、ネットワークNWを通じてポータルサーバSP等との間の情報の通信制御を行う。
記憶部42には、DHTを用いたルーティングテーブル、インデックス情報、コンテンツカタログ情報、動作モード指定ファイル等が記憶されている。また、記憶部42には、P2PネットワークPWに参加する際のアクセス先となるコンタクトノードのIPアドレス及びポート番号、及び投入サーバSTのIPアドレス及びポート番号等が記憶されている。また、記憶部42には、ユーザ端末Tm−nが設置される拠点mの拠点識別情報、及びユーザ端末Tm−nに割り当てられたノードIDが記憶されている。また、記憶部42の記憶容量の一部にコンテンツキャッシュエリアが割り当てられている。このコンテンツキャッシュエリアにはコンテンツが記憶される。また、記憶部42には、オペレーティングシステム、ユーザ用コンテンツ取得プログラム、P2Pソフトウェア、Webブラウザプログラム、プレーヤープログラム等が記憶されている。なお、これらのプログラムは、例えば、エッジサーバSEmやポータルサーバSP等からダウンロードされるようにしても良い。また、これらのプログラムは、例えば、記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
制御部41は、CPUが記憶部42等に記憶されたプログラムを読み出して実行することにより、本発明における第1取得手段、及び方式情報取得手段として機能する。
[10.コンテンツ配信システムの動作]
次に、図10乃至図16を参照して、本実施形態に係るコンテンツ配信システムSの動作について説明する。
図10は、本実施形態に係る管理サーバSMの処理例を示すフローチャートである。
管理サーバSMは、管理端末MTからのリクエストに応じて、動作モードを設定するための管理画面を管理端末MTにより表示させる。この管理画面は、管理サーバSMからHTML文書を管理端末MTに送信することにより、管理端末MTが、受信したHTML文書に基づいて表示する。今、管理サーバSMが拠点のリスト画面を管理端末MTに表示させている状態であるとする。このとき、システム管理者が、画面に表示された何れかの拠点mを選択して変更ボタンを押したときに、図10に示す処理が、管理サーバSMが備える制御部により開始される。
先ず、管理サーバSMは、拠点内ノードリスト画面を管理端末MTに表示させる(ステップS11)。具体的に、管理サーバSMは、拠点のリスト画面においてシステム管理者により選択された拠点mの拠点名、エッジサーバSEmの動作モード、各ユーザ端末Tm−nのノードID及び動作モードを動作モード指定ファイルから取得する。次いで、管理サーバSMは、取得した情報に基づいて、拠点内ノードリスト画面用のHTML文書を生成する。そして、管理サーバSMは、生成したHTML文書を管理端末MTに送信する。
図11は、拠点内ノードリスト画面の表示例である。図11に示すように、拠点内ノードリスト画面には、拠点名入力欄101、動作モード選択ボタン102、変更ボタン103、端末リスト111、変更ボタン114、端末追加フォーム121、追加ボタン124、戻るボタン131が表示される。
拠点名入力欄101は、拠点名を入力するための入力欄である。この拠点名入力欄101には、デフォルトとして動作モード指定ファイルに記述されている拠点名が入力された状態になっている。また、動作モード選択ボタン102は、エッジサーバSEmの動作モードを選択するためのボタンである。この動作モード選択ボタン102には、デフォルトとして動作モード指定ファイルに記述されているエッジサーバSEmの動作モードに対応するボタンが選択された状態になっている。変更ボタン103は、拠点名及びエッジサーバSEmの動作モードを変更するためのボタンである。
端末リスト111には、ユーザ端末Tm−n毎に、ノードID112及び動作モード選択ボタン113が表示される。ノードID112には、動作モード指定ファイルに記述されているユーザ端末Tm−nのノードIDが表される。また、動作モード選択ボタン113は、ユーザ端末Tm−nの動作モードを選択するためのボタンである。この動作モード選択ボタン113には、デフォルトとして動作モード指定ファイルに記述されているユーザ端末Tm−nの動作モードに対応するボタンが選択された状態になっている。また、変更ボタン114は、ユーザ端末Tm−n毎に対応して表示される。この変更ボタン114は、ユーザ端末Tm−nの動作モードを変更するためのボタンである。なお、ノードID112の部分には、ノードID以外の情報が表示されるようにしても良い。例えば、ユーザ端末Tm−nを識別可能な情報が表示されても良い。
端末追加フォーム121には、ノードID入力欄122及び動作モード選択ボタン123が表示される。ノードID入力欄は、選択された拠点mに追加するユーザ端末Tm−nのノードIDを入力するための入力欄である。また、動作モード選択ボタン122は、追加されるユーザ端末Tm−nの動作モードを選択するためのボタンである。追加ボタン124は、選択された拠点mに新たなユーザ端末Tm−nを追加するためのボタンである。
拠点内ノードリスト画面が管理端末MTにより表示されているとき、管理サーバSMは、システム管理者によって戻るボタン131が押されたか否かを判定する(ステップS12)。このとき、管理サーバSMは、戻るボタン131が押されていない場合には(ステップS12:NO)、システム管理者により変更ボタン103が押されたか否かを判定する(ステップS13)。このとき、管理サーバSMは、変更ボタン103が押された場合には(ステップS13:YES)、拠点名及びエッジサーバSEmの動作モードを変更する(ステップS14)。具体的に、管理サーバSMは、拠点名入力欄101に入力された拠点名及び動作モード選択ボタン102において選択されている動作モードを管理端末MTから取得する。そして、管理サーバSMは、動作モード指定ファイルにおいて、選択された拠点mの拠点名及びエッジサーバSEmの動作モードを、管理端末MTから取得した拠点名及び動作モードに変更する。管理サーバSMは、この処理を終えると、ステップS12に移行する。
一方、管理サーバSMは、変更ボタン103が押されていない場合には(ステップS13:NO)、何れかの変更ボタン114が押されたか否かを判定する(ステップS15)。このとき、管理サーバSMは、何れかの変更ボタン114が押された場合には(ステップS15:YES)、ユーザ端末Tm−nの動作モードを変更する(ステップS16)。具体的に、管理サーバSMは、押された変更ボタン114に対応するユーザ端末Tm−nのノードID、及び動作モード選択ボタン113において選択されている動作モードを管理端末MTから取得する。そして、管理サーバSMは、動作モード指定ファイルにおいて、管理端末MTから取得したノードIDに対応する動作モードを、管理端末MTから取得した動作モードに変更する。管理サーバSMは、この処理を終えると、ステップS12に移行する。
一方、管理サーバSMは、何れの変更ボタン114も押されていない場合には(ステップS15:NO)、システム管理者によって追加ボタン124が押されたか否かを判定する(ステップS17)。このとき、管理サーバSMは、追加ボタン124が押された場合には(ステップS17:YES)、ユーザ端末Tm−nの情報を動作モード指定ファイルに追加する(ステップS18)。具体的に、管理サーバSMは、ノードID入力等122に入力されたノードID及び動作モード選択ボタン123において選択されている動作モードを管理端末MTから取得する。そして、管理サーバSMは、取得したノードID及び動作モードを、選択された拠点mの拠点名に対応付けて動作モード指定ファイルに追加設定する。
管理サーバSMは、追加ボタン124が押されていない場合(ステップS17:NO)、又は、ステップS18の処理を終えた場合には、ステップS12に移行する。
ステップ12において、管理サーバSMは、戻るボタン131が押された場合には(ステップ12:YES)、図10に示す処理を終了させ、拠点のリスト画面を管理端末MTに表示させる。上記処理で変更された動作モード指定ファイルは、管理サーバSMから投入サーバSTに送信され、例えば、投入サーバSTにより配信される。
図12は、本実施形態に係るユーザ端末Tm−nにおける制御部41の処理例を示すフローチャートである。
図12の処理は、ユーザ端末Tm−nの電源がONとされたときに開始される。先ず、制御部41は、ユーザ用コンテンツ取得プログラムを起動させ、ユーザ端末Tm−nのハードウェアの初期化を行う(ステップS21)。次いで、制御部41は、動作モード指定ファイルが記憶部42に記憶されているか否かを判定する(ステップS22)。このとき、制御部41は、動作モード指定ファイルが記憶部42に記憶されていない場合には(ステップS22:NO)、方式情報取得手段として、投入サーバSTから最新の動作モード指定ファイルを取得する(ステップS23)。動作モード指定ファイルがないため、制御部41は、クライアントサーバモードで動作モード指定ファイルを取得するのである。具体的に、制御部41は、コンテンツカタログ情報から最新の動作モード指定ファイルのコンテンツIDを取得する。そして、制御部41は、取得したコンテンツIDを含むコンテンツ要求メッセージを投入サーバSTに送信する。その後、制御部41は、投入サーバSTから送信されてきた動作モード指定ファイルを受信する。そして、制御部41は、受信した動作モード指定ファイルを記憶部42に記憶させる。
制御部41は、ステップS22において動作モード指定ファイルが記憶部42に記憶されている場合(ステップS22:YES)、又は、ステップS23の処理を終えた場合には、動作モード指定ファイルから該当箇所を読み込み、指定された動作モードを設定する(ステップS24)。具体的に、制御部41は、記憶部42から、ユーザ端末Tm−n自身が設置された拠点mの拠点識別情報及びユーザ端末Tm−n自身のノードIDを取得する。次いで、制御部41は、拠点識別情報及び取得したノードIDに対応する動作モードを動作モード指定ファイルから取得する。そして、制御部41は、取得した動作モードを、大域変数としてRAMに記憶させる。なお、ステップS22において動作モード指定ファイルが記憶部42に記憶されていると判定された場合、読み込み対象の動作モード指定ファイルは、前回取得された動作モード指定ファイルである。一方、ステップS23の処理が行われた場合、読み込み対象の動作モード指定ファイルは、ステップS23において取得された動作モード指定ファイルである。
次いで、制御部41は、動作モード指定ファイルの更新用タイマーを起動させる(ステップS25)。この更新用タイマーは、例えば、30分に設定される。なお、タイマーの設定及びカウントダウンは、制御部41のCPUの計時機能により実現される。
次いで、制御部41は、ステップS24において設定された動作モードがP2Pモードであるか否かを判定する(ステップS26)。このとき、制御部41は、動作モードがP2Pモードである場合には、P2Pソフトウェアを、コンテンツ取得プログラムとは別プロセスで起動させる(ステップS27)。P2Pソフトウェアの起動によって、ユーザ端末Tm−nは、P2PネットワークPWに参加する。
制御部41は、ステップS26において動作モードがクライアントサーバモードである場合(ステップS26:NO)、又は、ステップS27の処理を終えた場合には、Webブラウザを起動させる(ステップS28)。次いで、制御部41は、コンテンツを選択するためのWebページを表示部46に表示させる(ステップS29)。具体的に、制御部41は、HTTP(Hyper Text Transfer Protocol)リクエストをポータルサーバSPに送信する。その後、制御部41は、ポータルサーバSPから送信されてきたHTML文書を受信する。そして、制御部41は、受信したHTML文書に基づいてコンテンツ選択画面を表示する。
コンテンツ選択画面には、コンテンツリストが表示される。このコンテンツリストには、コンテンツ毎に、コンテンツ名、コンテンツのサムネイルが表示される。また、各コンテンツ毎に再生ボタンが表示される。受信したHTML文書において、再生ボタンに対応するタグには、例えば、再生対象となるコンテンツのコンテンツ名、コンテンツID、コンテンツを再生するプレーヤープログラムを指定する識別情報等が記述されている。
コンテンツ選択画面の表示後、制御部41は、コンテンツの再生が要求されたか否かを判定する(ステップS30)。つまり、制御部41は、ユーザによって何れかの再生ボタンが選択されたか否かを判定する。このとき、制御部41は、コンテンツの再生が要求されていない場合には(ステップS30:NO)、ユーザによって電源OFFの要求がされたか否かを判定する(ステップS39)。このとき、制御部41は、電源OFFの要求がされていない場合には(ステップS39:NO)、ステップS29に移行する。
ステップS30において、制御部41は、コンテンツの再生が要求された場合には(ステップS30:YES)、現在の動作モードがP2Pモードであるか否かを判定する(ステップS31)。
このとき、制御部41は、動作モードがP2Pモードである場合には(ステップS31:YES)、第1取得手段として、P2Pソフトウェアにコンテンツを取得させる(ステップS32)。具体的に、制御部41は、ユーザに選択された再生ボタンに対応するタグから、コンテンツIDを取得する。次いで、制御部41は、取得したコンテンツIDをP2Pソフトウェアに対して指定し、コンテンツの取得を指示する。
一方、制御部41は、動作モードがクライアントサーバモードである場合には(ステップS31:NO)、第1取得手段として、投入サーバSTからコンテンツを取得する(ステップS33)。具体的に、制御部41は、ユーザに選択された再生ボタンに対応するタグから、コンテンツIDを取得する。そして、制御部41は、取得したコンテンツIDを含むコンテンツ要求メッセージを投入サーバSTに送信する。なお、ステップS32及びS33において、制御部41は、ユーザに選択された再生ボタンに対応するタグからコンテンツ名を取得し、取得したコンテンツ名で、コンテンツカタログ情報から該当するコンテンツのコンテンツIDを検索しても良い。
制御部41は、ステップS32又はS33の処理を終えると、コンテンツの取得が完了したか否かを判定する(ステップS34)。このとき、制御部41は、コンテンツの取得が完了していない場合には(ステップS34:NO)、コンテンツ取得エラーとなったか否かを判定する(ステップS35)。このとき、制御部41は、コンテンツ取得エラーとなっていない場合には(ステップS35:NO)、ステップS34に移行する。一方、制御部41は、コンテンツ取得エラーとなった場合には(ステップS35:YES)、表示部46にエラーメッセージを表示させる(ステップS36)。そして、制御部41は、ステップS29に移行する。
ステップS34において、制御部41は、コンテンツの取得が完了した場合には(ステップS34:YES)、プレーヤープログラムを起動させ、取得したコンテンツを再生する(ステップS37)。なお、ステップS33の処理が行われた場合、制御部41は、エッジサーバSEmから取得したコンテンツを、記憶部42のコンテンツキャッシュエリアに記憶させる。次いで、制御部41は、プレーヤープログラムによってコンテンツの再生が完了し、又は、ユーザ操作によってコンテンツの再生が中止されるまで待機する(ステップS38)。そして、コンテンツの再生が終了すると、制御部41は、ステップS29に移行する。
ステップS39において、制御部41は、電源OFFの要求がされた場合には(ステップS39:YES)、図12に示す処理を終了させる。
図13は、本実施形態に係るユーザ端末Tm−nにおける制御部41の動作モード制御処理の処理例を示すフローチャートである。
動作モード指定ファイルの更新用タイマーが満了すると、タイマー割り込みイベントが発生する。このタイマー割り込みイベントが発生したときに、例えば、現在実行されている処理が一時休止して、図13に示す動作モード制御処理が開始される。先ず、制御部41は、現在の動作モードがP2Pモードであるか否かを判定する(ステップS51)。
このとき、制御部41は、動作モードがP2Pモードである場合には(ステップS51:YES)、P2Pソフトウェアに動作モード指定ファイルを取得させる(ステップS52)。具体的に、制御部41は、方式情報取得手段として、コンテンツカタログ情報から最新の動作モード指定ファイルのコンテンツIDを取得する。次いで、制御部41は、取得したコンテンツIDをP2Pソフトウェアに対して指定し、コンテンツの取得を指示する。そして、制御部41は、P2Pソフトウェアから動作モード指定ファイルに対応するコンテンツ取得成功を受信するまで待機する。
一方、制御部41は、動作モードがクライアントサーバモードである場合には(ステップS51:NO)、方式情報取得手段として、投入サーバSTから最新の動作モード指定ファイルを取得する(ステップS53)。この処理は、図12に示すステップS23の処理と同様である。
制御部41は、ステップS52又はS53の処理を終えると、動作モード指定ファイルから該当箇所を読み込み、指定された動作モードを設定する(ステップS54)。具体的に、制御部41は、記憶部42から、ユーザ端末Tm−n自身のノードID及びユーザ端末Tm−n自身が設置された拠点mの拠点識別情報を取得する。次いで、制御部41は、取得したノードID及び拠点識別情報に対応する動作モードを動作モード指定ファイルから取得する。
次いで、制御部41は、動作モードが変更されたか否かを判定する(ステップS55)。具体的に、制御部41は、ステップS54の処理で取得した動作モードが、現在の動作モードと異なるか否かを判定する。このとき、制御部41は、動作モードが変更された場合には(ステップS55:YES)、変更後の新しい動作モードがP2Pモードであるか否かを判定する(ステップS56)。このとき、制御部41は、新しい動作モードがP2Pモードである場合には(ステップS56:YES)、P2Pソフトウェアを、コンテンツ取得プログラムとは別プロセスで起動させる(ステップS57)。一方、制御部41は、新しい動作モードがクライアントサーバモードである場合には(ステップS56:NO)、現在起動中のP2Pソフトウェアのプロセスを停止させる(ステップS58)。P2Pソフトウェアのプロセス停止により、ユーザ端末Tm−nは、P2PネットワークPWから離脱する。
制御部41は、ステップS57又はS58の処理を終えると、指定された動作モードの設定を行う(ステップS59)。具体的に、制御部41は、大域変数としてRAMに記憶されている動作モードを、ステップS54の処理で取得した動作モードに書き換える。
制御部41は、ステップS55において動作モードが変更されていない場合、又は、ステップS59の処理を終えた場合には、動作モード指定ファイルの更新用タイマーを起動させる(ステップS60)。この処理により、一定時間が経過した後、再度動作モード制御処理が実行される。
そして、制御部41は、動作モード制御処理を終了させ、休止していた処理の実行を再開する。
なお、動作モード制御処理を開始するタイミングとしては、更新用タイマーの割り込みイベントが発生した場合だけに限定されるものではない。例えば、他の装置から指示を受けたときに動作モード制御処理が開始されるようにしても良い。例えば、システム管理者が管理端末を操作することにより、動作モードの変更を指示する。すると、この指示を受けた投入サーバSTが、動作モード変更指示メッセージを各エッジサーバSEmに送信する。動作モード変更指示メッセージを受信したエッジサーバSEmは、動作モード制御処理を実行する。また、動作モード変更指示メッセージを受信したエッジサーバSEmは、同一拠点内の各ユーザ端末Tm−nに、動作モード変更指示メッセージを転送する。そして、動作モード変更指示メッセージを受信したユーザ端末Tm−nは、動作モード制御処理を実行する。
図14は、本実施形態に係るユーザ端末Tm−nにおけるP2Pソフトウェアメイン処理の処理例を示すフローチャートである。
図14に示すP2Pソフトウェアメイン処理は、上位プロセスとしてのユーザ用コンテンツ取得プログラムからP2Pソフトウェアが起動されたときに開始される。先ず、制御部41は、コンタクトノードとしての投入サーバSTに参加要求メッセージを送信する(ステップS71)。その後、制御部41は、参加要求メッセージの送信に応じて、コンタクトノードとしての投入サーバSTを含む複数のノードから送信されてきた参加応答メッセージを受信する。そして、制御部41は、受信した参加応答メッセージに含まれるノード情報に基づいてルーティングテーブルを作成する。
次いで、制御部41は、定期パブリッシュ用タイマーを起動する(ステップS72)。定期パブリッシュ用タイマーは、例えば、5分に設定される。定期パブリッシュ用タイマーが満了すると、ユーザ端末Tm−nが保存している全てのコンテンツについて、パブリッシュメッセージが送信される。ユーザ端末Tm−nが保存しているコンテンツのルートノードが、P2PネットワークPWから離脱してしまう場合がある。この場合においても、ユーザノードがコンテンツの所在を検索することが出来るよう、制御部41は、定期的にパブリッシュメッセージを送信する。
次いで、制御部41は、上位プロセスとしてのユーザ用コンテンツプログラムからコンテンツの取得指示があったか否かを判定する(ステップS73)。このとき、制御部41は、コンテンツの取得の指示があった場合には(ステップS73:YES)、コンテンツ要求処理を実行する(ステップS74)。そして、制御部41は、ステップS73に移行する。
一方、制御部41は、コンテンツの取得の指示がなかった場合には(ステップS73:NO)、上位プロセスとしてのユーザ用コンテンツプログラムから停止指示があったか否かを判定する(ステップS78)。このとき、制御部41は、停止指示がなかった場合には(ステップS78:NO)、他のノードから何らかのメッセージを受信したか否かを判定する(ステップS75)。メッセージとしては、例えば、参加要求メッセージ、参加応答メッセージ、コンテンツ所在問合せメッセージ、パブリッシュメッセージ、コンテンツ要求メッセージ等がある。ここで、制御部41は、メッセージを受信していない場合には(ステップS75:NO)、ステップS73に移行する。
一方、制御部41は、メッセージを受信した場合には(ステップS75:YES)、受信したメッセージに対応した処理を実行する(ステップS76)。次いで、制御部41は、ルーティングテーブルを更新する(ステップS77)。ルーティングテーブルにノード情報が登録されているノードがP2PネットワークPWから離脱する場合がある。そこで、制御部41は、ルーティングテーブルを最新の状態に維持するのである。具体的に、制御部41は、受信したメッセージから、メッセージの中継元のノードのノード情報を取得する。そして、制御部41は、ノード情報に含まれるノードIDと、記憶部42に記憶されているユーザ端末Tm−n自身のノードIDとを比較して、ルーティングテーブル中のどの位置にノード情報を登録するかを決定する。そして、制御部41は、決定した位置のノード情報を、取得したノード情報に書き換える。なお、ルーティングテーブルの更新は、所定の確率で実行される。制御部41は、この処理を終えると、ステップS73に移行する。
ステップS78において、制御部41は、停止指示があった場合には(ステップS78:YES)、P2Pソフトウェアメイン処理を終了させる。
なお、投入サーバSTがP2PネットワークPWに参加する場合、投入サーバSTにおいてもP2Pソフトウェアが実行される。このときにおける投入サーバSTの処理内容は、図14に示すユーザ端末Tm−nのP2Pソフトウェアメイン処理と基本的に同様である。ただし、投入サーバSTがP2PネットワークPWにおけるコンタクトノードである場合、ステップS71に示す参加要求メッセージの送信は行われない。また、投入サーバSTは、他のノードからコンテンツを取得する必要がないので、ステップS74に示すコンテンツ要求処理は無い。
図15は、本実施形態に係るユーザ端末Tm−nにおけるコンテンツ要求処理の処理例を示すフローチャートである。
図15に示すコンテンツ要求処理は、P2Pソフトウェアメイン処理から呼び出されたときに開始される。先ず、制御部41は、コンテンツ所在問合せメッセージをルートノードに向けて送信する(ステップS101)。このコンテンツ所在問合せメッセージには、上位プロセスとしてのユーザ用コンテンツ取得プログラムから指定されたコンテンツIDが含まれる。次いで、制御部41は、応答待ちタイマーを起動する(ステップS102)。この応答待ちタイマーには、例えば、30秒が設定される。
次いで、制御部41は、コンテンツ問合せ応答メッセージを受信したか否かを判定する(ステップS103)。このとき、制御部41は、コンテンツ問合せ応答メッセージを受信した場合は(ステップS103:YES)、コンテンツ問合せ応答メッセージに含まれるインデックス情報中に、同一拠点内のユーザ端末Tm−nのノード情報が存在するか否かを判定する(ステップS104)。つまり、制御部41は、同一拠点内の何れかのユーザ端末Tm−nがコンテンツを保存しているか否かを判定する。この判定は、インデックス情報中に、記憶部42に記憶されているユーザ端末Tm−nが設置された拠点mの拠点識別情報と同一の拠点識別情報と、ユーザ端末であることを示すノード種別とが組で登録されているか否かを判定することにより行われる。このとき、制御部41は、インデックス情報中に、同一拠点内のユーザ端末Tm−nのノード情報が存在する場合には(ステップS104:YES)、インデックス情報中にノード情報が存在する同一拠点内のユーザ端末Tm−nのうち、任意のユーザ端末Tm−nにコンテンツ要求メッセージを送信する(ステップS105)。
一方、制御部41は、インデックス情報中に、同一拠点内のユーザ端末Tm−nのノード情報が存在しない場合には(ステップS104:NO)、コンテンツ問合せ応答メッセージに含まれるインデックス情報中に、同一拠点内のエッジサーバSEmのノード情報が存在するか否かを判定する(ステップS106)。つまり、制御部41は、同一拠点内のエッジサーバSEmがコンテンツを保存しているか否かを判定する。この判定は、インデックス情報中に、記憶部42に記憶されているユーザ端末Tm−nが設置された拠点mの拠点識別情報と同一の拠点識別情報が登録されているか否かを判定することにより行われる。このとき、制御部41は、インデックス情報中に、同一拠点内のエッジサーバSEmのノード情報が存在する場合には(ステップS106:YES)、同一拠点内のエッジサーバSEmにコンテンツ要求メッセージを送信する(ステップS107)。
一方、制御部41は、インデックス情報中に、同一拠点内のエッジサーバSEmのノード情報が存在しない場合には(ステップS106:NO)、コンテンツ問合せ応答メッセージに含まれるインデックス情報中に、他拠点のエッジサーバSEmのノード情報が存在するか否かを判定する(ステップS108)。つまり、制御部41は、他拠点のエッジサーバSEmがコンテンツを保存しているか否かを判定する。この判定は、インデックス情報中に、エッジサーバであることを示すノード種別が登録されているか否かを判定することにより行われる。このとき、制御部41は、インデックス情報中に、他拠点のエッジサーバSEmのノード情報が存在する場合には(ステップS108:YES)、インデックス情報中にノード情報が存在するエッジサーバSEmのうち、任意の他拠点のエッジサーバSEmにコンテンツ要求メッセージを送信する(ステップS109)。
一方、制御部41は、インデックス情報中に、他拠点のエッジサーバSEmのノード情報が存在しない場合には(ステップS108:NO)、コンテンツ問合せ応答メッセージに含まれるインデックス情報中に、他拠点のユーザ端末Tm−nのノード情報が存在するか否かを判定する(ステップS110)。つまり、制御部41は、他拠点の何れかのユーザ端末Tm−nがコンテンツを保存しているか否かを判定する。この判定は、インデックス情報中に、ユーザ端末であることを示すノード種別が登録されているか否かを判定することにより行われる。このとき、制御部41は、インデックス情報中に、他拠点のユーザ端末Tm−nのノード情報が存在する場合には(ステップS110:YES)、インデックス情報中にノード情報が存在するユーザ端末Tm−nのうち、任意のユーザ端末Tm−nにコンテンツ要求メッセージを送信する(ステップS111)。
一方、制御部41は、インデックス情報中に、他拠点のユーザ端末Tm−nのノード情報が存在しない場合には(ステップS110:NO)、投入サーバにコンテンツ要求メッセージを送信する(ステップS112)。
ステップS103において、制御部41は、コンテンツ問合せ応答メッセージを受信していない場合には(ステップS103:NO)、応答待ちタイマーが満了したか否かを判定する(ステップS113)。このとき、制御部41は、応答待ちタイマーが満了していない場合には(ステップS113:NO)、ステップS103に移行する。一方、制御部41は、応答待ちタイマーが満了した場合には(ステップS113:YES)、投入サーバにコンテンツ要求メッセージを送信する(ステップS114)。
制御部41は、ステップS105、S107、S109、S111、S112又はS114の処理を終えると、コンテンツ保持ノード、エッジサーバSEm又は投入サーバSTからコンテンツの受信を開始する(ステップS115)。
次いで、制御部41は、コンテンツの受信開始から一定時間以内にコンテンツの受信が完了したか否かを判定する(ステップS116)。このとき、制御部41は、一定時間以内にコンテンツの受信が完了した場合には(ステップS116:YES)、受信したコンテンツをコンテンツキャッシュエリアに保存する(ステップS117)。このとき、制御部41は、コンテンツキャッシュエリアの空き容量が、受信したコンテンツのデータサイズより小さい場合には、この空き容量が、受信したコンテンツのデータサイズ以上となるまで、コンテンツキャッシュエリアからコンテンツを削除する。具体的に、制御部41は、タイムスタンプが旧いものから順にコンテンツを削除する。コンテンツのタイムスタンプが示す日時は、基本的にはコンテンツが保存された日時である。ただし、保存されたコンテンツが利用された場合には、タイムスタンプがその利用日時に更新される。制御部41は、コンテンツキャッシュエリアの空き容量を確保すると、受信したコンテンツをコンテンツキャッシュエリアに保存する。
次いで、制御部41は、保存したコンテンツについてのパブリッシュメッセージをルートノードに向けて送信する(ステップS118)。このパブリッシュメッセージには、ユーザ端末Tm−nのノード情報、保存したコンテンツのコンテンツID、記憶部42に記憶されているユーザ端末Tm−n自身が設置されている拠点mの拠点識別情報、及びユーザ端末であることを示すノード種別が含まれる。次いで、制御部41は、上位プロセスとしてのユーザ用コンテンツプログラムに、コンテンツ取得成功を返答する(ステップS119)。
ステップS116において、制御部41は、一定時間以内にコンテンツの受信が完了しなかった場合には(ステップS116:NO)、上位プロセスとしてのユーザ用コンテンツプログラムに、コンテンツ取得エラーを返答する(ステップS120)。
制御部41は、ステップS119又はS120の処理を終えると、コンテンツ要求処理を終了させる。
図16は、本実施形態に係るエッジサーバSEmにおける制御部21の処理例を示すフローチャートである。
図16の処理は、エッジサーバSEmの電源がONとされたときに開始される。先ず、制御部21は、エッジサーバ用プロクシプログラムを起動させ、エッジサーバSEmのハードウェアの初期化を行う(ステップS131)。次いで、制御部21は、動作モード指定ファイルが記憶部22に記憶されているか否かを判定する(ステップS132)。このとき、制御部21は、動作モード指定ファイルが記憶部22に記憶されていない場合には(ステップS132:NO)、投入サーバSTから最新の動作モード指定ファイルを取得する(ステップS133)。動作モード指定ファイルがないため、制御部21は、クライアントサーバモードで動作モード指定ファイルを取得するのである。具体的に、制御部21は、コンテンツカタログ情報から最新の動作モード指定ファイルのコンテンツIDを取得する。そして、制御部21は、取得したコンテンツIDを含むコンテンツ要求メッセージを投入サーバSTに送信する。その後、制御部21は、投入サーバSTから送信されてきた動作モード指定ファイルを受信する。そして、制御部21は、受信した動作モード指定ファイルを記憶部22に記憶させる。
制御部21は、ステップS132において動作モード指定ファイルが記憶部22に記憶されていた場合(ステップS132:YES)、又は、ステップS133の処理を終えた場合には、動作モード指定ファイルから該当箇所を読み込み、指定された動作モードを設定する(ステップS134)。具体的に、制御部21は、記憶部22から、エッジサーバSEm自身が設置された拠点mの拠点識別情報を取得する。次いで、制御部21は、取得した拠点識別情報に対応するエッジサーバSEmの動作モードを動作モード指定ファイルから取得する。そして、制御部21は、取得した動作モードを、大域変数としてRAMに記憶させる。なお、ステップS132において動作モード指定ファイルが記憶部22に記憶されていると判定された場合、読み込み対象の動作モード指定ファイルは、前回取得された動作モード指定ファイルである。一方、ステップS133の処理が行われた場合、読み込み対象の動作モード指定ファイルは、ステップS133において取得された動作モード指定ファイルである。
次いで、制御部21は、動作モード指定ファイルの更新用タイマーを起動させる(ステップS135)。動作モード指定ファイルの更新用タイマーが満了すると、制御部21は、動作モード制御処理を実行する。この動作モード制御処理の処理内容は、図13に示すユーザ端末Tm−nの動作モード制御処理と基本的に同様である。
次いで、制御部21は、ステップS134において設定された動作モードがP2Pモードであるか否かを判定する(ステップS136)。このとき、制御部21は、動作モードがP2Pモードである場合には、P2Pソフトウェアを、コンテンツ取得プログラムとは別プロセスで起動させる(ステップS137)。P2Pソフトウェアの起動によって、エッジサーバSEmは、P2PネットワークPWに参加する。
P2Pソフトウェアが起動すると、制御部21は、P2Pソフトウェアメイン処理を実行する。このP2Pソフトウェアメイン処理の処理内容は、図14に示すユーザ端末Tm−nのP2Pソフトウェアメイン処理と基本的に同様である。また、P2Pソフトウェアメイン処理から呼び出されるコンテンツ要求処理の処理内容も、図15に示すユーザ端末Tm−nのコンテンツ要求処理と基本的に同様である。ただし、エッジサーバSEmの場合、P2Pソフトウェアの上位プロセスは、エッジサーバ用プロクシプログラムである。
制御部21は、ステップS136において動作モードがクライアントサーバモードである場合(ステップS136:NO)、又は、ステップS137の処理を終えた場合には、一定時間待機する(ステップS138)。次いで、制御部21は、記憶部22に記憶されている最新のコンテンツカタログ情報の内容を確認する(ステップS139)。次いで、制御部21は、新着コンテンツがあるか否かを判定する(ステップS140)。例えば、コンテンツカタログ情報に属性情報が登録されているコンテンツのうち、取得済みリストにコンテンツIDが登録されていないコンテンツが、新着コンテンツである。ここで、制御部21は、新着コンテンツがない場合には(ステップS140:NO)、システム管理者によって電源OFFの要求がされたか否かを判定する(ステップS150)。このとき、制御部21は、電源OFFの要求がされていない場合には(ステップS150:NO)、ステップS138に移行する。
ステップS140において、制御部21は、新着コンテンツがある場合には(ステップS140:YES)、現在の動作モードがP2Pモードであるか否かを判定する(ステップS141)。このとき、制御部21は、動作モードがP2Pモードである場合には(ステップS141:YES)、第2取得手段として、P2Pソフトウェアに新着コンテンツを取得させる(ステップS142)。具体的に、制御部21は、コンテンツカタログ情報中の新着コンテンツの属性情報から、コンテンツIDを取得する。そして、制御部21は、取得したコンテンツIDをP2Pソフトウェアに対して指定し、コンテンツの取得を指示する。
ステップS141において、制御部21は、動作モードがクライアントサーバモードである場合には(ステップS141:NO)、第2取得手段として、新着コンテンツを投入サーバSTから取得する(ステップS143)。具体的に、制御部21は、コンテンツカタログ情報中の新着コンテンツの属性情報から、コンテンツIDを取得する。そして、制御部21は、取得したコンテンツIDを含むコンテンツ要求メッセージを投入サーバSTに送信する。
制御部21は、ステップS142又はステップS143の処理を終えると、コンテンツの取得が完了したか否かを判定する(ステップS144)。このとき、制御部21は、コンテンツの取得が完了していない場合には(ステップS144:NO)、コンテンツ取得エラーとなったか否かを判定する(ステップS145)。このとき、制御部21は、コンテンツ取得エラーとなっていない場合には(ステップS145:NO)、ステップS144に移行する。
ステップS144において、制御部21は、コンテンツの取得が完了した場合には(ステップS144:YES)、現在の動作モードがP2Pモードであるか否かを判定する(ステップS146)。このとき、制御部21は、動作モードがクライアントサーバモードである場合には(ステップS146:NO)、エッジサーバSEmから取得されたコンテンツをコンテンツキャッシュエリアに保存する(ステップS147)。なお、動作モードがP2Pモードである場合には、別プロセスで起動しているP2Pソフトウェアにおいて、P2PネットワークPWから取得されたコンテンツがコンテンツキャッシュエリアに保存される。
制御部21は、ステップS146において動作モードがP2Pモードである場合(ステップS146:YES)、又は、ステップS147の処理を終えた場合には、取得した新着コンテンツのコンテンツIDを取得済みリストに登録する(ステップS148)。
制御部21は、ステップS145においてコンテンツ取得エラーとなったとき(ステップS145:YES)、又は、ステップS148の処理を終えた場合には、ステップS138に移行する。
ステップS150において、制御部21は、電源OFFの要求がされた場合には(ステップS150:YES)、図16に示す処理を終了させる。
なお、ステップS138の処理において、全てのエッジサーバSEmの待機時間が同じであると、エッジサーバSEm間で新着コンテンツの取得タイミングが重なる場合がある。そうすると、ネットワークに負荷がかかる。そこで、制御部21は、待機時間にある程度の幅を持たせ、この幅の範囲内でランダムに待機時間を毎回決定すると良い。
また、新着コンテンツの取得がエラーとなると、制御部21は、エラーとなった新着コンテンツの取得を何度も試みる場合がある。そこで、制御部21は、ある程度の時間が経過しても取得することができないコンテンツは、新着コンテンツから除外しても良い。
以上説明したように、本実施形態によれば、各拠点ネットワークNLmに接続する各ノード装置と各エッジサーバSEmとの夫々の間でのコンテンツの送受信を可能とするP2PネットワークPWが構築されている。そして、ユーザ端末Tm−nが、コンテンツの取得先として、同一拠点内のエッジサーバSEm及び同一拠点内のユーザ端末Tm−nを、他拠点のエッジサーバSEm及び他拠点のエッジサーバSEmよりも優先して選択して、コンテンツを取得する。
従って、同一の拠点ネットワークNLmに接続する装置間でコンテンツがやりとりされる確率が高くなる。これにより、拠点ネットワークNLmからネットワークNWに接続する通信回線Lmのトラフィックが減り、コンテンツを効率良く取得することができる。
また、エッジサーバSEmが、例えば新着であるという条件を満たすコンテンツを、当該条件を満たさないコンテンツよりもユーザ端末Tm−nによりダウンロードされる可能性が高いと予想されるコンテンツとして、他のエッジサーバSEm又はユーザ端末Tm−nから取得する。
従って、ユーザ端末Tm−nにより取得される可能性が高いコンテンツは、同一拠点内のユーザ端末Tm−nが記憶していなかったとしても、同一拠点内のエッジサーバSEmが記憶している可能性が比較的高い。よって、同一の拠点ネットワークNLmに接続する装置間でコンテンツがやりとりされる確率が高くなる。これにより、拠点ネットワークNLmからネットワークNWに接続する通信回線Lmのトラフィックが減り、コンテンツを効率良く取得することができる。
また、ユーザ端末Tm−nが、コンテンツの取得先として同一拠点内のユーザ端末Tm−nを同一拠点内のエッジサーバSEmよりも優先して選択する。
従って、必要なコンテンツを同一拠点内のユーザ端末Tm−n及び同一拠点内のエッジサーバSEmの双方が記憶している場合、同一拠点内のユーザ端末Tm−nの方からコンテンツが取得される。これにより、コンテンツの要求を受ける確率がユーザ端末Tm−nよりも高いエッジサーバSEmの負荷を減らすことができる。
また、ユーザ端末Tm−nが、コンテンツの取得先としての他拠点のエッジサーバSEmを他拠点のユーザ端末Tm−nよりも優先して選択する。
従って、必要なコンテンツを他拠点のユーザ端末Tm−n及び他拠点のエッジサーバSEmの双方が記憶している場合、他拠点のエッジサーバSEmの方からコンテンツが取得される。よって、拠点ネットワークNLmが、複数のネットワークがルータ等のネットワーク機器により相互接続されたネットワークであるとする。この場合、拠点ネットワークNLmを構成する複数のネットワークの中で、ネットワークNWに直接接続するネットワーク又はネットワーク的にネットワークNWに比較的近いネットワークにエッジサーバSEmを接続する。すると、コンテンツがネットワーク機器を経由する回数を減らすことができる。これにより、ネットワーク機器の負荷を減らすことができる。また、効率良くコンテンツを取得することができる。
また、ユーザ端末Tm−n及びエッジサーバSEm夫々は、ユーザ端末Tm−n毎及びエッジサーバSEm毎に動作モードを示す動作モード指定ファイルを取得する。そして、ユーザ端末Tm−nは、動作モード指定ファイルにおいてユーザ端末Tm−n自身の動作モードがクライアントサーバ方式である場合には、投入サーバST又はエッジサーバSEmからコンテンツを取得する。一方、エッジサーバSEmは、動作モード指定ファイルにおいてエッジサーバSEm自身の動作モードがクライアントサーバ方式である場合には、投入サーバSTからコンテンツを取得する。
従って、ユーザ端末Tm−nがP2PネットワークPWに参加できない場合があったとしても、ユーザ端末Tm−nはクライアントサーバ方式でコンテンツを取得することが出来る。また、エッジサーバSEmがP2PネットワークPWに参加することができない場合があったとしても、エッジサーバSEmはクライアントサーバ方式でコンテンツを取得することが出来る。なお、ユーザ端末Tm−nは、クライアントサーバモードである場合には、接続先の拠点ネットワークNLmに接続するエッジサーバSEmからコンテンツを取得しても良い。
また、ユーザ端末Tm−nは、動作モード指定ファイルをP2PネットワークPWから取得する。また、エッジサーバSEmは、動作モード指定ファイルをP2PネットワークPWから取得する。
従って、オーバーレイネットワーク方式による情報通信で動作モード指定ファイルを取得することが出来るので、動作モード指定ファイルの取得によるネットワーク負荷を分散させることが出来る。
なお、P2PネットワークPWのコンタクトノードが、投入サーバSTではなく、特定のエッジサーバSEmあるいは特定のユーザ端末Tm−nであっても良い。
また、上記実施形態においては、オーバーレイネットワークに、DHTを利用したピアツーピアネットワークが適用されていたが、これに限られるものではない。例えば、他のピアツーピアシステム、または、オーバーレイネットワークを用いたシステムが適用されても良い。DHTを利用しないピアツーピアシステムとしては、例えば、ハイブリッド型のピアツーピアシステムがある。