実施の形態1
以下、図面を参照して本発明の実施の形態1について説明する。図1は、実施の形態1にかかるデータ配信システムの一例を示す構成図である。データ配信システム1は、サーバ2、ルータ3、クライアント端末4及び5を備える。
データ配信システム1は、クライアント端末4又は5(以降、クライアント端末側とも記載)からエイリアスIDを含むデータ要求をサーバ2が受信した場合に、サーバ2がそのエイリアスIDに対応する対応IDと、その対応IDに対応するデータと、をクライアント端末側に送信する。
サーバ2は、クライアント端末4又は5からAlias(エイリアス)IDを含むデータ要求を受信した場合に、そのAliasIDに対応する対応IDと、その対応IDに対応するデータをクライアント端末側に送信する。
なお、対応IDとは、データを一意に識別可能なIDであり、AliasIDとは、ある対応IDに対応付けられることにより、その対応IDに対応付けられたデータを取得することが可能なIDをいう。
例えば、AliasIDはサーバ2が提供する最新データを示すためのIDであるとする。AliasIDに対応する対応IDが時間経過に伴いA→B→Cと変化(A、B、Cの対応IDに対応するデータは、それぞれデータ1、データ2、データ3である)した場合に、AliasIDはXのまま変わらないとする。サーバ2が提供する最新データが対応ID「A」に対応付けられているデータ1であるとき、クライアント端末側からAliasID「X」を含むデータ要求を受信すると、サーバ2は対応ID「A」に対応するデータ1をクライアント端末側に送信する。サーバ2が提供する最新データが対応ID「B」に対応付けられているデータ2であるとき、クライアント端末側からAliasID「X」を含むデータ要求を受信すると、サーバ2は対応ID「B」に対応するデータ2をクライアント端末側に送信する。サーバ2が提供する最新データが対応ID「C」に対応付けられているデータ3であるとき、クライアント端末側からAliasID「X」を含むデータ要求を受信すると、サーバ2は対応ID「C」に対応するデータ3をクライアント端末側に送信する。このように、AliasIDで参照される対応ID(即ち、対応IDとAliasIDの対応関係)は逐次変更される。
ここでサーバ2の構成例として、サーバ2は、AliasIDと、そのAliasIDに対応する対応IDとを対応付けて格納するテーブルと、その対応IDに対応するデータを記憶する記憶部を備える。サーバ2は、クライアント側からAliasIDを含むデータ要求を受信した場合に、そのデータ要求に含まれるAliasIDに基づいて内部のテーブルを参照することにより、そのAliasIDに対応する対応IDを取得する。サーバ2はその対応IDに基づいて、内部の記憶部にあるその対応IDに対応するデータを取得し、そのデータをクライアント端末側に送信する。
ルータ3は、サーバ2とクライアント端末4、5を有線又は無線により接続する。ルータ3は、クライアント端末4、5から送信されたデータ要求をサーバ2に転送するほか、サーバ2から送信されたデータをクライアント端末4、5に転送する。
図2は、ルータ3の一例を示す構成図である。ルータ3は、キャッシュ部6、ID格納領域7及び配信部8を備える。
キャッシュ部6は、サーバ2から受信したデータ及びその対応IDを対応付けてキャッシュする。キャッシュしたデータは、例えば一定時刻経過後に削除されてもよい。
ID格納領域7は、キャッシュ部6にキャッシュしたデータのAliasIDと対応IDとを対応付けて格納する。これにより、配信部8がID格納領域7を参照することによって、配信部8はAliasIDに対応する対応IDを取得することができる。
図3は、ID格納領域7に対応付けて格納されたAliasIDと対応IDの一例を示す表である。図3では、AliasID「X1」に対応付けられて対応ID「A」が、AliasID「X2」に対応付けられて対応ID「B」が、AliasID「X3」に対応付けられて対応ID「C」が、ID格納領域7に格納されている。なおID格納領域7は、例えばテーブルで構成されている。
配信部8は、クライアント端末側からAliasIDの情報を含むデータ要求を受信した場合に、そのエイリアスIDに基づいてID格納領域7を参照する。これにより配信部8は、ID格納領域7においてそのエイリアスIDに対応付けられた対応IDを取得する。配信部8は、その取得した対応IDとキャッシュ部6において対応付けられたデータを、クライアント端末側に配信する。
なお、様々な処理を行う機能ブロックとして図2に記載されたルータ3の各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
クライアント端末4、5は、クライアントがデータの要求をし、要求したデータを取得する端末である。
図4A、図4Bは、データ配信システム1の動作シーケンスの一例を示す図である。図4Aは、ルータ3がデータをキャッシュするまでの過程を示した図であり、図4Bは、ルータ3がキャッシュしたデータをクライアント端末に配信するまでの過程を示した図である。図4A及び図4Bにおいて、クライアント端末4又は5からのメッセージ送信は実線の矢印で示されており、サーバ2又はルータ3からのクライアント端末4又は5へのデータ送信は点線の矢印で示されている。以下、具体的なデータ配信システム1の動作について説明する。
まず、ルータ3がデータをキャッシュするまでの過程について説明する(図4A)。
(1)まず、クライアント端末4は、エイリアスIDを含むデータ要求をサーバ2側にあるルータ3に対して送信する。ルータ3は、そのデータ要求を受信する。
(2)ルータ3は、クライアント端末4から受信したデータ要求をサーバ2に対して転送する。サーバ2は、ルータ3を介してクライアント端末4から送信されたデータ要求を受信する。
(3)サーバ2は、データ要求を受信した場合に、データ要求に含まれるエイリアスIDにその時点で対応する対応IDと、その対応IDに対応するデータと、をクライアント端末4側にあるルータ3に送信する。ルータ3は、サーバ2が送信した対応ID及びデータを受信する。
(4)ルータ3は、サーバ2が送信した対応ID及びデータを受信した場合に、そのデータ及び対応IDを対応付けて、キャッシュ部6にキャッシュする。またルータ3は、サーバ2が送信した対応ID及びデータをクライアント端末4に転送する。クライアント端末4は、ルータ3から送信された対応ID及びデータを格納する(格納されたデータを図4A、図4Bではキャッシュデータとして示している)。以上のようにして、クライアント端末4は、データ要求にかかるデータを取得することができる。
なお、(3)の処理が終了した段階で、ルータ3のID格納領域7には、サーバ2が送信したデータにかかるエイリアスIDと、そのデータにかかる対応IDとが対応付けて格納されている。このID格納領域7におけるエイリアスID及び対応IDの格納は、例えば(1)の処理以前に予めID格納領域7内で設定されていてもよいし、(3)においてルータ3がサーバ2から対応ID及びデータを受信したときになされていてもよい。
次に、ルータ3がキャッシュしたデータをクライアント端末に配信するまでの過程について説明する(図4B)。
(5)クライアント端末5は、(3)の処理の終了以降に、クライアント端末4が要求したデータと同じデータについて、そのデータのエイリアスIDの情報を含むデータ要求をサーバ2側にあるルータ3に送信する。つまりクライアント端末5は、クライアント端末4と同様のデータ要求をルータ3に送信する。ルータ3は、そのデータ要求を受信する。
(6)データ要求を受信したルータ3の配信部8は、データ要求に含まれるエイリアスIDに基づいてID格納領域7を参照する。これにより配信部8は、ID格納領域7においてそのエイリアスIDに対応付けられた対応IDを取得する。配信部8は、その取得した対応IDにキャッシュ部6において対応付けられたデータを、クライアント端末5に配信する。クライアント端末5は、その配信されたデータを受信する。
このように、データ配信システム1においてルータ3は、データ及びその対応IDをキャッシュするキャッシュ部6と、キャッシュしたデータのAliasIDと対応IDとを対応付けて格納するID格納領域7を有している。配信部8は、クライアント端末側からデータ要求を受信した場合に、AliasIDに基づいてID格納領域7を参照することにより、ID格納領域7においてそのAliasIDに対応付けられた対応IDにキャッシュ部6において対応付けられたデータを、クライアント端末側に配信する。これにより、クライアント端末側が対応IDではないAliasIDを用いてデータ要求を送信した場合でも、ルータ3はそのAliasIDに対応付けられた対応IDを特定し、その対応IDに対応付けられたデータをクライアント端末側に配信することができる。従って、データ配信システム1は、逐次生成されるデータのうち、ユーザが望むデータを配信することができる。
なお、図4Bでは、データ要求を送信するのがクライアント端末5であるとして説明したが、データ要求を送信するのはクライアント端末4であってもよい。つまり、以前サーバ2に対してデータを要求したクライアント端末が、同じデータを再度要求する場合でも、ルータ3は上述の処理を実行することができる。
実施の形態2
以下、図面を参照して本発明の実施の形態2について説明する。図5は、実施の形態2にかかるネットワーク(データ配信システム)の一例を示す構成図である。データ配信システム10は、コンテンツサーバ20、ルータ30、40、50、ユーザ端末60、70及びマッピングサーバ80を備える。なお、コンテンツサーバ20は実施の形態1にかかるサーバ2、ルータ30、40及び50は実施の形態1にかかるルータ3、ユーザ端末60、70はそれぞれ実施の形態1にかかるクライアント端末4、5に対応する。
実施の形態2では、コンテンツ情報のデータ配信システムにおいて利用されるAliasIDに基づき、データ配信システムにおいてコンテンツデータをキャッシュしたルータへデータ要求を誘導することにより、ユーザがコンテンツデータのキャッシュを取得する方法を説明する。ここでコンテンツデータは、定期もしくは不定期に生成されており、コンテンツデータの対応IDもそれに伴って定期もしくは不定期に付加される。AliasIDは、ある条件(たとえば最新であるなど)に合うコンテンツデータを特定するために用いられるIDであり、条件にマッチするコンテンツデータおよびIDが時間的に変化する場合でも変化しない。換言すれば、データ配信システムは、逐次生成される対応IDではなくAliasIDに基づいて、ルータがキャッシュしたコンテンツデータを発見することができる。
データ配信システム10は、クライアント端末側からAliasIDを含むデータ要求をコンテンツサーバ20が受信した場合に、コンテンツサーバ20がそのAliasIDに対応するコンテンツIDと、そのコンテンツIDに対応するデータと、をクライアント端末側に送信する。
コンテンツサーバ20は、ユーザ端末60又は70(以下、ユーザ端末側とも記載)からAliasIDを含むデータ要求を受信した場合に、そのAliasIDに対応するコンテンツIDと、そのコンテンツIDに対応するコンテンツデータをユーザ端末側に送信する。
図6は、コンテンツサーバ20の構成の一例を示すブロック図である。コンテンツサーバ20は、コンテンツデータ記憶部21、データ生成部22、クロック23、コンテンツ管理テーブル24、Aliasテーブル25及びメッセージ処理部26を備える。
コンテンツデータ記憶部21は、データ生成部22が生成または取得したコンテンツデータを記憶するとともに、メッセージ処理部26からの要求に応じて、記憶したコンテンツデータをメッセージ処理部26に出力する。
データ生成部22は、適時コンテンツデータを生成または取得すると、そのコンテンツデータをコンテンツデータ記憶部21に保存する。さらにデータ生成部22は、クロック23から取得した時間情報に基づいて、コンテンツ管理テーブル24にそのコンテンツデータのコンテンツ情報(コンテンツID、生成時間、サイズ、コンテンツサーバ20内の保存領域及び記録形式等を含めた情報)を記録する。
ここでデータ生成部22は、気温・光・音を計測するセンサ(図6で図示せず)が取得したセンサ情報を、コンテンツサーバ20内のクロックに基づいて10秒毎に生成している。ここでデータ生成部22は、取得した各コンテンツデータに、「センサID.年月日時分秒」という形式でIDを割り当てている。この説明ではセンサID=Xであるため、生成されるセンサ情報のID(コンテンツID)は、例えばクロック23において2012年4月23日18時54分32秒にセンサ情報が生成された場合には「X.20120423185432」になる。ここでデータ生成部22は、10秒毎に新たなコンテンツデータを生成しており、生成されたコンテンツデータのコンテンツIDはすべて異なる。
さらにデータ生成部22は、生成又は取得したコンテンツデータに対応するAliasIDが存在する場合、Aliasテーブル25にコンテンツIDとAliasIDとを対応付けた情報(以下Alias情報と記載)を格納する。データ生成部22は、対応付けの有効期限の情報もAlias情報として格納する。上記の例では、10秒毎にAliasIDが示すコンテンツIDが変化するため、AliasIDが最新データを示すAliasであった場合、対応付けの有効期限は10秒となる。この場合のAliasIDとコンテンツIDとの対応付け及びその対応付けの有効期限は次の通りである。
[AliasID及びコンテンツIDの対応付け及びその有効期限]
・AliasID = X.latest ID = X.20120423185432 有効期限=10sec
他の例として、AliasIDが1分以内の任意データを示すAliasであった場合、対応付けの有効期限は1分となる。この場合、ネットワーク内のルータには、同じAliasIDと異なるコンテンツIDとの対応付けであって、残存有効期限が異なるものが以下の6種類存在する可能性がある。
[AliasID及びコンテンツIDの対応付け及びその対応付けの有効期限]
・AliasID = X.1min ID = X.20120423185432 有効期限=60sec
・AliasID = X.1min ID = X.20120423185422 有効期限=50sec
・AliasID = X.1min ID = X.20120423185412 有効期限=40sec
・AliasID = X.1min ID = X.20120423185402 有効期限=30sec
・AliasID = X.1min ID = X.20120423185352 有効期限=20sec
・AliasID = X.1min ID = X.20120423185342 有効期限=10sec
なおこの例においてAliasIDは「X.1min」である。またコンテンツデータは、2012年4月23日18時54分32秒、同22秒、同12秒、同02秒、2012年4月23日18時53分52秒、同42秒に生成されている。つまりコンテンツデータは10秒毎に生成されている。
このように、AliasIDが複数のコンテンツIDと対応付けられている場合、ルータはそのうちの任意のコンテンツIDにかかるデータをひとつ選択して送信しても良い。通常は、Alias情報の有効期限が最も長いデータを最良として選択する。なお、コンテンツサーバ20は、コンテンツIDとAliasIDとの対応付けのうちで最新のもの(即ち有効期限が最も長いもの)のみをAliasテーブル25に格納しても良い。
なお、コンテンツIDは実施の形態1における対応IDに対応し、コンテンツサーバ20によって適宜生成されるIDである。
クロック23は、コンテンツサーバ20において時刻を測定するクロックであり、データ生成部22又はメッセージ処理部26が適宜時刻参照を行って現在時刻の情報を取得する。
コンテンツ管理テーブル24には、データ生成部22が生成または取得して、コンテンツデータ記憶部21に記憶されたコンテンツデータのコンテンツ情報が記録される。
Aliasテーブル25には、データ生成部22が生成または取得したコンテンツデータに対応するコンテンツIDとそのコンテンツIDに対応するAliasIDとを対応付けた情報(Alias情報)が格納される。
図7は、ルータを介してユーザ端末から特定のコンテンツデータについてのコンテンツ要求メッセージを受信したときの、メッセージ処理部26が実行する処理の一例を示すフローチャートである。以下、図7を用いてメッセージ処理部26が実行する処理を説明する。
メッセージ処理部26は、ユーザ端末からコンテンツ要求メッセージを受信すると、コンテンツ要求メッセージに含まれたIDがコンテンツデータ記憶部21に記憶されているか否かを、コンテンツ管理テーブル24を参照することにより判定する(ステップS11)。上述の通りコンテンツ管理テーブル24には、コンテンツデータ記憶部21に記憶されたコンテンツデータに対応するコンテンツID(AliasIDではない)が記載されている。
コンテンツ要求メッセージに含まれたIDがコンテンツデータ記憶部21に記憶されている場合(ステップS11のYes)、メッセージ処理部26は、コンテンツ管理テーブル24を参照して、そのコンテンツデータに対応するコンテンツIDに基づいてコンテンツ情報を検索し、そのコンテンツデータの保存領域の情報を取得する。メッセージ処理部26は、保存領域であるコンテンツデータ記憶部21からそのコンテンツデータを取得するとともに、そのコンテンツデータを含む応答メッセージを作成して、ルータを介してユーザ端末に送信する(ステップS12)。
コンテンツ要求メッセージに含まれたIDがコンテンツデータ記憶部21に記憶されていない場合(ステップS11のNo)、メッセージ処理部26は、コンテンツ要求メッセージに記載されたIDがAlias情報として記載されているかどうかを判定するためAliasテーブル25を参照する(ステップS13)。
メッセージ処理部26は、コンテンツ要求メッセージに記載されたIDがAlias情報として記載されていないかどうか、又はAlias情報として記載されている場合でも有効期限が現時点で失効しているかどうかを判定する(ステップS14)。
なお、コンテンツ要求メッセージに記載されたIDがAliasテーブル25にAlias情報として記載されている場合は、メッセージ処理部26は、コンテンツ要求メッセージに記載されたIDがAliasIDであると判定することができる。その場合、メッセージ処理部26は、コンテンツ要求メッセージが要求するコンテンツデータに対応するコンテンツIDを、Aliasテーブル25においてそのAliasIDに対応付けられているコンテンツIDを参照することにより取得することができる。
さらにステップS14においてメッセージ処理部26は、クロック23から現在時刻の情報を取得し、現在時刻が有効期限を超過しているか否かを判定することにより、有効期限が現時点で失効しているか否かを判定することができる。
コンテンツ要求メッセージに記載されたIDがAlias情報として記載されていないか、又はAlias情報として記載されている場合でも有効期限が失効している場合に(ステップS14のYes)、メッセージ処理部26は、要求されたコンテンツデータがコンテンツサーバ20内にないことを示す無効メッセージを作成して、ルータを介してユーザ端末に送信(返信)する(ステップS15)。
コンテンツ要求メッセージに記載されたIDがAlias情報として記載されており、その有効期限がない又は現時点でその有効期限が失効していない場合に(ステップS14のNo)、メッセージ処理部26は、そのAlias情報においてAliasIDに対応付けられたIDを参照して、コンテンツ要求メッセージが要求するコンテンツデータに対応するコンテンツIDを取得する。メッセージ処理部26は、取得したコンテンツIDに対応するコンテンツデータがコンテンツデータ記憶部21に記憶されているか否かを、コンテンツIDに基づいてコンテンツ管理テーブル24を参照することにより判定する(ステップS16)。
取得したコンテンツIDに対応するコンテンツデータがコンテンツデータ記憶部21に記憶されている場合(ステップS16のYes)、メッセージ処理部26は、コンテンツ管理テーブル24を参照して、そのコンテンツデータに対応するコンテンツIDに基づいてコンテンツ情報を検索し、そのコンテンツデータの保存領域の情報を取得する。メッセージ処理部26は、保存領域であるコンテンツデータ記憶部21からそのコンテンツデータを取得するとともに、そのコンテンツデータを含む応答メッセージを作成してユーザ端末に送信する(ステップS17)。
ここでメッセージ処理部26は、取得したコンテンツデータに対応するAliasID及びコンテンツIDの情報(Alias情報)を応答メッセージに含めて送信する。またAliasIDとコンテンツIDとの対応付けに有効期限が設定されている場合は、その有効期限の情報も応答メッセージに含めて送信する。
取得したコンテンツIDに対応するコンテンツデータがコンテンツデータ記憶部21に記憶されていない場合(ステップS16のNo)、メッセージ処理部26は、要求されたコンテンツデータがコンテンツサーバ20内にないことを示す無効メッセージを作成して、ルータを介してユーザ端末に送信(返信)する(ステップS18)。
ルータ30は、コンテンツサーバ20とユーザ端末60及び70を接続するルータである。ルータ30は、コンテンツサーバ20からコンテンツデータが送信された場合にそのコンテンツデータをキャッシュし、ユーザ端末側からそのコンテンツデータについてのデータ要求を受信した場合に、キャッシュしたそのコンテンツデータをユーザ端末側に送信する。また、自身がそのコンテンツデータを既に有していない場合には、以前そのコンテンツデータが配信された配信経路にある他のルータに対して、データ要求を転送する。
図8は、ルータ30の構成の一例を示すブロック図である。図8に示すルータは、コンテンツキャッシュ部31、キャッシュ管理テーブル32、ネットワーク(NW)経路テーブル33、クロック34、BCテーブル35、Aliasテーブル36、Alias管理部37およびメッセージ処理部38を備える。ここでコンテンツキャッシュ部31、Aliasテーブル36及びメッセージ処理部38はそれぞれ、実施の形態1にかかるキャッシュ部6、ID格納領域7及び配信部8に対応する。
コンテンツキャッシュ部31は、コンテンツサーバ20が出力したコンテンツデータがメッセージ処理部38によりキャッシュ(格納)されるとともに、メッセージ処理部38からの要求に応じて、キャッシュしたコンテンツデータをメッセージ処理部38に出力する。ここでコンテンツキャッシュ部31には、コンテンツサーバ20から受信したコンテンツデータ及びコンテンツIDが対応付けられてキャッシュされる。
キャッシュ管理テーブル32には、メッセージ処理部38が取得して、コンテンツキャッシュ部31に記憶されたコンテンツデータと、そのコンテンツ情報とを対応付けた管理情報が、メッセージ処理部38により格納される。
図9は、キャッシュ管理テーブル32に格納されたコンテンツ情報のうちのコンテンツIDと、コンテンツデータとが対応付けて格納された管理情報の一例を示す表である。コンテンツキャッシュ部31の領域1に格納されたデータ1にはコンテンツID「A」が対応付けられ、コンテンツキャッシュ部31の領域2に格納されたデータ2にはコンテンツID「B」が対応付けられ、コンテンツキャッシュ部31の領域3に格納されたデータ3にはコンテンツID「C」が対応付けられている。
NW経路テーブル33には、ルータ30と接続されているネットワーク経路情報が格納されている。具体的には、NW経路テーブル33には、ルータ30とコンテンツサーバ20との間の経路にあるルータ等が、少なくとも記載されている。メッセージ処理部38は、そのネットワーク経路情報を適宜参照する。
クロック34は、ルータ30において時刻を測定するクロックであり、Alias管理部37又はメッセージ処理部38は適宜時刻参照を行って現在時刻の情報を取得する。
BCテーブル35は、メッセージ処理部38から出力されたBC情報が格納される。ここでBC情報は、コンテンツデータのコンテンツID、ルータ30にコンテンツデータを送出した上流ノード、ルータ30からコンテンツデータが送出される下流ノード、コンテンツデータのデータ通過時刻及びデータのリクエスト通過時刻により構成されている。メッセージ処理部38は、BCテーブル35内にあるBC情報を適宜参照する。
Aliasテーブル36には、ルータ30に出力されたコンテンツデータに対応するコンテンツIDとAliasIDとの対応付けの情報(Alias情報)及びそのAlias情報の有効期限が格納される。メッセージ処理部38は、Aliasテーブル36内にあるAlias情報を適宜参照する。
図10は、Aliasテーブル36に格納されたAlias情報及びその有効期限の一例を示した表である。図9では、AliasID「X1」に対応付けられてコンテンツID「A」及び有効期限「T1」が、AliasID「X2」に対応付けられてコンテンツID「B」及び有効期限「T2」が、AliasID「X3」に対応付けられてコンテンツID「C」及び有効期限「T3」が、Aliasテーブル36に格納されている。これらの情報がAliasテーブル36に格納される過程については後述する。
なお、前述の通り、1つのAliasIDが複数のコンテンツIDと対応付けられ、各々の対応付けについて有効期限が設定されている場合、Aliasテーブル36ではその複数の対応付けを全て格納する必要がある。ルータ30がAliasIDに基づいてデータを送信するときに、ルータ30はそのうちの任意のデータをひとつ選択して送信しても良い。通常、ルータ30は、Alias情報の有効期限が最も長いデータを最良として選択する。
Alias管理部37は、定期的にクロック34及びAliasテーブル36を参照し、クロック34が示す現在時刻と、Aliasテーブル36に格納されたAlias情報の有効期限とを比較する。そしてAlias管理部37は、Alias情報の有効期限が現在時刻を超過している場合にその有効期限が失効したと判定し、そのAlias情報をAliasテーブル36から削除する。このようにしてAliasテーブル36に含まれるAlias情報は、Alias有効期限が過ぎるとAlias管理部37により削除される。
メッセージ処理部38は、外部からの要求メッセージ及び応答メッセージに応じて以下の処理を実行する。
メッセージ処理部38が、コンテンツデータが含まれるサーバ又は他のルータからの応答メッセージを受信した場合、メッセージ処理部38は、コンテンツキャッシュ部31に応答メッセージにかかるコンテンツデータのキャッシュを作成する。
その後、メッセージ処理部38は、BCテーブル35にBC情報として、応答メッセージに対応する要求メッセージを受信した隣接ノードを次ホップノード(下流ノード)として記録する。また、メッセージ処理部38は、BCテーブル35にBC情報として、応答メッセージに対応する要求メッセージを送信した隣接ノードを前ホップノード(上流ノード)として記録する。さらにメッセージ処理部38は、応答メッセージが通過した時刻(リクエスト通過時刻)もBC情報として記録する。
さらに、応答メッセージにAlias情報が記載されている場合、メッセージ処理部38はAliasテーブル36に、そのAlias情報であるコンテンツデータに対応するAliasID及びコンテンツIDを格納する。また応答メッセージに有効期限が設定されている場合は、その有効期限の情報もAliasテーブル36に格納する。
図11A、図11B及び図11Cは、メッセージ処理部38がユーザ端末側からのコンテンツ要求メッセージに応じて実行する処理の一例を示すフローチャートである。以下、図11A〜図11Cを用いて、メッセージ処理部38が実行する処理を説明する。
メッセージ処理部38は、コンテンツ要求メッセージを受信すると、Aliasテーブル36を参照する(ステップS21)。そして、メッセージ処理部38は、コンテンツ要求メッセージに記載されたIDがAlias情報中にAliasIDとして格納されているか否かを判定する(ステップS22)。つまり、メッセージ処理部38は、コンテンツ要求メッセージに記載されたIDがAliasIDであるか否かを判定する。
コンテンツ要求メッセージに記載されたIDがAliasIDとして格納されている場合、つまりコンテンツ要求メッセージに記載されたIDがAliasIDである場合に(ステップS22のYes)、メッセージ処理部38は、そのAlias情報の有効期限の情報を参照して、その有効期限が失効しているか否かを判定する(ステップS23)。なお、「有効期限が失効している場合」とは、有効期限がクロック34が示す現在時刻を超過している場合であり、「有効期限が失効していない場合」とは、そのAlias情報について有効期限が設定されていないか、又は設定されていても現時刻で有効期限が有効である場合である。
Alias情報について有効期限が設定されており、有効期限が既に失効している場合には(ステップS23のNo)、メッセージ処理部38は、コンテンツサーバ20方向の次ホップノードのアドレスを取得して、次ホップノード(サーバ側)にコンテンツ要求メッセージを転送する(ステップS24)。ルータ30は、コンテンツ要求メッセージにおいて要求されたコンテンツデータについて失効した情報しか有しておらず、これ以上の処理ができないためである。
Alias情報についての有効期限が失効していない場合には、メッセージ処理部38は、コンテンツ要求メッセージに記載されたIDが記載されたAlias情報におけるコンテンツIDを、実要求IDに設定する(ステップS25)。ここで実要求IDとは、コンテンツ要求メッセージにおいて要求されたコンテンツデータのコンテンツIDのことをいう。
ステップS22に戻り、コンテンツ要求メッセージに記載されたIDがAlias情報として格納されていない場合、つまりコンテンツ要求メッセージに記載されたIDがAliasIDでないと考えられる場合もしくはAliasIDであるかが判別できない場合に(ステップS22のNo)、メッセージ処理部38は、コンテンツ要求メッセージに記載されたIDを実要求IDに設定する(ステップS26)。ルータ30は、コンテンツ要求メッセージにおいて要求されたコンテンツデータについてAlias情報を有していないため、コンテンツ要求メッセージに記載されたIDに基づいてコンテンツのキャッシュを検索するしかないからである。
ステップS25又はS26の後、メッセージ処理部38は、実要求IDをコンテンツIDとして有するコンテンツデータがコンテンツキャッシュ部31に格納されているか否かを、キャッシュ管理テーブル32を参照することにより判定する(ステップS27)。キャッシュ管理テーブル32にコンテンツ要求メッセージに含まれた要求コンテンツIDが格納されていれば、そのIDがコンテンツIDであるコンテンツデータがコンテンツキャッシュ部31に格納されていると、メッセージ処理部38は判定する。
実要求IDをコンテンツIDとして有するコンテンツデータがコンテンツキャッシュ部31に格納されている場合(ステップS27のYes)、メッセージ処理部38は、コンテンツキャッシュ部31からそのコンテンツデータを取得するとともに、そのコンテンツデータを含む応答メッセージを作成する。メッセージ処理部38はNW経路テーブル33を参照して、要求ノード方向(コンテンツ要求メッセージを出力したユーザ端末の方向)への次ホップノードのアドレス情報を取得する。そしてメッセージ処理部38は、要求ノード方向への次ホップノードに(即ちユーザ端末側に)対して、要求されたコンテンツデータを含む応答メッセージを送信する(ステップS28)。
さらにメッセージ処理部38は、BCテーブル35を参照し、そのコンテンツIDが記録されたBC情報を検索する。ルータ30は、過去にコンテンツ要求メッセージで要求されたコンテンツデータが通過しており、通過時にそのコンテンツデータのコンテンツIDが記載されたBC情報を記録している。BC情報は、コンテンツデータのコンテンツID、ルータ30にコンテンツデータを送出した上流ノード、ルータ30からコンテンツデータが送出される下流ノード、コンテンツデータのデータ通過時刻及びコンテンツデータのリクエスト通過時刻により構成されている。
メッセージ処理部38は、そのBC情報をヒットしたときに、そのBC情報に記録された下流ノードを上述の要求ノード方向への次ホップノードに更新し、上流ノードを「null」に更新する。さらにメッセージ処理部38は、リクエスト通過時刻をコンテンツ要求メッセージを受信したときの時刻に、データ通過時刻を応答メッセージを送信したときの時刻に更新する(ステップS29)。メッセージ処理部38は以上で実行する処理を終了する。
実要求IDをコンテンツIDとして有するコンテンツデータがコンテンツキャッシュ部31に格納されていない場合(ステップS27のNo)、メッセージ処理部38はBCテーブル35を参照する(ステップS30)。そしてメッセージ処理部38は、BCテーブル35を検索して、上述の実要求IDについてのBC情報(BCエントリ)があるか否かを判定する(ステップS31)。ここで「実要求IDについてのBC情報」とは、実要求IDがBC情報として含まれているBC情報である。
実要求IDについてのBC情報が存在しない場合(ステップS31のNo)、メッセージ処理部38は、NW経路テーブル33を参照して、コンテンツサーバ20方向の次ホップノードのアドレス情報を取得する。メッセージ処理部38は、その次ホップノードへと要求メッセージを転送する(ステップS32)。ルータ30は、コンテンツ要求メッセージにおいて要求されたコンテンツデータについて、これ以上の処理ができないためである。
実要求IDについてのBC情報が存在する場合(ステップS31のYes)、メッセージ処理部38は、BC情報に下流ノードが記載されているか否かを判定する(ステップS33)。後述の通り、ルータ30がコンテンツデータを配信する場合において、下流ノードがルータであれば、メッセージ処理部38はBC情報の下流ノードに当該ルータのIPアドレスを記載するが、ユーザ端末であれば「null」を記載する。
BC情報に下流ノードが記載されていなければ(ステップS33のNo)、メッセージ処理部38は、これ以上BC情報に沿ったコンテンツ要求メッセージの転送ができない(キャッシュミス)と判定する。そして、メッセージ処理部38はコンテンツ要求メッセージをBC情報の上流ノードに記載されたルータへと転送するとともに、BCテーブル35からそのBC情報を削除する(ステップS34)。
BC情報に下流ノードが記載されていれば(ステップS33のYes)、メッセージ処理部38は、要求メッセージ記載のIDがAliasIDであるか否かを判定する(ステップS35)。ここでメッセージ処理部38は、ステップS22においてコンテンツ要求メッセージに記載されたIDがAliasIDとして格納されている場合に、コンテンツ要求メッセージに記載されたIDがAliasIDであると判定する。メッセージ処理部38は、ステップS22においてコンテンツ要求メッセージに記載されたIDがAlias情報として格納されていない場合に、コンテンツ要求メッセージに記載されたIDがAliasIDではないと判定する。
要求メッセージ記載のIDがAliasIDでないと判定した場合には(ステップS35のNo)、メッセージ処理部38は、受信したコンテンツ要求メッセージの内容をそのままに、BC情報において示された下流ノードへ転送する(ステップS36)。
要求メッセージ記載のIDがAliasIDであると判定した場合には(ステップS35のYes)、メッセージ処理部38は、受信したコンテンツ要求メッセージの内容に実要求ID(即ち要求されたコンテンツデータに対応するコンテンツID)を加えて、BC情報において示された下流ノードへそのコンテンツ要求メッセージを転送する(ステップS37)。
ステップS36又はS37の後、メッセージ処理部38は、実要求IDについてのBC情報に記録されたリクエスト通過時刻を、コンテンツ要求メッセージを転送したときの時刻に更新する(ステップS38)。メッセージ処理部38は以上で実行する処理を終了する。
ルータ40、50も、ルータ30と同様の構成を有する。つまり、コンテンツキャッシュ部31、キャッシュ管理テーブル32、NW経路テーブル33、クロック34、BCテーブル35、Aliasテーブル36、Alias管理部37、メッセージ処理部38に対応する要素として、ルータ40は、コンテンツキャッシュ部41、キャッシュ管理テーブル42、NW経路テーブル43、クロック44、BCテーブル45、Aliasテーブル46、Alias管理部47、メッセージ処理部48を有する。同様にルータ50は、コンテンツキャッシュ部51、キャッシュ管理テーブル52、NW経路テーブル53、クロック54、BCテーブル55、Aliasテーブル56、Alias管理部57、メッセージ処理部58を有する。ルータ40、50の各部が実行する処理についてもルータ30と同様である。
なお、様々な処理を行う機能ブロックとして図6に記載されたコンテンツサーバ20の各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。これはルータ30〜50についても同様である。
マッピングサーバ80は、データ配信システム10において保持されているコンテンツに対応するAliasID及びそのコンテンツのオリジナルデータを保持するコンテンツサーバのIPアドレスが対応付けて記録されている。
以下、図12A〜図12Cを用いて、実施の形態2にかかるデータ配信システム10の処理について説明する。図12A〜図12Cは、データ配信システム10の動作シーケンスの一例を示す図である。ここで図12Aは、ユーザ端末60がコンテンツサーバ20のアドレスを取得するまでの過程を示した図である。図12Bは、ルータ30がコンテンツデータをキャッシュするまでの過程を示した図である。図12Cは、ルータ30がキャッシュしたコンテンツデータをユーザ端末70に配信するまでの過程を示した図である。図12A、図12B及び図12Cにおいて、ユーザ端末60又は70からのメッセージ送信は実線の矢印で示されており、コンテンツサーバ20又はルータ30、40又は50からのユーザ端末60又は70へのデータ送信は点線の矢印で示されている。以下、具体的なデータ配信システム10の動作について説明する。
まず、ユーザ端末60が最新のセンサ情報(コンテンツデータ)を取得するためにコンテンツサーバ20のIPアドレスを取得するまでの過程について説明する(図12A)。ここで、コンテンツサーバ20のデータ生成部22は予め「X.20120428124520」というコンテンツIDに対応するコンテンツデータを生成する。またAliasテーブル25には、AliasID、コンテンツID及びそれらの対応付けの有効期限として以下の情報が登録される。
[Aliasテーブル25−1]
・Alias ID = X.latest
・Contents ID = X.20120428124520
・有効期限 = 2012 4/28 12:45:30
(1)まず、ユーザ端末60は、マッピングサーバ80側にあるルータ(ルータ40、又は第2のルータ)に、最新のセンサ情報(最新のコンテンツデータ)を示すAliasID「X.latest」に対応するコンテンツデータがあるサーバロケーション情報(IPアドレスなどネットワーク上の位置を示す情報)を問い合わせる情報要求メッセージを送信する。ここで情報要求メッセージには、AliasID「X.latest」の情報が含まれている。ルータ40は、その情報要求メッセージを受信する。またユーザ端末60はマッピングサーバ80のIPアドレスを予め取得しており、情報要求メッセージには宛先情報としてそのIPアドレスの情報が含まれている。
(2)ユーザ端末60からの情報要求メッセージを受信したルータ40は、その情報要求メッセージをマッピングサーバ80方向にあるルータ30(第1のルータ、第4のルータ)に転送し、ルータ30はそれを受信する。なおルータ40は、情報要求メッセージに含まれるマッピングサーバ80のIPアドレス(宛先情報)に基づいて、ルータ30へのメッセージ転送を実行する。以下の説明において、ルータは同様の転送処理を実行する。
(3)ルータ40からの情報要求メッセージを受信したルータ30は、その情報要求メッセージを宛先情報に基づいてマッピングサーバ80に転送し、マッピングサーバ80はそれを受信する。
(4)情報要求メッセージを受信したマッピングサーバ80は、情報要求メッセージに含まれるAliasIDに基づいて、そのAliasIDに対応するコンテンツデータが保存されているコンテンツサーバ20のIPアドレス等の情報を検索する。マッピングサーバ80は、その検索したIPアドレスの情報を含むサーバロケーション情報をユーザ端末60方向のルータ(ルータ30)に送信する。ルータ30は、そのサーバロケーション情報を受信する。ここでサーバロケーション情報には、ユーザ端末60のIPアドレス(宛先情報)が付加されている。
(5)マッピングサーバ80からのサーバロケーション情報を受信したルータ30は、宛先情報に基づいてそのサーバロケーション情報をユーザ端末60方向のルータ40に転送し、ルータ40はそれを受信する。
(6)ルータ30からのサーバロケーション情報を受信したルータ40は、そのサーバロケーション情報を宛先情報に基づいてユーザ端末60に転送し、ユーザ端末60はそれを受信する。このようにして、ユーザ端末60は最新のコンテンツデータがあるサーバロケーション情報を取得することができる。
次に、ルータ30がコンテンツデータをキャッシュするまでの過程について説明する(図12B)。
(7)ユーザ端末60は、マッピングサーバ80から取得したサーバロケーション情報に基づいて、以下の情報を含めたコンテンツ要求メッセージを作成し、コンテンツサーバ20方向にあるルータ40に送信する。ルータ40はそのコンテンツ要求メッセージ60を受信する。
[コンテンツ要求メッセージ60]
・要求コンテンツID = X.latest
・サーバロケーション情報 = コンテンツサーバ20のIPアドレス
ここで要求コンテンツIDはAliasIDである。またコンテンツ要求メッセージ60には宛先情報としてコンテンツサーバ20のIPアドレスの情報が含まれている。ユーザ端末60は、このようにしてAliasIDを用いてデータ要求を行う。
(8)ルータ40のメッセージ処理部48は、コンテンツ要求メッセージ60を受信すると、Aliasテーブル46を参照して(図11AのステップS21)、要求コンテンツID「X.latest」がAlias情報として格納されているか否かを判定する(図11AのステップS22)。要求コンテンツID「X.latest」はAlias情報として格納されていないため、メッセージ処理部48は、要求コンテンツID「X.latest」を実要求IDとして設定する(図11AのステップS26)。そしてメッセージ処理部48は、その実要求IDをコンテンツIDとするデータのキャッシュがコンテンツキャッシュ部41にあるか否かを、キャッシュ管理テーブル42を参照することにより判定する(図11BのステップS27)。
コンテンツキャッシュ部41はそのようなデータのキャッシュを格納していないため、メッセージ処理部48は次にBCテーブル45を参照し(図11BのステップS30)、実要求IDについてのBC情報が格納されているか否かを判定する(図11BのステップS31)。BCテーブル45にはそのようなBC情報が格納されていないため、メッセージ処理部48は、宛先情報に基づきNW経路テーブル43を参照して、コンテンツサーバ20方向の次ホップノードのIPアドレス(即ちルータ30のアドレス情報)を取得する。メッセージ処理部38は、ルータ30へとコンテンツ要求メッセージ60を転送する(図11BのステップS32)。ルータ30はそのコンテンツ要求メッセージ60を受信する。
(9)コンテンツ要求メッセージ60を受信したルータ30は、ルータ40と同様の判定処理を実行した後、宛先情報に基づいて、コンテンツ要求メッセージ60をコンテンツサーバ20へ転送する。コンテンツサーバ20はそのコンテンツ要求メッセージ60を受信する。
ここで(8)、(9)においてルータ40、30は、コンテンツ要求メッセージ60の内容とともに、コンテンツ要求メッセージ60が通過した時刻、即ちリクエストが通過した時刻を図示しないメモリに記録する。ここでリクエストが通過した時刻は、ルータ40、30のクロックにおいて「2012/4/28 12:45:20」であり、ルータ40、30はその時刻も併せて記録する。
(10)コンテンツサーバ20は、クロック23で測定した時刻が「2012 4/28 12:45:20」のときに、ユーザ端末60からのコンテンツ要求メッセージ60を受信する。またコンテンツサーバ20は同時刻「2012 4/28 12:45:20」に、最新のセンサ情報(コンテンツデータ)を取得する。
メッセージ処理部26は、コンテンツ要求メッセージ60を受信すると、コンテンツ要求メッセージ60に含まれた要求コンテンツID「X.latest」がコンテンツデータ記憶部21に記憶されているか否かを、コンテンツ管理テーブル24を参照することにより判定する(図7のステップS11)。要求コンテンツIDはAliasIDであり、コンテンツデータ記憶部21には記憶されていないため、メッセージ処理部26は、要求コンテンツIDがAlias情報として記載されているかどうかを判定するためAliasテーブル25を参照する(図7のステップS13)。そしてメッセージ処理部26は、要求コンテンツIDがAlias情報として記載されていないかどうか、又はAlias情報として記載されている場合でも有効期限が現時点で失効しているかどうかを判定する(図7のステップS14)。
Aliasテーブル25には、Aliasテーブル25−1に示した通り、AliasIDとコンテンツIDとの対応が記録され、データ生成部22において新しいコンテンツデータが生成される度に更新されている。上述のAliasテーブル25−1の通り、AliasID「X.latest」は、コンテンツID「X. 20120428124520」に対応づけられている。従って、メッセージ処理部26は、要求コンテンツIDがAliasIDであると判定する。さらに、有効期限は「2012 4/28 12:45:30」であり、クロック23における現在の時刻「2012 4/28 12:45:20」において失効していない。
メッセージ処理部26は、AliasID「X.latest」に対応付けられたコンテンツID「X. 20120428124520」を、コンテンツ要求メッセージ60が要求するコンテンツデータに対応するコンテンツIDとして取得する。メッセージ処理部26は、取得したコンテンツID「X. 20120428124520」に対応するコンテンツデータがコンテンツデータ記憶部21に記憶されているか否かを、コンテンツID「X. 20120428124520」に基づいてコンテンツ管理テーブル24を参照することにより判定する(図7のステップS16)。
上述の通り、コンテンツID「X. 20120428124520」に対応するコンテンツデータがコンテンツデータ記憶部21に記憶されているので、メッセージ処理部26は、コンテンツ管理テーブル24を参照して、そのコンテンツデータに対応するコンテンツIDに基づいてコンテンツ情報を検索し、そのコンテンツデータの保存領域の情報を取得する。メッセージ処理部26は、保存領域であるコンテンツデータ記憶部21からそのコンテンツデータを取得するとともに、そのコンテンツデータを含むコンテンツ応答メッセージを作成してユーザ端末60方向のルータ30に送信する(図7のステップS17)。なおコンテンツ応答メッセージの内容は次の通りである。
[コンテンツ応答メッセージ20]
・コンテンツID = X. 20120428124520
・Alias ID = X.latest
・Alias 有効時間 = 10秒
・コンテンツデータ
また、AliasIDとコンテンツIDとの対応付けには有効期限「2012 4/28 12:45:30」が設定されている。そのため、メッセージ処理部26は、現在時刻「2012 4/28 12:45:20」とその有効期限との時間差(10秒)の情報を、対応付けの有効時間(Alias有効時間)として応答メッセージに含めて送信する。
このようにしてコンテンツサーバ20は、データ要求を受信した時点で、データ要求に含まれるAliasIDに最もマッチするコンテンツデータを返す。また、メッセージ処理部26は、取得したコンテンツデータに対応するAliasID及びコンテンツIDの情報(Alias情報)を応答メッセージに含めて送信する。さらにメッセージ処理部26は、コンテンツデータを配信するときに、併せてAlias有効時間を配信する。ここで、Alias有効時間は、クロック23が示す現在の時刻において、AliasIDとコンテンツIDとの対応付けが有効である時間である。現在の時刻が「2012 4/28 12:45:20」であり、Aliasテーブル25−1で示される有効期限が「2012 4/28 12:45:30」であるため、メッセージ処理部26は、Alias有効時間をそれらの差分の10秒と計算する。
またコンテンツ応答メッセージ20には宛先情報としてユーザ端末60のIPアドレスの情報が含まれている。ルータ30はそのコンテンツ応答メッセージ20を受信する。
(11)ルータ30のメッセージ処理部38は、送信されたコンテンツ応答メッセージ20を、宛先情報に基づいてユーザ端末60方向の自ノードであるルータ40へと転送する。ルータ40はそのコンテンツ応答メッセージ20を受信する。ここで、ルータ30は応答メッセージを受信してからルータ40に転送するまでの時間を計測し、メッセージの転送にかかった時間を応答メッセージに記載されたAlias有効時間から差し引いたものを、新たな応答メッセージのAlias有効時間に設定して、その応答メッセージを転送してもよい。
またメッセージ処理部38は、送信されたコンテンツ応答メッセージ20に記載されたコンテンツIDと、以前に通過したコンテンツ要求メッセージ60に記載されたコンテンツIDとを、メモリを参照することにより比較する。両者は「X.latest」で同一であるため、送信されたコンテンツ応答メッセージ20は、以前に通過したコンテンツ要求メッセージ60に対応するものであるとメッセージ処理部38は判定する。以上の判定に基づいて、メッセージ処理部38は下記のBC情報をBCテーブル35に作成する。
[BC情報35−1]
・コンテンツID = X. 20120428124520
・上流ノード = 20(コンテンツサーバ20のIPアドレス)
・下流ノード = 40(ルータ40のIPアドレス)
・データ通過時刻 = 2012/4/28 12:45:21
・リクエスト通過時刻 = 2012/4/28 12:45:20
ここで上流ノードはコンテンツ及びコンテンツ応答メッセージ20が流れてきたノードであり、下流ノードはコンテンツ及びコンテンツ応答メッセージ20がルータ30から流れるノードである。メッセージ処理部38はメッセージヘッダに格納された情報から上流ノード及び下流ノードのIPアドレスを参照し、そのIPアドレスをBC情報35−1として記録する。なおメッセージ処理部38は、前述の通り、コンテンツ応答メッセージ20に対応するコンテンツ要求メッセージ60を受信した隣接ノードを次ホップノード(下流ノード)として記録している。またメッセージ処理部38は、コンテンツ要求メッセージ60を送信した隣接ノードを前ホップノード(上流ノード)として記録する。
つまり、BC情報35−1には、コンテンツサーバ20からコンテンツデータが送信されるときの、コンテンツデータの配信経路上にあるルータが記録される。以下のBC情報においても同様の情報が記録される。
またBC情報35−1のデータ通過時刻はコンテンツ及びコンテンツ応答メッセージ20がコンテンツサーバ20から流れてきたときのクロック34が示す時刻であり、リクエスト通過時刻は、コンテンツ応答メッセージ20に対応するコンテンツ要求メッセージ60が通過したときのクロック34が示す時刻である。メッセージ処理部38はクロック34を参照することによりこれらの時刻情報を取得する。
さらに、メッセージ処理部38は、Aliasテーブル36に、コンテンツ応答メッセージ20におけるAliasID及びコンテンツIDを記載した下記情報を登録する。
[Alias情報36−1]
・Alias ID = X.latest
・Alias 有効期限 = 2012/4/28 12:45:31
・BCコンテンツID = X.20120428124520
ここでAlias有効期限には、コンテンツ応答メッセージ20を受信したときのクロック34の時刻に、コンテンツ応答メッセージ20に含まれるAlias有効時間を足したものを設定する。換言すれば、メッセージ処理部38は、コンテンツサーバ20から配信された対応付けの有効時間及びコンテンツサーバ20からそのコンテンツデータが配信された時刻に基づいて、対応付けの有効期限を算出する。そして、メッセージ処理部38は、Aliasテーブル36において、コンテンツデータのエイリアスID、コンテンツID及び有効期限を対応付けて格納する。
また、メッセージ処理部38は、コンテンツデータのキャッシュをコンテンツキャッシュ部31に格納する。
(12)ルータ40は、ルータ30からコンテンツ応答メッセージ20を受信する。ルータ40のメッセージ処理部48はルータ30のメッセージ処理部38と同様の処理を実行することにより、下記のBC情報をBCテーブル45に作成する。
[BC情報45−1]
・コンテンツID = X. 20120428124520
・上流ノード = 30(ルータ30のIPアドレス)
・下流ノード = null
・データ通過時刻 = 2012/4/28 12:45:21
・リクエスト通過時刻 = 2012/4/28 12:45:20
ここでBC情報45−1におけるデータ通過時刻及びリクエスト通過時刻は、ルータ40内のクロック44が示す時刻である。また、下流ノードはユーザ端末60であるため、メッセージ処理部48は下流ノードに「null」を記載する。メッセージ処理部48はメッセージヘッダに格納された情報から上流ノード及び下流ノードのIPアドレスを参照し、そのIPアドレスをBC情報45−1として記録する。メッセージ処理部48は、メッセージ処理部38と同様、コンテンツ応答メッセージ20に対応するコンテンツ要求メッセージ60を受信した隣接ノードを下流ノードとして記録し、コンテンツ要求メッセージ60を送信した隣接ノードを上流ノードとして記録している。
なおルータ30、40は、BC情報として、当該ルータの直前にコンテンツデータが配信されたルータのアドレス又は当該ルータの次にコンテンツデータが配信されるルータのアドレスを記録している。
さらに、メッセージ処理部48は、Aliasテーブル46に、コンテンツ応答メッセージ20におけるAliasID及びコンテンツIDを記載した下記情報を登録する。ここでAlias有効期限には、コンテンツ応答メッセージ20を受信したときのクロック44の時刻に、コンテンツ応答メッセージ20に含まれるAlias有効時間を足したものを設定する。この設定方法は上述と同様である。
[Alias情報46−1]
・Alias ID = X.latest
・Alias 有効期限 = 2012/4/28 12:45:31
・BCコンテンツID = X.20120428124520
メッセージ処理部48は、コンテンツデータのキャッシュをコンテンツキャッシュ部41に格納する(キャッシュしたコンテンツデータを、図12B、図12Cではコンテンツキャッシュとして示している。)。
さらにメッセージ処理部48は、キャッシュ管理テーブル42に、コンテンツデータのキャッシュと、そのコンテンツデータのコンテンツID「X.20120428124520」の情報を少なくとも含むコンテンツ情報とを対応付けた管理情報を格納する。
以上の処理を実行して、ルータ40は、コンテンツデータが含まれたコンテンツ応答メッセージ20をユーザ端末60に送信する。このようにして、ユーザ端末60はコンテンツ要求メッセージで要求したコンテンツデータを取得することができる。
次に、ルータ40がキャッシュしたコンテンツデータをユーザ端末70に配信するまでの過程について説明する(図12C)。なお、ルータ30において、コンテンツサーバ20から配信されてコンテンツキャッシュ部31がキャッシュしたデータは、他の記載しない別ユーザが取得したコンテンツに置き換えられたため、コンテンツキャッシュ部31はそのキャッシュを格納していないとする。コンテンツデータが置き換えられた時点で、キャッシュ管理テーブル32も更新される。それにより、メッセージ処理部38が更新後のキャッシュ管理テーブル32を参照しても、以前配信されたコンテンツデータが格納されていないと判定される。
(13)ここではユーザ端末70が、AliasID「X.latest」を有するコンテンツデータを要求する場合を想定する。ユーザ端末70は、図12Aで示した処理と同様にして、マッピングサーバ80から「X.latest」を生成するコンテンツサーバ20のIPアドレスを取得する。ユーザ端末70は、以下のコンテンツ要求メッセージを作成し、コンテンツサーバ20方向にあるルータ50(第3のルータ)に送信する。
[コンテンツ要求メッセージ70]
・要求コンテンツID = X.latest
・サーバロケーション情報 = コンテンツサーバ20のIPアドレス
ここで要求コンテンツIDはAliasIDである。またコンテンツ要求メッセージ70には宛先情報としてコンテンツサーバ20のIPアドレスの情報が含まれている。ルータ50は、ユーザ端末60からコンテンツ要求メッセージ60を受信する。
(14)ルータ50のメッセージ処理部58は、コンテンツ要求メッセージ70を受信すると、Aliasテーブル56を参照して(図11AのステップS21)、要求コンテンツID「X.latest」がAlias情報として格納されているか否かを判定する(図11AのステップS22)。要求コンテンツID「X.latest」はAlias情報として格納されていないため、メッセージ処理部58は、要求コンテンツID「X.latest」を実要求IDとして設定する(図11AのステップS26)。そしてメッセージ処理部58は、その実要求IDをコンテンツIDとするデータのキャッシュがコンテンツキャッシュ部51にあるか否かを、キャッシュ管理テーブル52を参照することにより判定する(図11BのステップS27)。
コンテンツキャッシュ部51はそのようなデータのキャッシュを格納していないため、メッセージ処理部58は次にBCテーブル55を参照し(図11BのステップS30)、実要求IDについてのBC情報が格納されているか否かを判定する(図11BのステップS31)。BCテーブル55にはそのようなBC情報が格納されていないため、メッセージ処理部58は、宛先情報に基づきNW経路テーブル53を参照して、コンテンツサーバ20方向の次ホップノードのIPアドレス(即ちルータ30のアドレス情報)を取得する。メッセージ処理部58は、ルータ30へとコンテンツ要求メッセージ70を転送する(図11BのステップS32)。ルータ30はそのコンテンツ要求メッセージ70を受信する。
なおルータ50は、コンテンツ要求メッセージ70が通過した時刻、即ちリクエストが通過した時刻を、コンテンツ要求メッセージ70の要求コンテンツIDと関連付けて、図示しない内部メモリに記録する。ここでリクエストが通過したときにルータ50のクロック54が示す時刻は「2012/4/28 12:45:25」であるため、ルータ50はその時刻を記録する。
(15)ルータ30のメッセージ処理部38は、コンテンツ要求メッセージ70を受信すると、Aliasテーブル36を参照して(図11AのステップS21)、要求コンテンツID「X.latest」がAlias情報として格納されているか否かを判定する(図11AのステップS21)。このとき、Aliasテーブル36には、該当するAliasID「X.latest」についてのAlias情報36−1が格納されている。従って、次にメッセージ処理部38は、Alias情報36−1に記載されたAlias有効期限が失効しているか否かを判定する(図11AのステップS23)。
ルータ30がコンテンツ要求メッセージ60を受信したときにクロック34が示す時刻は「2012/4/28 12:45:25」であり、Alias情報36−1に記載されたAlias有効期限は「2012/4/28 12:45:31」であって、有効期限は失効していない。従って、メッセージ処理部38は、Alias情報36−1において要求コンテンツID「X.latest」と対応するコンテンツID「X.20120428124520」を実要求IDに設定する(図11AのステップS25)。メッセージ処理部38は、その実要求IDをコンテンツIDとするデータのキャッシュがコンテンツキャッシュ部31にあるか否かを、キャッシュ管理テーブル32を参照することにより判定する(図11BのステップS27)。
上述の通り、コンテンツID「X.20120428124520」のコンテンツデータは既にコンテンツキャッシュ部31にキャッシュされていない。従ってメッセージ処理部38は、BCテーブルを検索し、実要求IDについてのBC情報(BCエントリ)があるか否かを判定する(図11BのステップS30、S31)。上述の通り実要求ID「X.20120428124520」についてのBC情報35−1が存在し、BC情報35−1に設定されたIDと実要求IDとがマッチする。そのためメッセージ処理部38は、BC情報35−1に下流ノードが記載されているか否かを判定する(図11CのステップS33)。
BC情報35−1には下流ノードとしてルータ40のIPアドレスが記載されている。メッセージ処理部38はコンテンツ要求メッセージ60記載の要求コンテンツIDがAliasIDであるか否かを判定する(図11CのステップS35)。コンテンツ要求メッセージ60記載の要求コンテンツIDはAliasIDであるため、メッセージ処理部38は取得した要求メッセージにおいて、要求コンテンツIDをヒットしたBC情報に記載されたコンテンツIDに置き換える(実要求IDをコンテンツ要求メッセージに含める)とともに、さらにAliasIDを要求メッセージに含める(図11CのステップS37)。
従って、メッセージ処理部38はコンテンツ要求メッセージ70を、次のコンテンツ要求メッセージ30に置き換える。
[コンテンツ要求メッセージ30]
・要求コンテンツID = X. 20120428124520
・サーバロケーション情報 = コンテンツサーバ20のIPアドレス
・Alias ID = X.latest
その後、メッセージ処理部38はコンテンツ要求メッセージ30を、BC情報35−1に下流ノード方向として記載されたルータ40へ転送する(図11CのステップS36)。このようにして、ルータ30は、コンテンツ要求メッセージ30を、その要求するデータをキャッシュするルータ40に誘導する。ルータ40は、このコンテンツ要求メッセージ30を受信する。
さらにメッセージ処理部38は、実要求IDについてのBC情報35−1に記録されたリクエスト通過時刻を、コンテンツ要求メッセージ30を送信したときの時刻に更新する(図11CのステップS38)。ここでリクエストが通過したときのクロック34が示す時刻は「2012/4/28 12:45:25」であるため、メッセージ処理部38はその時刻を記録する。
(15)ルータ40のメッセージ処理部48は、コンテンツ要求メッセージ70を受信すると、Aliasテーブル46を参照して(図11AのステップS21)、要求コンテンツID「X. 20120428124520」がAlias情報として格納されているか否かを判定する(図11AのステップS22)。このとき、Aliasテーブル46には、該当するAliasID「X. 20120428124520」についてのAlias情報46−1が格納されている。従って、次にメッセージ処理部48は、Alias情報46−1に記載されたAlias有効期限が失効しているか否かを判定する(図11AのステップS23)。
ルータ40がコンテンツ要求メッセージ70を受信したときにクロック44が示す時刻は「2012/4/28 12:45:25」であり、Alias情報46−1に記載されたAlias有効期限は「2012/4/28 12:45:31」であって、有効期限は失効していない。従って、メッセージ処理部48は、Alias情報46−1において要求コンテンツID「X.latest」と対応するコンテンツID「X.20120428124520」を実要求IDに設定する(図11AのステップS25)。メッセージ処理部48は、その実要求IDをコンテンツIDとするデータのキャッシュがコンテンツキャッシュ部41にあるか否かを、キャッシュ管理テーブル42を参照することにより判定する(図11BのステップS27)。
上述の通り、コンテンツID「X.20120428124520」のコンテンツデータはコンテンツキャッシュ部41にキャッシュされている。従って、メッセージ処理部48は、コンテンツキャッシュ部41からそのコンテンツデータを取得するとともに、そのコンテンツデータを含む応答メッセージを作成する。メッセージ処理部48はNW経路テーブル43を参照して、要求ノード方向への次ホップノード(ルータ30)のアドレス情報を取得する。そしてメッセージ処理部48は、要求ノード方向への次ホップノードに対して、要求されたコンテンツデータを含むコンテンツ応答メッセージ40を送信する(図11BのステップS28)。ルータ30はこのコンテンツ応答メッセージ40を受信する。コンテンツ応答メッセージ40の内容は次の通りである。
[コンテンツ応答メッセージ40]
・コンテンツID = X. 20120428124520
・Alias ID = X.latest
・Alias 有効時間 = 5秒
・コンテンツデータ
ここで、メッセージ処理部48は、コンテンツ応答メッセージ40に記載するAlias有効時間を、クロック44が応答メッセージを送信するときに示す時刻(2012/4/28 12:45:26)と、Alias有効時刻(2012/4/28 12:45:31)の差(ここでは5秒)として設定する。なお、ルータ40は応答メッセージを受信してから転送するまでの時間を計測し、応答メッセージを送信したときにクロック44が示す時刻にメッセージの転送にかかった時間を加算したものを、クロック44が応答メッセージを送信するときに示す時刻としてもよい。
さらにメッセージ処理部48は、BCテーブル45を参照し、コンテンツID「X.20120428124520」が記録されたBC情報を検索する。BCテーブル45は、BC情報45−1を有している。
メッセージ処理部48は、そのBC情報45−1をヒットしたときに、BC情報45−1に記録された下流ノード「null」を上述の要求ノード方向への次ホップノード「30」に更新する。さらにリクエスト通過時刻を、コンテンツ要求メッセージ70を受信したときにクロック44が示す時刻「2012/4/28 12:45:25」に更新するとともに、データ通過時刻を、応答メッセージを送信するときにクロック44が示す時刻「2012/4/28 12:45:26」に更新する(ステップS29)。また、ルータ40から初めてコンテンツデータが出力されることになるので、BC情報45−1に記録された上流ノードを「null」に更新する。このようにして更新したBC情報45−2の内容は次の通りである。
[BC情報45−2]
・コンテンツID = X. 20120428124520
・上流ノード = null
・下流ノード = 30
・データ通過時刻 = 2012/4/28 12:45:26
・リクエスト通過時刻 = 2012/4/28 12:45:25
(17)
ルータ30のメッセージ処理部38は、コンテンツ応答メッセージ40を受信すると、コンテンツ応答メッセージ40に応じてBCテーブル35に格納されたBC情報35−1を以下のように更新する。
[BC情報35−2]
・コンテンツID = X. 20120428124520
・上流ノード = 40(ルータ40のIPアドレス)
・下流ノード = 50(ルータ50のIPアドレス)
・データ通過時刻 = 2012/4/28 12:45:26
・リクエスト通過時刻 = 2012/4/28 12:45:25
ここで、上流ノードはコンテンツ応答メッセージ40を出力したルータ40に、下流ノードはコンテンツ応答メッセージ40が出力されるルータ50に更新される。さらに、メッセージ処理部38は、内部メモリに記録した情報に基づいて、コンテンツ応答メッセージ40に含まれるコンテンツID及びAliasIDと、以前通過したコンテンツ要求メッセージ30に含まれるコンテンツID及びAliasIDとが同じであることを判定する。
それに基づいて、メッセージ処理部38は、コンテンツ応答メッセージ40に対するリクエストがコンテンツ要求メッセージ30であると判定し、コンテンツ要求メッセージ30が通過したときにクロック44が示す時刻「2012/4/28 12:45:25」を、リクエスト通過時刻としてBC情報35−2に記録する。なお、データ通過時刻としては、コンテンツ応答メッセージ40をルータ40が受信したときにクロック44が示す時刻「2012/4/28 12:45:26」が記載される。
なおメッセージ処理部38は、コンテンツ応答メッセージ40に対応するコンテンツ要求メッセージ30を受信した隣接ノードを下流ノードとして記録し、コンテンツ要求メッセージ30を送信した隣接ノードを上流ノードとして記録している。
さらに、メッセージ処理部38は、コンテンツ応答メッセージ40に応じてAliasテーブル36にAliasID、BCコンテンツID及びAlias有効期限を含むAlias情報を登録する。
[Alias情報36−2]
・Alias ID = X.latest
・Alias 有効期限 = 2012/4/28 12:45:31
・BCコンテンツID = X.20120428124520
ここでAlias有効期限は、コンテンツ応答メッセージ40をルータ40が受信したときにクロック44が示す時刻「2012/4/28 12:45:26」に、コンテンツ応答メッセージ40に記載されたAlias有効時間(5秒)を加算したものである。このようにしてメッセージ処理部38は、Alias有効期限を再設定する。
ここで、ルータ30は応答メッセージを受信してからルータ50に転送するまでの時間を計測し、メッセージの転送にかかった時間を応答メッセージに記載されたAlias有効時間から差し引いたものを、新たな応答メッセージのAlias有効時間に設定して、その応答メッセージをルータ50に転送してもよい。
また、メッセージ処理部38は、コンテンツデータを含むコンテンツ応答メッセージ40をユーザ端末70方向の次ホップであるルータ50へと転送する。ルータ50はそのコンテンツ応答メッセージ40を受信する。
(18)ルータ50のメッセージ処理部58は、ルータ30からコンテンツ応答メッセージ40を受信すると以下のBC情報を作成する。
[BC情報55−1]
・コンテンツID = X. 20120428124520
・上流ノード = 30(ルータ30のIPアドレス)
・下流ノード = 70(ルータ70のIPアドレス)
・データ通過時刻 = 2012/4/28 12:45:26
・リクエスト通過時刻 = 2012/4/28 12:45:25
ここで、上流ノードはコンテンツ応答メッセージ40を出力したルータ30に、下流ノードはコンテンツ応答メッセージ40が出力されるユーザ端末70に設定される。さらに、メッセージ処理部58は、内部メモリの記録に基づいて、コンテンツ応答メッセージ40に含まれるコンテンツID及びAliasIDと、以前通過したコンテンツ要求メッセージ70に含まれるコンテンツID及びAliasIDとが同じであることを判定する。それに基づいて、メッセージ処理部38は、コンテンツ応答メッセージ40に対するリクエストがコンテンツ要求メッセージ70であると判定し、コンテンツ要求メッセージ70が通過したときにクロック54が示す時刻「2012/4/28 12:45:25」をリクエスト通過時刻としてBC情報35−2に記録する。なお、データ通過時刻としては、コンテンツ応答メッセージ40をルータ50が受信したときにクロック54が示す時刻「2012/4/28 12:45:26」が記載される。
なおメッセージ処理部58は、コンテンツ応答メッセージ40に対応するコンテンツ要求メッセージ30を受信した隣接ノードを下流ノードとして記録し、コンテンツ要求メッセージ30を送信した隣接ノードを上流ノードとして記録している。
さらに、メッセージ処理部58は、Aliasテーブル56に下記のAlias情報を格納する。
[Alias情報56−1]
・Alias ID = X.latest
・Alias 有効期限 = 2012/4/28 12:45:31
・BCコンテンツID = X.20120428124520
ここでAlias有効期限は、コンテンツ応答メッセージ40をルータ50が受信したときにクロック54が示す時刻「2012/4/28 12:45:26」に、コンテンツ応答メッセージ50に記載されたAlias有効時間(5秒)を加算したものである。
また、メッセージ処理部58は、コンテンツデータを含むコンテンツ応答メッセージ40をユーザ端末70へと転送する。ユーザ端末70はそのコンテンツ応答メッセージ40を受信する。これにより、ユーザ端末70は、コンテンツサーバ20ではなく、データ配信システム10のルータに保存されたキャッシュからコンテンツデータを取得することができる。
なお、ルータ30のメッセージ処理部38は、ルータ40からのコンテンツ応答メッセージ40を受信したときに、コンテンツキャッシュ部31に応答メッセージにかかるコンテンツデータのキャッシュを作成してもよい。ルータ50においても同様の処理を実行することができる。
実施の形態2に記載したデータ配信システム10の効果は次の通りになる。
データ配信システム10においてルータ30〜50は、コンテンツデータをキャッシュするコンテンツキャッシュ部と、キャッシュしたコンテンツデータのAliasIDとコンテンツIDとを対応付けて格納するAliasテーブルを有している。そしてルータ30〜50のメッセージ処理部は、クライアント端末側からデータ要求を受信した場合に、AliasIDに基づいてAliasテーブルを参照することにより、AliasテーブルにおいてそのAliasIDに対応付けられたコンテンツIDにキャッシュ管理テーブル32において対応付けられたコンテンツデータを、クライアント端末側に配信する。これにより、クライアント端末側がコンテンツIDではないAliasIDを用いてデータ要求を送信した場合でも、ルータ30〜50はそのAliasIDに対応付けられたコンテンツIDを特定し、そのコンテンツIDに対応付けられたコンテンツデータをクライアント端末側に配信することができる。従って、データ配信システム10は、逐次新しく生成されてそれぞれ異なるIDが付加されるコンテンツデータをユーザに配信することができる。
さらにルータ30は、Aliasテーブル36において、AliasIDとコンテンツIDとの対応付けとともに、その対応付けの有効期限を対応付けて格納する。ここでメッセージ処理部38は、クライアント端末側からデータ要求を受信した場合に、AliasIDに基づいてAliasテーブル36を参照することにより、そのときの時刻においてAliasテーブル36に格納した有効期限が失効したことを判定した場合には、そのデータ要求をコンテンツサーバ20に転送する。これにより、ルータ30は、AliasIDによるデータ要求が以前にサーバからルータ30へ配信されたコンテンツデータに関するものであっても、そのAliasIDとコンテンツIDとの対応付けの有効期限が失効した場合には、現にコンテンツデータを配信しているコンテンツサーバ20にそのデータ要求を送信する。したがって、データ配信システム10は、現在AliasIDと対応付けられているコンテンツIDにかかるコンテンツデータを確実にユーザに配信することができる。また、他のルータにおいても対応付けの有効期限が失効している場合、他のルータにデータ要求を転送するよりも、ユーザがデータを取得するまでの時間が短縮できると考えられる。
データ配信システム10は、ルータ30のほか、コンテンツサーバ20からコンテンツデータが送信されるときのコンテンツデータの配信経路上にあるルータ40をさらに備える。ルータ30は、ルータ40のアドレス情報を記録するBCテーブル35をさらに有する。ルータ30のメッセージ処理部38は、データ要求にかかるコンテンツデータがコンテンツキャッシュ部31にキャッシュされていない場合に、BCテーブル35を参照して取得したルータ40のアドレス情報に基づいて、ルータ40にデータ要求を転送する。つまりデータ配信システム10は、キャッシュを保有している可能性があるルータ40に対してデータ要求を転送することにより、コンテンツサーバ20にデータ要求が送信されることをできるだけ減らすことができる。従って、データ配信システム10は、コンテンツサーバ20の付加を削減するほか、ユーザのコンテンツデータ取得時間を短縮することができる。
ルータ40は、コンテンツサーバ20から受信したコンテンツデータ及びその対応IDを対応付けてキャッシュするコンテンツキャッシュ部41を備える。ルータ30のメッセージ処理部38は、データ要求に対応IDの情報を含ませてルータ40に転送する。ルータ40は、ルータ30から対応IDの情報を含むデータ要求を受信した場合に、その対応IDとキャッシュ管理テーブル32において対応付けられたコンテンツデータをクライアント端末側に配信する。これにより、データ配信システム10は、コンテンツデータの配信経路上にあるルータがコンテンツデータをキャッシュしていて、データ要求を受けたルータがコンテンツデータをキャッシュしていたルータと異なる場合でも、キャッシュしたコンテンツデータをユーザに配信することができる。
ルータ40は、Aliasテーブル46において、AliasIDとコンテンツIDとの対応付けとともに、その対応付けの有効期限を対応付けて格納する。メッセージ処理部48は、ルータ30からデータ要求を受信した場合に、AliasIDに基づいてAliasテーブル46を参照することにより、そのときの時刻においてAliasテーブル46に格納した有効期限が失効したことを判定した場合には、そのデータ要求をコンテンツサーバ20に転送する。これにより、ルータ40は、AliasIDによるデータ要求が以前にサーバからルータ40へ配信されたコンテンツデータに関するものであっても、そのAliasIDとコンテンツIDとの対応付けの有効期限が失効した場合には、現にコンテンツデータを配信しているコンテンツサーバ20にそのデータ要求を送信する。したがって、データ配信システム10は、現在AliasIDと対応付けられているコンテンツIDにかかるコンテンツデータを確実にユーザに配信することができる。
コンテンツサーバ20は、コンテンツデータを配信するときにそのコンテンツデータのコンテンツIDと、AliasIDとの対応付けの有効時間を併せて配信する。ルータ30のメッセージ処理部38は、コンテンツサーバ20から配信されたその有効時間及びコンテンツサーバ20からそのコンテンツデータが配信された時刻に基づいて有効期限を算出する。メッセージ処理部38はAliasテーブル36においてその有効期限を格納する。このように、ルータ30における有効期限はデータ配信の際にコンテンツサーバ20が設定する時間に基づいて設定されるため、データ配信システム10は、ルータ30における有効期限を比較的正確に設定できる。またルータ30で有効期限を自発的に設定するわけではないため、ルータ30の処理を軽減させることができる。
ルータ30は、コンテンツサーバ20からコンテンツデータが送信されるときに、BCテーブル35において、ルータ30の次にコンテンツデータが配信されるルータのアドレスをルータ40のアドレス情報として記録する。このように、ルータ30はコンテンツデータの配信経路上にあるルータ40をコンテンツデータが配信されるときに記録しておくことにより、データ要求をルータ40に転送することを可能としている。従ってデータ配信システム10は、ルータ間におけるデータ要求の転送を簡易な処理で実行することができる。
ルータ30は、コンテンツサーバ20から有効時間の情報が配信された時刻からルータ40へコンテンツデータを転送する時刻との時間差に基づいて、その有効時間の情報を更新し、コンテンツデータと併せてルータ40に転送してもよい。ルータ40は、ルータ30から配信された有効時間の情報と、そのデータが配信された時刻とに基づいて有効期限を算出し、Aliasテーブル36にその有効期限を格納する。これにより、ルータ30の有効時間とルータ40の有効時間とをより近づけることができるため、データ配信の正確性をより高めることができる。
同様にルータ30は、ルータ40から有効時間の情報が配信された時刻からルータ50へコンテンツデータを転送する時刻との時間差に基づいて、その有効時間の情報を更新し、コンテンツデータと併せてルータ50に転送してもよい。ルータ50は、ルータ30から配信された有効時間の情報と、そのデータが配信された時刻とに基づいて有効期限を算出し、Aliasテーブル56にその有効期限を格納する。これにより、ルータ30の有効時間とルータ50の有効時間とをより近づけることができるため、データ配信の正確性をより高めることができる。
ルータ40は、AliasIDとコンテンツIDとの対応付けの有効期限が失効しておらず、そのコンテンツIDにかかるコンテンツデータをクライアント端末側に配信するときに、そのときの(配信時の)時刻と有効期限との時間差を、AliasIDとコンテンツIDとの対応付けの有効時間として併せて配信する。ルータ30は、ルータ40からコンテンツデータを受信したときに、ルータ40が配信した有効時間及びそのコンテンツデータを受信した時刻に基づいて、Aliasテーブル36に格納される有効期限を設定する。このようにして、データ配信システム10は、コンテンツデータをキャッシュしていないルータ30における有効期限の更新を実行することができる。
データ配信システム10は、ルータ40からコンテンツデータがクライアント端末側に配信される場合にその配信経路上にあるルータ50をさらに備え、ルータ50は、ルータ40からコンテンツデータが配信されるときに、そのコンテンツデータを対応IDに対応付けてキャッシュするコンテンツキャッシュ部51と、AliasIDと対応IDとを対応付けて格納するAliasテーブル56を有する。ルータ50はさらに、クライアント端末側からAliasIDの情報を含むデータ要求を受信した場合に、そのAliasIDに基づいてAliasテーブル56を参照することにより、Aliasテーブル56においてそのAliasIDに対応付けられた対応IDにコンテンツキャッシュ部51において対応付けられたコンテンツデータをクライアント端末側に配信するメッセージ処理部58を有する。このため、データ配信システム10は、コンテンツサーバ20ではなくルータからコンテンツデータが配信された場合でも、そのコンテンツデータをキャッシュし、ユーザに配信することができる。
ルータ50は、Aliasテーブル56において、コンテンツデータのAliasID及びコンテンツIDとともに、そのAliasIDとコンテンツIDとの対応付けの有効期限を対応付けて格納する。メッセージ処理部58は、クライアント端末側からデータ要求を受信したときに、AliasIDに基づいてAliasテーブル56を参照することにより、そのときの時刻においてAliasテーブル56に格納した有効期限が失効したことを判定した場合には、そのデータ要求をコンテンツサーバ20に転送する。これにより、ルータ50は、AliasIDによるデータ要求が以前にサーバからルータ50へ配信されたコンテンツデータに関するものであっても、そのAliasIDとコンテンツIDとの対応付けの有効期限が失効した場合には、現にコンテンツデータを配信しているコンテンツサーバ20にそのデータ要求を送信する。したがって、データ配信システム10は、現在AliasIDと対応付けられているコンテンツIDにかかるコンテンツデータを確実にユーザに配信することができる。
ルータ40は、有効期限が失効しておらず、キャッシュしたコンテンツデータをクライアント端末側に配信するときに、そのときの時刻と有効期限との時間差を、AliasIDとコンテンツIDとの対応付けの有効期限として併せて配信する。ルータ50は、ルータ40からデータを受信したときに、ルータ40が配信した有効時間と、そのコンテンツデータを受信した時刻とに基づいて、Aliasテーブル56に格納されたそのデータのコンテンツIDにかかる対応付けの有効期限を設定する。このようにして、データ配信システム10は、ルータ50における有効期限の更新を実行することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、実施の形態1、2にかかるデータ配信システムのサーバの数及びルータの数は、図1、図5にて説明した通りに限られない。
その他、実施の形態2にかかるデータ配信システム10において、以下のように構成を変更することができる。
データ配信システム10において、コンテンツIDとAliasIDとの対応付けの有効期限は必須ではなく、設定されていなくてもよい。有効期限が設定されていない場合、図7にかかるコンテンツサーバ20の処理においては、ステップS14において有効期限が失効しているか否かの判定は実行しない。また、図11Aにかかるルータの処理においては、ステップS23の処理(有効期限が失効しているか否かの判定処理)は実行せず、ステップS25以降の処理をルータは実行する。
図12A〜図12Cでは、Aliasテーブル46においてAliasID「X.latest」とはコンテンツID「X. 20120428124520」のみが対応付けられて格納されているとした。しかし、AliasID「X.latest」に対し複数のコンテンツIDが対応付けられ、かつ各々の対応付けに有効期限が設定されて、Aliasテーブル46に格納されていてもよい。ここでメッセージ処理部48は、AliasIDの情報を含むデータ要求メッセージを受信した場合に、そのAliasIDに基づいてAliasテーブル46を参照することにより、最長かつ失効していない有効期限を有する対応付けを判定する。例えば2つの対応付けがある場合には、メッセージ処理部48は長い方の有効期限を有する対応付けを選択する。
そしてメッセージ処理部48は、その有効期限に対応付けて格納されているコンテンツIDにコンテンツキャッシュ部41において対応付けられたコンテンツデータをクライアント端末側に配信する。これにより、データ配信システム10は、AliasIDに対応する最新のデータをクライアント端末側に配信することができるため、ユーザは最新のデータを取得することができる。
コンテンツサーバ20とルータ30との間にルータがさらにあり、ルータ30の直前にそのルータにデータが配信された場合には、図12Bの(11)の処理においてルータ30は、BC情報35−1において、そのルータのIPアドレスを上流ノードの欄に記載する。そして図12Cの(14)の処理においてルータ30は、その上流ノードの欄に記載されたIPアドレスに基づいて、そのルータにコンテンツ要求メッセージ70を転送してもよい。
図12Cの(15)の処理においてルータ30は、コンテンツ要求メッセージ70をそのまま(即ち要求コンテンツIDをコンテンツIDに書き換えずに)ルータ40に出力してもよい。ここでルータ40のメッセージ処理部48は、ルータ30からAliasIDの情報を含むコンテンツ要求メッセージを受信した場合に、AliasIDに基づいてAliasテーブル46を参照することにより、Aliasテーブル46においてそのAliasIDに対応付けられたコンテンツIDにキャッシュ管理テーブル32において対応付けられたデータをクライアント端末側に配信する。換言すれば、ルータ40は、図11A〜図11Cに記載されたステップS21、S22、S23、S25、S27、S28、S29の処理を実行する。このようにしても、ルータ40はキャッシュしたデータをクライアント端末側に配信することができる。
しかし、ルータ40が、コンテンツ要求メッセージ70で要求されているデータのコンテンツIDを把握できない場合に、ルータ40の処理が止まってしまう、もしくはコンテンツ要求メッセージ70がルータ30とルータ40の間でループする可能性がある。従って、ルータ30は、コンテンツ要求メッセージ70にコンテンツIDを含めたものをルータ40に送信するのが望ましい。
図12Cの(16)の処理においてメッセージ処理部48は、コンテンツ要求メッセージ30を受信した場合に、要求コンテンツIDではなくAliasIDに基づいてAliasテーブル46を参照してもよい。つまりメッセージ処理部48は、図11AにおけるステップS26の処理ではなく、ステップS23、S25の処理を実行してもよい。ここで有効期限が失効していない場合において、メッセージ処理部48は、要求コンテンツID又はAlias情報46−1においてAliasIDと対応付けられているコンテンツIDを実要求IDに設定して、コンテンツキャッシュ部41にその実要求IDに対応するコンテンツデータがあるか否かを判定する。
図12Bの(10)の処理においてコンテンツサーバ20は、コンテンツ応答メッセージ20にて送信するAlias有効時間を、時間差ではなく、コンテンツサーバ20におけるAlias有効時刻(2012/4/28 12:45:30)で送ってもよい。同様に図12Cの(16)の処理においてルータ40は、コンテンツ応答メッセージ40にて送信するAlias有効時間を、時間差ではなく、ルータ40におけるAlias有効時刻(2012/4/28 12:45:31)で送ってもよい。ただし、コンテンツサーバ20及びルータ30〜50における対応付けの有効期限を比較的正確に揃えるためには、コンテンツサーバ20及びルータ30〜50のクロックの同期(例えばGPSによる)が必要になる。したがって、コンテンツサーバ20及びルータ30〜50で実行する処理を簡単にし、データ配信システムのコストを安くする場合には、Alias有効時間を時間差で送るのが望ましい。
図12Cの(17)の処理においてAlias管理部37は、コンテンツデータを含むコンテンツ応答メッセージ40を受信したことをトリガとして、Aliasテーブル36に格納された有効期限をチェックしてもよい。例えばAlias管理部37は、受信したコンテンツ応答メッセージ40にかかる対応付けの有効期限を、現在のクロック34が示す時刻と比較して、失効しているか否か判定することができる。もし失効していれば、失効したAlias情報をAliasテーブル36から削除する。
また、メッセージ処理部38は受信したコンテンツデータをコンテンツキャッシュ部31に格納し、キャッシュ管理テーブル32にその管理情報を格納するとともに、Aliasテーブル36にそのコンテンツデータにかかるAlias情報を格納する。以上の処理を実行することにより、ルータ30は、コンテンツデータ及びそのコンテンツ情報を最新の状態に保つことができる。
なおAlias管理部37は、コンテンツ応答メッセージを受信したことをトリガとして、全ての対応付けの有効期限を、現在のクロック34が示す時刻と比較して、失効しているか否か判定してもよい。ルータ40、50でも同様の処理を実行することができる。
実施の形態1〜2に示した処理は、制御方法の1つとして、コンピュータ(例えばルータ)に実行させることができる。例えば、実施の形態1〜2に示した処理のフローを、制御プログラムとしてコンピュータに実行させてもよい。
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以下、本発明の各種形態を付記する。
(付記1)
クライアント端末側からエイリアスIDを含むデータ要求をサーバが受信した場合に、当該サーバは、当該エイリアスIDに対応する対応IDと、当該対応IDに対応するデータと、をクライアント端末側に送信するデータ配信システムであって、
前記データ配信システムは、前記サーバとクライアント端末側とを接続する第1のルータを備え、
前記第1のルータは、
前記サーバから受信した前記データ及び前記対応IDを対応付けてキャッシュする第1のキャッシュ部と、
前記エイリアスIDと前記対応IDとを対応付けて格納する第1のID格納領域と、
クライアント端末側から前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記第1のID格納領域を参照することにより、当該第1のID格納領域において当該エイリアスIDに対応付けられた対応IDに前記第1のキャッシュ部において対応付けられたデータをクライアント端末側に配信する第1の配信部と、を有する、
データ配信システム。
(付記2)
前記第1のルータは、前記第1のID格納領域において、前記エイリアスIDと前記対応IDとの対応付けとともに、当該対応付けの有効期限を対応付けて格納し、
前記第1の配信部は、クライアント端末側から前記データ要求を受信した場合に、前記エイリアスIDに基づいて前記第1のID格納領域を参照することにより、そのときの時刻において前記第1のID格納領域に格納した前記有効期限が失効したことを判定した場合には、当該データ要求を前記サーバに転送する、
付記1に記載のデータ配信システム。
(付記3)
前記データ配信システムは、前記サーバから前記データが送信されるときの前記データの配信経路上にある第2のルータをさらに備え、
前記第1のルータは、前記第2のルータのアドレス情報を記録するテーブルをさらに有し、
前記第1の配信部は、前記データが前記第1のキャッシュ部にキャッシュされていない場合に、前記テーブルを参照して取得した前記第2のルータのアドレス情報に基づいて当該第2のルータに前記データ要求を転送する、
付記2に記載のデータ配信システム。
(付記4)
前記第1の配信部は、前記データ要求に前記対応IDの情報を含ませて前記第2のルータに転送し、
前記第2のルータは、
前記サーバから受信した前記データ及び前記対応IDを対応付けてキャッシュする第2のキャッシュ部と、
前記第1のルータから前記対応IDの情報を含む前記データ要求を受信した場合に、当該対応IDと前記第2のキャッシュ部において対応付けられたデータをクライアント端末側に配信する第2の配信部と、を有する、
付記3に記載のデータ配信システム。
(付記5)
前記第2のルータは、
前記サーバから受信した前記データ及び前記対応IDを対応付けてキャッシュする第2のキャッシュ部と、
前記エイリアスIDと前記対応IDとを対応付けて格納する第2のID格納領域と、
前記第1のルータから前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記第2のID格納領域を参照することにより、当該第2のID格納領域において当該エイリアスIDに対応付けられた対応IDに前記第2のキャッシュ部において対応付けられたデータをクライアント端末側に配信する第2の配信部と、を有する、
付記3に記載のデータ配信システム。
(付記6)
前記第2のルータは、前記第2のID格納領域において、前記エイリアスIDと前記対応IDとの対応付けとともに、当該対応付けの有効期限を対応付けて格納し、
前記第2の配信部は、前記第1のルータから前記データ要求を受信した場合に、前記エイリアスIDに基づいて前記第2のID格納領域を参照することにより、そのときの時刻において前記第2のID格納領域に格納した前記有効期限が失効したことを判定した場合には、当該データ要求を前記サーバに転送する、
付記5に記載のデータ配信システム。
(付記7)
前記サーバは、前記データを配信するときに、前記エイリアスIDと前記対応IDとの対応付けの有効時間の情報を併せて配信し、
前記第1のルータは、前記有効時間と、当該サーバから当該データが配信された時刻とに基づいて前記有効期限を算出し、前記第1のID格納領域において当該有効期限を格納する、
付記2ないし6のいずれか一項に記載のデータ配信システム。
(付記8)
エイリアスIDを含むデータ要求を送信するクライアント端末側と、当該データ要求を受信した場合に、当該エイリアスIDに対応する対応IDと、当該対応IDに対応するデータと、をクライアント端末側に送信するサーバとを接続するルータであって、
前記サーバから受信した前記データ及び前記対応IDを対応付けてキャッシュするキャッシュ部と、
前記エイリアスIDと前記対応IDとを対応付けて格納するID格納領域と、
クライアント端末側から前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記ID格納領域を参照することにより、当該ID格納領域において当該エイリアスIDに対応付けられた対応IDと前記キャッシュ部において対応付けられたデータをクライアント端末側に配信する配信部と、を備える、
ルータ。
(付記9)
エイリアスIDを含むデータ要求を送信するクライアント端末側と、当該データ要求を受信した場合に、当該エイリアスIDに対応する対応IDと、当該対応IDに対応するデータと、をクライアント端末側に送信するサーバとを接続するルータの制御方法であって、
前記サーバから受信した前記データ及び前記対応IDを対応付けて前記ルータのキャッシュ部にキャッシュするステップと、
前記エイリアスIDと前記対応IDとを対応付けて前記ルータのID格納領域に格納するステップと、
クライアント端末側から前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記ID格納領域を参照することにより、当該ID格納領域において当該エイリアスIDに対応付けられた対応IDと前記キャッシュ部において対応付けられたデータをクライアント端末側に配信するステップと、
を備えるルータの制御方法。
(付記10)
エイリアスIDを含むデータ要求を送信するクライアント端末側と、当該データ要求を受信した場合に、当該エイリアスIDに対応する対応IDと、当該対応IDに対応するデータと、をクライアント端末側に送信するサーバとを接続するルータの制御プログラムであって、
前記サーバから受信した前記データ及び前記対応IDを対応付けて前記ルータのキャッシュ部にキャッシュするステップと、
前記エイリアスIDと前記対応IDとを対応付けて前記ルータのID格納領域に格納するステップと、
クライアント端末側から前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記ID格納領域を参照することにより、当該ID格納領域において当該エイリアスIDに対応付けられた対応IDと前記キャッシュ部において対応付けられたデータをクライアント端末側に配信するステップと、
をルータに実行させる制御プログラム。
(付記11)
前記第1のID格納領域において、前記エイリアスIDと第1の前記対応IDとの第1の対応付けとともに当該第1の対応付けの有効期限が対応付けて格納されるとともに、当該エイリアスIDと第2の前記対応IDとの第2の対応付けとともに当該第2の対応付けの有効期限が対応付けて格納されており、
前記第1の配信部は、クライアント端末側から前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記第1のID格納領域を参照することにより、前記第1の対応付けの有効期限と前記第2の対応付けの有効期限のいずれの有効期限が長いかを判定し、長い方の有効期限に対応付けて格納されている対応IDに前記第1のキャッシュ部において対応付けられたデータをクライアント端末側に配信する、
付記2ないし7のいずれか一項に記載のデータ配信システム。
(付記12)
前記第1のルータは、前記サーバから前記データが配信されるときに、前記テーブルにおいて、当該第1のルータの直前に前記データが配信されたルータのアドレス又は当該第1のルータの次に前記データが配信されるルータのアドレスを前記第2のルータのアドレス情報として記録する、
付記3ないし6のいずれか一項に記載のデータ配信システム。
(付記13)
前記第2のルータは、前記サーバから前記データが配信されるときに、前記第1のルータの次に前記データが配信されるルータであって、
前記サーバは、前記データを配信するときに、前記エイリアスIDと前記対応IDとの対応付けの有効時間の情報を併せて配信し、
前記第1のルータは、前記有効時間と、当該サーバから当該データが配信された時刻とに基づいて前記有効期限を算出し、前記第1のID格納領域において当該有効期限を格納するとともに、前記有効時間の情報が配信された時刻から前記第2のルータへ前記データを転送する時刻との時間差に基づいて、当該有効時間の情報を更新し、当該データと併せて前記第2のルータに転送して、
前記第2のルータは、当該第1のルータから配信された前記有効時間の情報と、当該データが配信された時刻とに基づいて前記有効期限を算出し、前記第2のID格納領域において当該有効期限を格納する、
付記5に記載のデータ配信システム。
(付記14)
前記第2のルータは、前記有効期限が失効しておらず、キャッシュした前記データをクライアント端末側に配信するときに、そのときの時刻と前記有効期限との時間差の情報を、前記エイリアスIDと前記対応IDとの対応付けの有効時間として併せて配信し、
前記第1のルータは、前記第2のルータから前記データ及び前記有効時間の情報を受信したときに、当該有効時間及び当該データを受信した時刻に基づいて、前記第1のID格納領域に格納される前記有効期限を設定する、
付記6に記載のデータ配信システム。
(付記15)
前記データ配信システムは、前記第2のルータから前記データがクライアント端末側に配信される場合にその配信経路上にある第3のルータをさらに備え、
前記第3のルータは、
前記第2のルータから前記データが配信されるときに、当該データを前記対応IDに対応付けてキャッシュする第3のキャッシュ部と、
前記エイリアスIDと前記対応IDとを対応付けて格納する第3のID格納領域と、
クライアント端末側から前記エイリアスIDの情報を含む前記データ要求を受信した場合に、当該エイリアスIDに基づいて前記第3のID格納領域を参照することにより、当該第3のID格納領域において当該エイリアスIDに対応付けられた対応IDに前記第3のキャッシュ部において対応付けられたデータをクライアント端末側に配信する第3の配信部と、を有する、
付記14に記載のデータ配信システム。
(付記16)
前記第3のルータは、前記第3のID格納領域において、前記エイリアスID及び前記対応IDとともに、当該エイリアスIDと当該対応IDとの対応付けの有効期限を対応付けて格納し、
前記第3の配信部は、クライアント端末側から前記データ要求を受信したときに、前記エイリアスIDに基づいて前記第3のID格納領域を参照することにより、そのときの時刻において前記第3のID格納領域に格納した前記有効期限が失効したことを判定した場合には、当該データ要求を前記サーバに転送する、
付記15に記載のデータ配信システム。
(付記17)
前記第2のルータは、前記有効期限が失効しておらず、キャッシュした前記データをクライアント端末側に配信するときに、そのときの時刻と前記有効期限との時間差の情報を、前記エイリアスIDと前記対応IDとの対応付けの有効時間として併せて配信し、
前記第3のルータは、前記第2のルータから前記データ及び前記有効時間の情報を受信したときに、当該有効時間と、当該データを受信した時刻とに基づいて、前記第3のID格納領域に格納された前記データの前記有効期限を設定する、
付記16に記載のデータ配信システム。
(付記18)
前記データ配信システムは、前記第2のルータから前記第3のルータに前記データ及び前記有効時間の情報を配信する場合にその配信経路上にある第4のルータをさらに備え、
前記第4のルータは、前記第2のルータから前記データ及び前記有効時間の情報を受信したときに、当該有効時間の情報と、当該データを受信した時刻とに基づいて、当該有効時間の情報を更新し、当該データと併せて前記第3のルータに転送して、
前記第3のルータは、前記第4のルータから配信された前記有効時間の情報及び当該データが配信された時刻に基づいて前記有効期限を算出し、前記第2のID格納領域において当該有効期限を格納する、
付記17に記載のデータ配信システム。