以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一名称の構成要素には、同じ番号を付し、説明は、適宜省略する。
(第1実施形態)
図1は、本実施形態に係る通信システムの一例を示す図である。図1の通信システムは、第1アクセスポイント1Aと、第2アクセスポイント1Bと、ユーザー端末2と、コントローラ3と、サーバー4を備えている。
第1アクセスポイント1A及び第2アクセスポイント1Bは、無線LAN(Local Area Network)のアクセスポイントである。アクセスポイント1Aおよびアクセスポイント1Bは、ユーザー端末とコントローラ3間で通信の中継を行う中継装置である。
ユーザー端末2は、例えば、スマートホン、タブレット端末またはフィーチャーホンといった、無線通信可能な通信端末である。図の例では、ユーザー端末2は、第1アクセスポイント1Aと無線で接続している。
コントローラ3は、第1アクセスポイント1Aおよび第2アクセスポイント1Bを、ネットワーク5へ接続する装置であり、第1アクセスポイント1Aおよび第2アクセスポイント1Bはコントローラ3を介して相互に接続される。さらに、第1アクセスポイント1Aおよび第2アクセスポイント1Bは、コントローラ3を介してネットワーク5に接続される。コントローラ3が存在しない構成も可能である。この場合、アクセスポイント1Aおよびアクセスポイント1Bは、上位側の他のルータまたは交換機等と接続される。本実施形態ではネットワーク5はインターネットである。ただし、ネットワーク5は、インターネット以外の広域ネットワークでもよいし、ローカルエリアネットワークでもよい。
サーバー4は、ネットワーク5上に存在する装置であり、種々のコンテンツやサービスの提供を行う。サーバー4は、ユーザー端末2、第1アクセスポイント1A、または第2アクセスポイント1B、またはコントローラ3から要求を受信し、要求に応じたデータ(例えばコンテンツリスト、コンテンツ等)を提供する。
図2は、本実施形態に係る通信装置を搭載したアクセスポイントの機能ブロック図である。アクセスポイントは、図1に示す第1アクセスポイント1A及び第2アクセスポイント1Bのいずれでもよい。図1に示す第1アクセスポイント1A及び第2アクセスポイント1Bは、いずれも図2に示すブロックの機能を有する。以下の説明で、アクセスポイントというときは、第1アクセスポイント1A及び第2アクセスポイント1Bの任意の一方を指すものとする。なお、図には本実施形態の説明に必要な要素のみ記述しており、他の要素を排除するものではない。
なお、本実施形態に係る通信装置は、アクセスポイント1A、1Bに搭載される構成の他、コントローラ3またはサーバー4に搭載する構成も可能である。または、本実施形態に係る通信装置を、独立した単独の装置として実現し、各アクセスポイントまたはコントローラ3またはサーバー4またはこれらの任意の組合せと通信可能に構成してもよい。
図2に示すように、アクセスポイントは、キャッシュ情報交換部(第1取得部)10と、共有キャッシュ情報生成部11と、コンテンツ取得要求応答部(第2取得部、コンテンツ提供部)12と、付加情報付コンテンツリスト生成部(コンテンツリスト生成部)13と、記憶部14と、通信部15と、を備える。アクセスポイントは、ユーザー端末2、コントローラ3および他のアクセスポイントなど、他の通信ノードと通信することが可能である。アクセスポイントは、他のアクセスポイントと通信する場合は、コントローラ3を介してもよいし、直接通信してもよい。
キャッシュ情報交換部10は、他のアクセスポイントのキャッシュ情報を取得するとともに、他のアクセスポイントへ自装置のキャッシュ情報の配信を行う。キャッシュ情報は、記憶部14にキャッシュされているコンテンツ(キャッシュコンテンツ)の識別子、コンテンツサイズおよびオフライン再生可能フラグを含む情報である。キャッシュ情報は、本実施形態に係るキャッシュコンテンツに関する第1情報に対応する。キャッシュ情報の詳細は後述する。
共有キャッシュ情報生成部11は、自アクセスポイント1及び他のアクセスポイントの記憶部14に記憶されているキャッシュ情報に基づいて、共有キャッシュ情報を生成する。共有キャッシュ情報は、各アクセスポイントポイントのキャッシュ情報を統合した情報であり、詳細は後述する。
コンテンツ取得要求応答部12は、サーバー4にコンテンツリストの取得要求を送信し、要求したコンテンツリストを取得する。コンテンツリストは、サーバー4が保持するコンテンツの識別子のリストである。このコンテンツリストは、本実施形態に係る第1コンテンツリストに相当し、コンテンツ取得要求応答部12は、第1コンテンツリストを取得する第2取得部を備える。
付加情報付コンテンツリスト生成部13は、共有キャッシュ情報と、コンテンツ取得要求応答部12により取得されたコンテンツリストから、付加情報付コンテンツリストを生成する。
付加情報付コンテンツリストは、コンテンツリストに含まれる複数のコンテンツの識別子のうち、少なくともいずれかのアクセスポイントにキャッシュされているコンテンツの識別子に対して、当該コンテンツがいずれかのアクセスポイントにキャッシュされていること等を示す付加情報(第2情報)を設定したものである。付加情報の設定されていない識別子のコンテンツは、いずれのアクセスポイントにもキャッシュされていない(サーバー4にのみ保持されている)ことを意味する。
つまり、付加情報コンテンツリストは、コンテンツリストにおいて少なくともいずれかのアクセスポイントにキャッシュされているコンテンツの識別子と、当該コンテンツが少なくともいずれかのアクセスポイントにキャッシュされていること等を示す付加情報(第2情報)とを含む。さらに付加情報コンテンツリストは、いずれのアクセスポイントにもキャッシュされていない(サーバー4にのみ保持されている)コンテンツの識別子と、当該コンテンツがいずれのアクセスポイントにもキャッシュされていなことを示す情報(第3情報)とを含む。本実施形態では第3情報は、識別子に何も値を設定しないことで表現するが、明示的にキャッシュされていないことを示す値を定義し、当該値を識別子に設定することも可能である。なお、付加情報付コンテンツリストに、キャッシュされていないコンテンツの識別子および第3情報を含めない構成も可能である。付加情報付コンテンツリストは、本実施形態に係る第2コンテンツリストに相当し、付加情報付コンテンツリスト生成部13は、第2コンテンツリストを生成するコンテンツリスト生成部を備える。
記憶部14は、自アクセスポイントのキャッシュ情報、および、他アクセスポイントから取得したキャッシュ情報を記憶する。また、記憶部14は、コンテンツを内部に記憶(キャッシュ)する。記憶部14に記憶されているコンテンツを、キャッシュされたコンテンツと呼ぶ場合もある。記憶部14にコンテンツを格納することを、コンテンツをキャッシュすると呼ぶ場合もある。コンテンツは、予め記憶部14に設定されている場合、サーバー4からコンテンツを取得した場合にキャッシュする場合、他のアクセスポイントからコンテンツを取得したときにキャッシュする場合などがある。なお、キャッシュ情報とコンテンツとが同じ記憶部14に保持されているが、別々の記憶部に保持されるようにしてもよい。また記憶部14は、共有キャッシュ情報、コンテンツリスト、および付加情報付コンテンツリストも記憶してよい。
通信部15は、他の通信ノードに情報または要求を送信したり、他の通信ノードから情報を受信したりする。他の通信ノードは、例えば、他のアクセスポイント、サーバー4、ユーザー端末2、コントローラ3である。以下、特に明示しない限り、他の通信ノードとの送受信は、この通信部15を介して行われる。なお、アクセスポイントは、他のアクセスポイント1、コントローラ3、サーバー4と無線で接続されても、有線で接続されてもよい。また、コントローラ3側の通信インタフェースと、ユーザー端末2側の通信インタフェースとが異なってもよい。
なお、図2においては、各部(各ブロック)は独立した要素として構成されているが、複数の要素をまとめて1つの部を定義してもよい。
次に、キャッシュ情報の交換に係る動作と、付加情報付コンテンツリストの提供に係る動作について説明する。
まず、第1アクセスポイント1Aと、この第1アクセスポイント1Aの周辺の他のアクセスポイントである第2アクセスポイント1Bとの間で接続が確立されているとする。これらのアクセスポイントは、有線又は無線のネットワークを介して接続され双方向に通信が確立されており、その接続方式および通信方式はどのような方式であってもよいものとする。
第1アクセスポイント1Aのキャッシュ情報交換部10は、第2アクセスポイント1Bに対してキャッシュ情報の取得要求を送信する。本実施形態において、キャッシュ情報は、キャッシュされたコンテンツを指し示すコンテンツID(コンテンツの識別子)と、データサイズと、オフライン再生可能フラグとの情報を備えた1以上のエントリを含むリストにより構成される。
図3(a)及び図3(b)は、キャッシュ情報の一例を示す図である。例えば、図3(a)は、第1アクセスポイント1Aのキャッシュ情報であり、コンテンツIDであるURLと、コンテンツサイズと、当該コンテンツがオフラインにおいて再生可能であるか否かを示すフラグとを紐付けた情報である。この場合、第1アクセスポイント1Aには、100,000,000Byteのオフライン再生可能なexample1というコンテンツと、1,000,000,000Byteのオフライン再生可能なexample2というコンテンツがキャッシュされている。同様に、図3(b)は、第2アクセスポイント1Bのキャッシュ情報を示す図である。図3(b)に示すように、第2アクセスポイント1Bには、第1アクセスポイント1Aと同様にexample2というコンテンツと、それとは別に10,000,000,000Byteでオフライン再生可能なexample3というコンテンツがキャッシュされている。
ここで、オフライン再生可能とは、該当するコンテンツの全体をダウンロードして、ユーザー端末でローカルに再生できることを意味する。コンテンツをネットワークから所定のレートでダウンロードしながら、再生する方式は、ストリーミング再生と呼ばれる。本実施形態ではアクセスポイントにキャッシュされているコンテンツは、オフライン再生可能であるが、それ以外のコンテンツ、すなわちサーバー4にのみ存在するコンテンツは、ストリーミング再生のみ可能なコンテンツであるとする。ただし、アクセスポイントにキャッシュされているコンテンツであっても、オフライン再生可能なコンテンツと、ストリーミング再生可能(オフライン再生不可)なコンテンツが区別されてもよい。この場合、ストリーミング再生可能なコンテンツにはオフライン再生不可フラグを設定してもよい。
第2アクセスポイント1Bのキャッシュ情報交換部10は、第1アクセスポイント1Aのキャッシュ情報交換部10から、キャッシュ情報の取得要求を受信すると、応答として、第2アクセスポイント1Bのキャッシュ情報を第1アクセスポイント1Aへ送信する。第2アクセスポイント1Bのキャッシュ情報を受信した第1アクセスポイント1Aは、第2アクセスポイント1Bのキャッシュ情報を記憶部14へ格納および保持する。同様に、第2アクセスポイント1Bから第1アクセスポイント1Aへキャッシュ情報の取得要求を送信すると、第1アクセスポイント1Aは、保持しているキャッシュ情報を、第2アクセスポイント1Bへ送信する。第2アクセスポイント1Bは、第1アクセスポイント1Aから受信したキャッシュ情報を、記憶部14に格納および保持する。これらの動作の結果、アクセスポイント間でのキャッシュ情報の交換が実現する。
キャッシュ情報を交換した各アクセスポイント(1A、1B)は、自アクセスポイント及び他アクセスポイントのキャッシュ情報から共有キャッシュ情報を生成し、生成した共有キャッシュ情報を記憶部14に格納および保持する。
図4は、この共有キャッシュ情報の一例を示す図である。図4に示す共有キャッシュ情報は、図3(a)及び図3(b)に示されるようなキャッシュ情報を1つにまとめたものであり、example1乃至example3のキャッシュ情報を含む。また、共有キャッシュ情報は、さらに、コンテンツ(example1乃至example3)がキャッシュされているアクセスポイントポイントの識別子であるAPIDを含む。したがって、共有キャッシュ情報は、コンテンツIDと、コンテンツサイズと、オフライン再生可能フラグと、APIDとを含む複数のエントリを有する。例えば、図4のexample2のコンテンツは、アクセスポイント1Aと1Bの両方でキャッシュされている。APIDの例として、SSID(Service Set Identifier)を用いることができる。
図5は、アクセスポイント1に備えられている共有キャッシュ情報生成部11が共有キャッシュ情報を生成する処理についての動作を示すフローチャートである。
まず、記憶部14に記憶されているキャッシュ情報のうち1つを取り出す(ステップS100)。例えば、図3(a)のキャッシュ情報と図3(b)のキャッシュ情報とが記憶部14に記憶されている場合に、図3(a)に示すキャッシュ情報を取得する。
次に、キャッシュ情報から1エントリを抽出する(ステップS101)。例えば、コンテンツIDがhttp://example.com/content/example1、コンテンツサイズが100,000,000、オフライン再生可能フラグが○(可能)のエントリを抽出する。
次に、抽出したエントリのコンテンツIDが、共有キャッシュ情報に含まれているか否かを判断する(ステップS102)。共有キャッシュ情報に、当該コンテンツIDを含むエントリがある場合(ステップS102:Yes)、このエントリに、このコンテンツIDのコンテンツがキャッシュされているアクセスポイントのAPIDを追記する(ステップS103)。なお、この際、既に同一のAPIDがエントリに含まれている場合においては、追記しなくてよい。
一方で、共有キャッシュ情報に、上記コンテンツIDを含むエントリがない場合(ステップS102:No)、共有キャッシュ情報に新たなエントリ、すなわち、コンテンツIDと、コンテンツサイズと、オフライン再生可能フラグと、当該コンテンツがキャッシュされているアクセスポイントのAPIDを含むエントリを追加する(ステップS104)。例えば、図3(a)に示す第1アクセスポイント1Aのキャッシュ情報からexample2のエントリが抽出された場合を考える。共有キャッシュ情報において既にexample2のエントリが存在し、APIDとして「AP2」のみが記載されていた場合は、このエントリに「AP1」を追記する。
次に、キャッシュ情報中の全てのエントリが抽出されたか否かを判断する(ステップS105)。全てのエントリの抽出が終了していない場合(ステップS105:No)、キャッシュ情報中の次のエントリを抽出し、ステップS102乃至ステップS104の処理を行う。一方で全てのエントリの抽出が終了している場合(ステップS105:Yes)、全てのキャッシュ情報が取得されたか否かを判断する(ステップS106)。
例えば、図3(a)及び図3(b)に示すキャッシュ情報が参照可能である場合において、図3(a)に示すキャッシュ情報内のエントリは全て抽出し終わったが、図3(b)に示すキャッシュ情報を取得していない場合(ステップS106:No)、新たなキャッシュ情報として図3(b)に示すキャッシュ情報を取得し、処理を継続する(ステップS101乃至ステップS105)。一方で、全てのキャッシュ情報の取得が完了した場合(ステップS106:Yes)、共有キャッシュ情報生成処理は、終了する。
上記においては、アクセスポイントが2つ存在する場合について説明したが、3以上のアクセスポイントが存在する場合においても、各アクセスポイントが自装置以外のアクセスポイントとキャッシュ情報の交換をすることで、各アクセスポイントは、3つ以上のアクセスポイントのキャッシュ情報を反映した共有キャッシュ情報を生成できる。また、各アクセスポイントは、キャッシュ情報を送信する際には、自装置のキャッシュ情報とともに、取得済みの他のアクセスポイントのキャッシュ情報を送信するようにしてもよい。
また、他の方法として、各アクセスポイントが、他のアクセスポイントにキャッシュ情報をブロードキャストすることにより、キャッシュ情報を交換してもよい。なお、ブロードキャストを行うタイミングは、他のアクセスポイントが新たに加わったタイミングでもよいし、周期的なタイミングで行ってもよいし、キャッシュ情報に変更があったタイミングでもよい。また、前述した方法と組み合わせて、キャッシュ情報の交換を行ってもよい。
次に、付加情報付コンテンツリストの提供処理について説明する。ユーザー端末2と第1アクセスポイント1Aとの間で接続が確立されており、第1アクセスポイント1Aおよび第2アクセスポイント1B間でキャッシュ情報の交換が完了し、各々の記憶部14に共有キャッシュ情報が保存されているとする。なお、第1アクセスポイント1Aとユーザー端末2間にて、ユーザー端末2が使用可能な空き帯域があらかじめ設定されているとする。
第1アクセスポイント1Aにおけるコンテンツ取得要求応答部12の第2取得部は、ユーザー端末2から付加情報付コンテンツリストの取得要求を受信すると、サーバー4に対して、コンテンツリストの取得要求を送信する。コンテンツリストの一例を図6に示す。コンテンツリストは、1つ以上のエントリから構成され、各エントリは、コンテンツのページ、例えば、URLを示すページIDを含む。
サーバー4は、第1アクセスポイント1Aからコンテンツリストの取得要求を受信すると、要求にしたがいコンテンツリストを第1アクセスポイント1Aへ送信する。コンテンツリストは、例えば、ユーザーへのお薦めコンテンツのリストである。第1アクセスポイント1Aのコンテンツ取得要求応答部12は、コンテンツリストを受信すると、受信したコンテンツリストを付加情報付コンテンツリスト生成部13へ渡す。第1アクセスポイント1Aは、コンテンツリストの取得要求を送信する際、ユーザーの識別情報(ユーザーID等)をサーバー4に送信してもよい。サーバー4はユーザーIDに応じて、コンテンツリストを生成してもよい。
付加情報付コンテンツリスト生成部13は、コンテンツ取得要求応答部12からコンテンツリストを受け取ると、記憶部14から共有キャッシュ情報を読み出し、コンテンツリストと共有キャッシュ情報とから、付加情報付コンテンツリストを生成する。以下、付加情報付コンテンツリストの生成方法の一例を、図7及び図8を参照して説明する。
図7は、付加情報付コンテンツリストの一例を示す図である。この図7に示すように、付加情報付コンテンツリストは、キャッシュコンテンツについては、ページIDと、コンテンツの推定ダウンロード時間(推定DL時間)と、オフライン再生可能フラグと、APIDとを含むエントリを含み、キャッシュコンテンツ以外のコンテンツについては、ページIDのみを含むエントリを含む。ユーザー端末が属するAPのAPIDについては、そのことが分かるような表示(例えば色を変える)を行ってもよい。推定DL時間、オフライン再生可能フラグ、APIDは、本実施形態に係る第2情報の一例である。第2情報が設定されているコンテンツIDのコンテンツは、少なくともいずれかのアクセスポイントにキャッシュされているコンテンツであるといえる。
推定ダウンロード時間は、コンテンツIDが示すキャッシュコンテンツを、ユーザー端末2が接続しているアクセスポイントからダウンロードするのに要する推定時間である。したがって、同一のコンテンツであっても、ユーザー端末2は、接続するアクセスポイントに応じて、付加情報付コンテンツリストの推定時間が異なる可能性がある。キャッシュコンテンツが、ユーザー端末2が接続しているアクセスポイント以外の他のアクセスポイントに存在する場合は、推定時間は、当該接続しているアクセスポイントが他のアクセスポイントから当該コンテンツを受信するために要する時間と、当該接続しているアクセスポイントがユーザー端末2にコンテンツを送信するのに要する時間とを含む。そのような他のアクセスポイントが2つ以上存在する場合は、最も短い時間でもよいし、これらの時間の平均等の統計値でもよい。
後に説明するように、端末2のユーザーは、この推定時間を参照することで、コンテンツをダウンロードするのに要する時間を予測できる。例えばユーザーがWifiスポットに滞在しているときに、Wifiスポットに滞在する残り予定時間に応じて、コンテンツのダウンロードを実行するか否かを決定することができる。
図8は、付加情報付コンテンツリスト生成部13が付加情報付コンテンツリストを生成する処理を示すフローチャートである。まず、付加情報付コンテンツリスト生成部13は、サーバー4から受信したコンテンツリスト(図6参照)から、1つのエントリを抽出する(ステップS110)。例えば、図6に示すコンテンツリストから、http://example.com/page/example1というページIDを有するエントリを抽出する。
次に、このページIDから、コンテンツIDを生成する(ステップS111)。本実施形態においては、ページIDに含まれる“page”を、“content”に置換することで、コンテンツIDを生成する。ただし、コンテンツIDの生成方法はこれには限られず、ページIDと同じ値を、コンテンツIDとして用いてもよい。ページIDとコンテンツIDを一意的に対応づけられるかぎり、どのような変換方法でコンテンツIDを生成してもよい。
次に、生成したコンテンツIDを、共有キャッシュ情報の各エントリのコンテンツIDと比較し、生成したコンテンツIDが共有キャッシュ情報に含まれるか否かを判断する(ステップS112)。生成したコンテンツIDと同じコンテンツIDをもつエントリが、共有キャッシュ情報に含まれている場合(ステップS112:Yes)、当該コンテンツIDに対応するページID(コンテンツIDを生成する元になったページID)に、当該エントリに応じた付加情報を設定し、ページIDと付加情報とを含むエントリを、付加情報付コンテンツリストに追加する(ステップS113)。付加情報は、本実施形態に係る第2情報に対応する。
より詳細には、付加情報(第2情報)は、コンテンツのデータサイズに基づいて算出される推定ダウンロード時間、オフライン再生可能フラグ、APID等である。例えば、これらのコンテンツIDと、推定ダウンロード時間(推定DL時間)と、オフライン再生可能フラグと、APIDとを含むエントリを、付加情報付コンテンツリストに追加する。推定ダウンロード時間は、例えば、データサイズを、帯域の伝送レートで割った値を用いることにより算出される。付加情報を含むエントリは、少なくともいずれかのアクセスポイントにキャッシュされているコンテンツに対応するエントリである。
一方で、生成したコンテンツIDと同じコンテンツIDが、共有キャッシュ情報に含まれない場合(ステップS112:No)、当該コンテンツIDのコンテンツに対して、ページIDのみを含むエントリを、付加情報付コンテンツリストへ追加する(ステップS114)。例えば、図7の一番下段に記載されているエントリのように、http://example.com/page/example4を、付加情報付コンテンツリストへ追加する。なお、このエントリには、付加情報(第2情報)、すなわち、推定ダウンロード時間、オフライン再生可能フラグ、APIDは含まれない。ただし、当該エントリに対応するコンテンツ(サーバー4にのみ存在するコンテンツ)に対しても、推定ダウンロード時間、オフライン再生不能フラグ(あるいは、オフライン再生可能な場合は、オフライン再生可能フラグ)等の情報を付加する構成も可能である。
次に、コンテンツリストに含まれる全てのエントリが抽出されたか否かを判断する(ステップS115)。コンテンツリストに含まれる全てのエントリが抽出された場合(ステップS115:Yes)、付加情報付コンテンツリストの生成を終了する。一方で、コンテンツリストに含まれる全てのエントリの抽出がされていない場合(ステップS115:No)、次のエントリを抽出し、上述した処理を繰り返す(ステップS110乃至ステップS114)。
付加情報付コンテンツリストの生成が完了すると、付加情報付コンテンツリストを応答としてユーザー端末2へと送信する。付加情報付コンテンツリストを受信したユーザー端末2は、受信した付加情報付コンテンツリストを、その画面に表示する。ユーザーは、画面に表示された付加情報付コンテンツリストを参照することで、コンテンツ毎に、オフライン再生可能か否か(キャッシュされているか否か)の判断や、ダウンロードに要する時間の予測等を行うことができる。
次に、コンテンツ提供動作について説明する。第1アクセスポイント1Aにおけるコンテンツ取得要求応答部12のコンテンツ提供部は、ユーザー端末2からページIDを含むコンテンツ取得要求を受信すると、ページIDに対応するコンテンツIDをもつコンテンツのキャッシュ状況を調べ、その結果に応じて、記憶部14、他のアクセスポイント、またはサーバー4からコンテンツを取得して、ユーザー端末2へコンテンツを送信する。これにより、ユーザー端末2からの取得要求に応答する。
図9は、コンテンツ提供動作の処理を示すフローチャートである。まず、第1アクセスポイント1Aは、ユーザー端末2からページIDを含むコンテンツ取得要求を受信する(ステップS120)。
次に、コンテンツ取得要求応答部12は、記憶部14に記憶されている共有キャッシュ情報を読み出し、コンテンツ取得要求されたページIDに対応するコンテンツIDと、共有キャッシュ情報とを比較し、当該コンテンツIDが共有キャッシュ情報に含まれるか否かを判断する(ステップS121)。
取得要求されたコンテンツIDが共有キャッシュ情報に含まれていない場合(ステップS121:No)、ページIDを元に、コンテンツの配信元となるサーバー4に対して取得要求を行い、コンテンツをサーバー4から取得する(ステップS122)。この際、取得したコンテンツを記憶部14にキャッシュし、キャッシュ情報を更新してもよい。
一方で、取得要求されたコンテンツIDが共有キャッシュ情報に含まれている場合(ステップS121:Yes)、共有キャッシュ情報の当該コンテンツIDを含むエントリを抽出し、抽出したエントリに、自アクセスポイントのAPIDが含まれるか否かを判断する(ステップS123)。すなわち、抽出したエントリのAPID項目に、第1アクセスポイント1AのAPIDである「AP1」が含まれるか否かを判断する。
抽出したエントリのAPID項目に、自アクセスポイントのAPIDが含まれている場合(ステップS123:Yes)、取得要求されたコンテンツIDに関連づけられたコンテンツを、自アクセスポイントの記憶部14から検索する(ステップS124)。
一方で、抽出したエントリのAPID項目に自アクセスポイントのAPIDが含まれていない場合(ステップS123:No)、APID項目に含まれているAPIDのうち、1つのAPIDを読み出す。そして、読み出したAPIDのアクセスポイントに対して、キャッシュコンテンツの取得要求を送信して、当該アクセスポイントからキャッシュコンテンツを取得する(ステップS125)。この際、抽出したエントリのAPID項目に複数のAPIDが含まれる場合、最もコンテンツ取得に要する時間が短いAPIDを選択してもよい。または、なるべく上位の回線の帯域を使わないようなアクセスポイントのAPIDを選択するようにしてもよい。また、取得したコンテンツを自アクセスポイントの記憶部14にキャッシュ(保持)し、キャッシュ情報を更新してもよい。あるいは、ある一定回数同じコンテンツの取得要求を受信した場合に、コンテンツをキャッシュするようにしてもよい。
コンテンツの提供準備が終了すると、コンテンツ取得要求応答部12は、コンテンツ取得要求に対する応答として、ユーザー端末2へコンテンツを送信する(ステップS126)。
このように、第1アクセスポイント1Aは、ユーザー端末2からコンテンツの取得要求を受信した場合、自アクセスポイントまたは他のいずれかのアクセスポイントにキャッシュされている場合は、キャッシュされているコンテンツを提供し、どのアクセスポイントにもキャッシュされていない場合には、サーバー4からコンテンツを取得して、ユーザー端末2へ提供する。
以上のように、本実施形態によれば、付加情報付コンテンツリストを提供することにより、ユーザーは、キャッシュされているコンテンツと、キャッシュされていないコンテンツを識別できるとともに、オフライン再生可否(ダウンロード可否)や、ダウンロードに必要な推定時間を判断できる。これらを考慮して、ユーザーは、ダウンロードの実行を行うか否かを決定したり、ダウンロードするコンテンツを決めたりすることができる。例えばダウンロードに要する推定時間が短いコンテンツが存在すれば、コンテンツをダウンロードしてから、Wifiスポットを立ち去ろうなどといった判断が可能となる。許容できるダウンロード推定時間のコンテンツがなければ、ダウンロードをしないで、Wifiスポットを立ち去ろうといった決定もできる。
また、本実施形態によれば、アクセスポイント間でキャッシュコンテンツに関する情報(キャッシュ情報)を事前に共有しておくことで、ユーザーから要求されたキャッシュコンテンツが他のアクセスポイントポイントにキャッシュされているかの確認のためのコストを削減できる。これにより、サーバー4とアクセスポイントとの間の上位回線の帯域を確保しつつ、ユーザーに高速にコンテンツを提供することが可能となる。
なお、1つのコンテンツに対して複数のビットレートのバージョンが存在していてもよい。この場合、ビットレートが異なる同一のコンテンツごとに、異なるコンテンツIDと異なるコンテンツサイズとをもつエントリを生成して、キャッシュ情報に追加する。これに応じて、付加情報付コンテンツリストでは、ビットレートが異なる同一コンテンツごとに、異なる推定ダウンロード時間を含むエントリが追加される。これにより、付加情報付コンテンツリストを参照したユーザーは、同一コンテンツであっても、ダウンロードに必要な推定時間を考慮して、ダウンロードするコンテンツの品質を決めることができる(同一のコンテンツでは、ダウンロードに必要な推定時間が長いほど、品質が高いといえる)。
また、共有キャッシュ情報には、必ずしも他のアクセスポイントのキャッシュ情報を反映させる必要は無く、共有キャッシュ情報の内容を、自アクセスポイントのキャッシュ情報にのみ基づく内容としてもよい。この場合、共有キャッシュ情報のAPID項目には、自アクセスポイントのAPIDのみが含まれることとなるための、APID項目を削除してもよい。
キャッシュ情報に変更が生じた場合に行うアクセスポイントの処理、例えば、新しいキャッシュコンテンツが追加された、又は、古いキャッシュコンテンツが削除された等の理由によりキャッシュ情報が更新された場合における処理について説明する。この場合、アクセスポイントは、更新後のキャッシュ情報を、周辺にある他のアクセスポイントへとブロードキャストにより送信する。他の例としては、キャッシュ情報を更新したタイミングではなく、所定の時間ごとに、最新のキャッシュ情報をブロードキャスト送信するようにしてもよい。
なお、上記のようなタイミングではなく、ユーザー端末2からコンテンツの取得要求がされたタイミングで、キャッシュ情報を送信してもよい。さらに別の例としては、他のアクセスポイントからキャッシュ情報の取得要求があったタイミングで、キャッシュ情報を送信するようにしてもよい。
(第1変形例)
付加情報付コンテンツリストに、コンテンツの料金情報を追加してもよい。料金情報を含む付加情報付コンテンツリストの例を図10に示す。コンテンツ毎に料金情報が追加されている。例えば、一番上のコンテンツの価格は10円、上から2番目のコンテンツは無料である。
アクセスポイントは、キャッシュ情報および共有キャッシュ情報を作成する際、キャッシュ情報および共有キャッシュ情報にコンテンツの料金情報も含める。サーバー4はコンテンツリストを提供する際は、コンテンツリストに、コンテンツの料金情報も含める。アクセスポイントでは、同一コンテンツに対して、サーバー4とは異なる料金、例えばサーバー4より易い価格(無料の場合を含む)を設定してもよい。アクセスポイントは、付加情報付コンテンツリストを作成する際、キャッシュコンテンツについては、サーバー4が提供するコンテンツリストの料金情報ではなく、自アクセスポイントの料金情報を採用し、どのアクセスポイントにもキャッシュされていないコンテンツについては、コンテンツリストの料金情報を採用する。なお、コンテンツの料金情報が、複数のアクセスポイント間で異なる場合も可能である。この場合、共有キャッシュ情報および付加情報付コンテンツリストを作成する際、同一コンテンツであっても、アクセスポイントごとにエントリを分けてもよい。
各アクセスポイントおよびサーバー4と通信可能な課金システムを設け、当該課金システムで、ユーザーの情報と、ユーザーへ提供されたコンテンツの情報をアクセスポイントから取得し、ユーザーに対する課金処理を行ってもよい。課金システムで、各アクセスポイントにキャッシュされているコンテンツの価格を管理してもよい。課金システムは、少なくともいずれか1つのアクセスポイントまたはサーバー4内に搭載されていてもよい。
(第2変形例)
付加情報付コンテンツリストに、コンテンツの提供に応じて付与するポイントの情報を追加してもよい。ポイント情報を含む付加情報付コンテンツリストの例を図11に示す。コンテンツ毎に、ポイント情報が追加されている。例えば、一番上のコンテンツのポイントは5ポイントであり、ユーザー端末に当該コンテンツを提供する際、ユーザーに5ポイントが付与される。サーバー4からダウンロードするコンテンツの場合は、ポイントは付与されない。ただし、サーバー4からダウンロードするコンテンツにも、ポイントを付与するようにしてもよい。
アクセスポイントは、キャッシュ情報および共有キャッシュ情報を作成する際、キャッシュ情報および共有キャッシュ情報にコンテンツのポイント情報も含める。また、付加情報付コンテンツリストを作成する際、付加情報付コンテンツリストにコンテンツのポイント情報も含める。なお、コンテンツのポイント情報が、複数のアクセスポイント間で異なる場合も可能である。この場合、共有キャッシュ情報および付加情報付コンテンツを作成する際、同一コンテンツであっても、アクセスポイントごとにエントリを分けてもよい。
各アクセスポイントと通信可能なポイント管理システムを設け、当該ポイント管理システムで、ユーザー毎のポイント管理を行ってもよい。ポイント管理システムは、少なくともいずれか1つのアクセスポイント内に搭載されていてもよい。ポイント管理システムでは、ユーザーの情報(ユーザーID等)と、ユーザーに提供されたコンテンツの情報をアクセスポイントから取得し、ユーザーに提供されたコンテンツに応じて、ユーザーにポイントを付与する。たまったポイント量に応じて、特定のサービス、または特定の商品をユーザーに提供してもよい。例えばたまったポイントの量に応じて、特定のボーナスコンテンツを提供してもよい。また、コンテンツが有料の場合に、コンテンツの代金の支払いの一部または全部を、ポイントで行ってもよい。この場合、本第2変形例を、第1変形例と組み合わせて、コンテンツ毎の価格の管理も行うようにしてもよい。
(第2実施形態)
本実施形態においては、キャッシュコンテンツのコンテンツIDの集合を、ブルームフィルタに集約し、ブルームフィルタの交換を行うことで、保持する情報および他のアクセスポイントとのやりとりする情報のサイズの削減を図るとともに、コンテンツがキャッシュされているか否かの判定を高速化する。以下、上述した第1実施形態と異なる部分を中心に、本実施形態について詳しく説明する。
図12は、本実施形態に係る通信装置を搭載したアクセスポイントの一例を示す機能ブロック図である。なお、図には、本実施形態の説明に必要な要素のみを示しており、他の要素を排除するものではない。
図12のアクセスポイントは、キャッシュフィルタリスト交換部(第1取得部)16と、キャッシュフィルタリスト生成部17と、共有キャッシュフィルタリスト生成部18と、コンテンツ取得要求応答部(第2取得部、コンテンツ提供部)12と、付加情報付コンテンツリスト生成部13と、記憶部14と、通信部15とを備えている。図2に示す第1実施形態に係るアクセスポイントとは、キャッシュ情報交換部10及び共有キャッシュ情報生成部11の代わりに、キャッシュフィルタリスト交換部16、キャッシュフィルタリスト生成部17及び共有キャッシュフィルタリスト生成部18とを備える点において相違する。図12においては、上記の各部は、独立した要素として構成されているが、これには限られず、複数の要素をまとめて1つの部を定義してもよい。
キャッシュフィルタリスト生成部17は、自装置のキャッシュ情報に基づいて、コンテンツサイズ範囲ごとに、ブルームフィルタであるキャッシュフィルタを生成する。各キャッシュフィルタに、対応するコンテンツサイズ範囲の情報等を関連づけたエントリを生成し、生成したエントリのリストであるキャッシュフィルタリストを生成する。キャッシュフィルタリストまたはキャッシュフィルタは、本実施形態に係る第1情報の一例に相当する。
キャッシュフィルタリスト交換部16は、他のアクセスポイントのキャッシュフィルタリストを取得するとともに、他のアクセスポイントへ自装置のキャッシュフィルタリストを送信する。
共有キャッシュフィルタリスト生成部18は、自アクセスポイント及び他のアクセスポイントのキャッシュフィルタリストに基づいて、共有キャッシュフィルタリストを生成する。
ブルームフィルタ、キャッシュフィルタリストおよび共有キャッシュフィルタリストの詳細は後述する。
図13(a)及び図13(b)は、本実施形態に係るキャッシュ情報の例を示す図である。例えば、図13(a)は、第1アクセスポイント1Aに保持されているキャッシュ情報であり、図13(b)は、第2アクセスポイント1Bに保持されているキャッシュ情報である。キャッシュ情報の説明に関しては、第1実施形態と同様であるので、詳しい説明は省略する。
図14(a)及び図14(b)は、キャッシュフィルタリストの例を示す図である。キャッシュフィルタリストの各エントリは、キャッシュフィルタと、コンテンツサイズ範囲の情報とを備えている。図14(a)は、第1アクセスポイント1Aのキャッシュフィルタリストを示し、図13(a)のキャッシュ情報から生成されたものである。図14(b)は、第2アクセスポイント1Bのキャッシュフィルタリストを示し、図13(b)のキャッシュ情報から生成されたものである。
キャッシュフィルタは、ブルームフィルタアルゴリズムにより生成されたブルームフィルタである。ブルームフィルタは一定のビット長を有し、初期値はすべてのビットが0になっている。ブルームフィルタには、該当するコンテンツサイズ範囲に含まれるサイズをもつコンテンツのコンテンツIDを登録する。登録は、コンテンツのコンテンツIDを1つまたは複数のハッシュ関数により1つまたは複数のハッシュ値に変換し、1つまたは複数のハッシュ値に対応する1つまたは複数のビットを1にする(既に1の場合は、1を維持する)ことで行う。これにより、当該コンテンツIDをキャッシュフィルタに登録する。このように、キャッシュフィルタは、コンテンツサイズ範囲ごとに用意され、各キャッシュフィルタに、対応するコンテンツ範囲に属するコンテンツのコンテンツIDを集約する。
例えば、図14(a)に示すキャッシュフィルタリストにおいて、フィルタ1は、コンテンツサイズが10,000,000Byte以下となるコンテンツのコンテンツID(図13(a)のキャッシュ情報における上側2つのコンテンツID)を登録したブルームフィルタである。同様に、フィルタ2は、コンテンツサイズが10,000,000Byteより大きく200,000,000Byte以下となるコンテンツ(図13(a)のキャッシュ情報における下側2つのコンテンツID)のコンテンツIDを登録したブルームフィルタである。すなわち、図14(a)に示すキャッシュフィルタは、図13(a)に示すキャッシュ情報をコンテンツサイズ範囲により分類し、分類ごとに、複数のコンテンツIDをブルームフィルタにより圧縮したものであるといえる。
図15は、アクセスポイントにおいてキャッシュ情報からキャッシュフィルタリストを生成する処理の動作を示すフローチャートである。この図15に示す処理は、特に断りの無い限り、各アクセスポイントにおいてキャッシュフィルタリスト生成部17が行う。ここでは、キャッシュフィルタリストの生成は、例えば他のアクセスポイントからキャッシュフィルタリストの取得要求を受けた場合に行う場合を想定する。以下、第1アクセスポイント1Aのキャッシュフィルタリスト交換部16が、第2アクセスポイント1Bのキャッシュフィルタリスト交換部16に対してキャッシュフィルタリストの取得要求を行った場合について説明する。なお、一定時間内に複数のアクセスポイントから取得要求があった場合には、既に生成されているキャッシュフィルタリストを再利用するようにしてもよい。
まず、第2アクセスポイント1Bのキャッシュフィルタリスト生成部17は、第2アクセスポイント1Bのキャッシュフィルタリストを初期化する(ステップS200)。例えば、キャッシュフィルタリストの各キャッシュフィルタ(ブルームフィルタ)の全ビットを「0」とすることにより初期化が行われる。
次に、キャッシュフィルタリスト生成部17は、記憶部14から第2アクセスポイント1Bのキャッシュ情報を取得する(ステップS201)。さらに、取得したキャッシュ情報から、エントリを1つ抽出する(ステップS202)。
次に、抽出したエントリのコンテンツIDを引数として、1又は複数のハッシュ関数を計算し、1又は複数のハッシュ値を算出する(ステップS203)。ここで、ハッシュ関数は、一般的に用いられるものであってもよいし、独自のものであってもよい。ハッシュ関数の例としては、MD5、SHA−1、SHA−2、SHA−3等があるがこれらには限られない。ハッシュ値は、できる限り衝突が起こらないことが好ましい。アクセスポイントの性能や、ハッシュ値の計算の速度などを考慮して、いずれのハッシュ関数を使用するかを選択してもよい。なお、使用する1又は複数のハッシュ関数は、各アクセスポイントにおいて同一であるとする。
次に、各キャッシュフィルタのコンテンツサイズ範囲と、抽出したエントリのコンテンツサイズとを比較し、コンテンツサイズが属するコンテンツサイズ範囲のキャッシュフィルタを特定する(ステップS204)。
次に、抽出したエントリのコンテンツIDを、特定したキャッシュフィルタに登録する(ステップS205)。具体的には、コンテンツIDから1つまたは複数のハッシュ関数により1つまたは複数のハッシュ値を計算し、特定したキャッシュフィルタのビット列において、計算した1つまたは複数のハッシュ値に対応するビットを1にする。
次に、キャッシュ情報中の全てのエントリが抽出されたか否かを判断する(ステップS206)。全てのエントリが抽出された場合(ステップS206:Yes)、キャッシュフィルタリストの生成を終了する。一方で、全てのエントリの抽出が終了していない場合(ステップS206:No)、ステップS202乃至ステップS205の処理を繰り返し行うことにより、全てのエントリのコンテンツIDを、それぞれ該当するキャッシュフィルタに登録する。
第2アクセスポイント1Bのキャッシュフィルタリスト交換部16は、上述のように生成したキャッシュフィルタリストを、第1アクセスポイント1Aへ送信する。また、この場合、第1アクセスポイント1Aのキャッシュフィルタリスト生成部17も同様に第1アクセスポイント1Aのキャッシュフィルタリストを生成し、第2アクセスポイント1Bのキャッシュフィルタリスト交換部16へ、第1アクセスポイント1Aのキャッシュフィルタリストを送信するようにしてもよい。これらの動作の結果、アクセスポイント1Aおよびアクセスポイント1B間において、キャッシュフィルタリストの交換が行われる。それぞれのアクセスポイントにおいて受信したキャッシュフィルタリストは、それぞれのアクセスポイントの記憶部14に格納および保持される。また、この際、各キャッシュフィルタリストがいずれのアクセスポイントに対応するかを示すAPIDも紐付けて記憶する。
各々のキャッシュフィルタリストを交換した後、各アクセスポイントの共有キャッシュフィルタリスト生成部18は、自アクセスポイントの生成したキャッシュフィルタリスト及び受信した他アクセスポイントの生成したキャッシュフィルタリストに基づいて共有キャッシュフィルタリストを生成する。生成した共有キャッシュフィルタリストは、各アクセスポイントの記憶部14に格納および保持される。
図16は、共有キャッシュフィルタリストの一例を示す図である。例えば図16に示すように、共有キャッシュフィルタリストの各エントリは、APIDと、キャッシュフィルタと、コンテンツサイズ範囲の情報とを含む。APIDは、各キャッシュフィルタがどのアクセスポイントのキャッシュフィルタであるかを示す。すなわち、APIDは、キャッシュフィルタに登録されているコンテンツIDが示すコンテンツがキャッシュされているアクセスポイントを示す識別子である。キャッシュフィルタは、上述したように各アクセスポイントのキャッシュフィルタリスト生成部17により生成されたキャッシュフィルタ(ブルームフィルタ)である。
例えば、フィルタ1は、第1アクセスポイント1Aが保持しているキャッシュコンテンツのうち、コンテンツサイズが10,000,000Byte以下のコンテンツのコンテンツIDを登録しているブルームフィルタである。フィルタ4は、第2アクセスポイント1Bが保持しているキャッシュコンテンツのうち、コンテンツサイズが400,000,000Byte以下のコンテンツのコンテンツIDを保持するフィルタである。あるコンテンツIDが、ブルームフィルタに登録されているか否かの検証は、当該コンテンツIDの1又は複数のハッシュ値に対応するビットがブルームフィルタですべて1になっているかを調べることで行う。すべて1になっている場合は、当該コンテンツIDはブルームフィルタに登録されており、1つでも0になっているビットがある場合は、ブルームフィルタに登録されていないと判断する。
図17は、アクセスポイントにおける共有キャッシュフィルタリストの生成処理の一例を示すフローチャートである。各アクセスポイントの共有キャッシュフィルタリスト生成部18は、下記に説明する処理フローにより、共有キャッシュフィルタリストを生成する。以下の説明では、キャッシュフィルタリスト内のキャッシュフィルタをフィルタY、共有キャッシュフィルタリスト内のキャッシュフィルタをフィルタXと記述する場合がある。
まず、共有キャッシュフィルタリスト生成部18は、記憶部14に記憶されているキャッシュフィルタリストのうち1つを取得する(ステップS210)。例えば、図14(a)及び図14(b)に示すキャッシュフィルタリストが記憶部14に記憶されている場合に、図14(a)に示すキャッシュフィルタリストを取得する。
次に、取得したキャッシュフィルタリストから、1つのエントリを抽出する(ステップS211)。例えば、取得した図14(a)に示すキャッシュフィルタリストから、フィルタ1のエントリ、すなわち、APIDが「AP1」であり、なおかつコンテンツサイズが10,000,000Byte以下のコンテンツに係るキャッシュフィルタのエントリを抽出する。
次に、抽出したエントリのコンテンツサイズを、1つまたは複数のコンテンツサイズ範囲のそれぞれと比較し、当該コンテンツサイズが属するコンテンツ範囲を特定する(ステップS212)。当該1つまたは複数のコンテンツサイズ範囲は、アクセスポイントごとに定義されてもよい。また、本例では、共有キャッシュフィルタリストにおけるコンテンツサイズ範囲(図16参照)と、キャッシュフィルタリストのコンテンツサイズ範囲(図14参照)とは、各アクセスポイントで同じであるとする。ただし、共有キャッシュフィルタリストにおけるコンテンツサイズ範囲は、キャッシュフィルタリストのコンテンツサイズ範囲を包含するより広い範囲でもよい。たとえば共有キャッシュフィルタリストにおけるアクセスポイント1Aのコンテンツサイズ範囲が、0より大きく300,000,000Byte以下の1つの範囲のみでもよい。
次に、ステップS212で特定したコンテンツサイズ範囲に対応するキャッシュフィルタ(フィルタX)を、上記抽出したエントリのキャッシュフィルタ(フィルタY)と論理和をとることで、更新する(ステップS213)。例えば、共有キャッシュフィルタリストにおいてコンテンツサイズが10,000,000Byte以下というフィルタ1(フィルタX)が準備されている場合、図14(a)に示すフィルタ1(フィルタY)は、コンテンツサイズが10,000,000Byte以下のフィルタであるので、当該フィルタXに適合する。そこで、図14(a)に示すフィルタ1(フィルタY)と、当該フィルタ(フィルタX)の論理和を演算することにより、当該フィルタ1(フィルタX)に図14(a)に示すフィルタ1(フィルタY)の情報を書き込む。書き込まれたフィルタ1(フィルタX)は、例えば、図16に示すフィルタ1である。また、図14(a)に示すフィルタ1は、第1アクセスポイント1Aに係るフィルタであるので、APID項目(図16参照)にはAP1を記載する。
次に、キャッシュフィルタリストから全てのエントリが抽出されたか否かを判断する(ステップS214)。全てのエントリが抽出されていない場合(ステップS214:No)、当該キャッシュフィルタリストから新たにエントリを抽出する。そして、共有キャッシュフィルタリストにおいて、当該エントリが満足するコンテンツサイズ範囲に対応するキャッシュフィルタ(フィルタX)を特定し、特定したフィルタXへ、抽出したエントリのキャッシュフィルタ(フィルタY)を書き込む(ステップS211乃至ステップS213)。
全てのエントリが抽出されている場合(ステップS214:Yes)、次に、全てのキャッシュフィルタリストが取得されたか否かを判断する(ステップS215)。全てのキャッシュフィルタリストが取得されていない場合(ステップS215:No)、取得されていないアクセスポイントのキャッシュフィルタリストを記憶部14から取得し、取得したキャッシュフィルタリストの各エントリのキャッシュフィルタ(フィルタY)を、共有キャッシュフィルタリストの該当するエントリのキャッシュフィルタ(フィルタX)へと書き込む(ステップS210乃至ステップS214)。全てのアクセスポイントのキャッシュフィルタリストが取得された場合(ステップS215:Yes)、共有キャッシュフィルタリストの生成を終了する。
上述した処理は、2つのアクセスポイントの場合についての処理であるが、アクセスポイントの数は2つに限られず、3以上のアクセスポイントが存在する場合においても同様に処理を行うことが可能である。すなわち、各アクセスポイントが自アクセスポイント以外のアクセスポイントとキャッシュフィルタの情報を交換することにより、全てのアクセスポイントとキャッシュフィルタリストを交換することが可能となる。また、キャッシュフィルタリストを交換する際には、各アクセスポイントが自アクセスポイントのキャッシュフィルタリストを送信するだけではなく、他のアクセスポイントのキャッシュフィルタストについても送信するようにしてもよい。
また、他の方法として、各アクセスポイントが他のアクセスポイントに対してキャッシュフィルタリストをブロードキャストすることにより、キャッシュフィルタリストを交換してもよい。なお、ブロードキャストを行うタイミングは、他のアクセスポイントが新たに加わったときでもよいし、周期的に行ってもよいし、キャッシュフィルタリストに変更があったとき、すなわち、保持しているキャッシュコンテンツの削除、又は、追加があったときでもよい。また、前述した方法と組み合わせて、キャッシュフィルタリストの交換を行ってもよい。
図17のフローチャートで説明した具体例では、共有キャッシュフィルタリストで使用する各アクセスポイントのコンテンスサイズ範囲が、各アクセスポイントのキャッシュフィルタリストで使用するコンテンツサイズ範囲と一致する。このような場合は、これらのアクセスポイントのキャッシュフィルタリストの集合を、共有キャッシュフィルタリストとして扱うことも可能である。
次に、付加情報付コンテンツリストの提供処理について説明する。ユーザー端末2と第1アクセスポイント1Aとの間で接続が確立されており、第1アクセスポイント1Aおよび第2アクセスポイント1B間でキャッシュフィルタリストの交換が完了し、各々の記憶部14に共有キャッシュフィルタリストが保存されているとする。なお、第1アクセスポイント1Aとユーザー端末2間にて、ユーザー端末2が使用可能な空き帯域があらかじめ設定されているとする。
第1アクセスポイント1Aにおけるコンテンツ取得要求応答部12の第2取得部は、端末から付加情報付コンテンツリストの取得要求を受信すると、サーバー4に対して、コンテンツリストの取得要求を送信する。コンテンツリストの一例を図18に示す。コンテンツリストは、1つ以上のエントリから構成され、各エントリは、コンテンツのページ、例えば、URLを示すページIDを含む。
サーバー4は、第1アクセスポイント1Aからコンテンツリストの取得要求を受信すると、要求にしたがいコンテンツリストを生成して、第1アクセスポイント1Aへ送信する。第1アクセスポイント1Aのコンテンツ取得要求応答部12は、コンテンツリストを受信すると、受信したコンテンツリストを付加情報付コンテンツリスト生成部13へ渡す。
付加情報付コンテンツリスト生成部13は、コンテンツリストを受け取ると、記憶部14から共有キャッシュフィルタリストを読み出し、コンテンツリストと共有キャッシュフィルタリストとから、付加情報付コンテンツリストを生成する。以下に、図19及び図20を参照して、付加情報付コンテンツリストの生成方法の一例を説明する。
図19は、付加情報付コンテンツリストの一例を示す図である。この図19に示すように、付加情報付コンテンツリストは、キャッシュコンテンツに対しては、例えば、ページIDと、コンテンツの推定ダウンロード時間と、オフライン再生可能フラグと、APIDとを含む1つ以上のエントリを有する。キャッシュコンテンツ以外のコンテンツに対しては、ページIDを含むエントリを有する。コンテンツの推定ダウンロード時間と、オフライン再生可能フラグと、APIDは、本実施形態に係る第2情報の一例に相当する。
図20は、付加情報付コンテンツリスト生成部13が付加情報付コンテンツリストを生成する際の処理を示すフローチャートである。まず、付加情報付コンテンツリスト生成部13は、コンテンツリストから1つのエントリを抽出する(ステップS220)。例えば、図18に示す、http://www.example.com/page/example1というページIDを有するエントリを抽出する。
次に、このページIDから、コンテンツIDを生成する(ステップS221)。本実施形態においては、ページIDに含まれる“page”を、“content”に置換することで、コンテンツIDを生成する。ただし、コンテンツIDの生成方法はこれには限られず、ページIDそのものを、コンテンツIDとしてもよい。ページIDとコンテンツIDを一意的に対応づけられるかぎり、どのような変換方法でコンテンツIDを生成してもよい。
次に、生成したコンテンツIDから1つまたは複数のハッシュ関数により、1つまたは複数のハッシュ値を生成する(ステップS222)。ここで、ハッシュ関数は、一般的に用いられるものであってもよいし、独自のものであってもよい。使用するハッシュ関数は、上記で説明したように、各アクセスポイントにおいて同一のハッシュ関数又は同一のハッシュ関数のセットを使用する。
次に、生成した1つまたは複数のハッシュ値に基づき、上記コンテンツIDが各キャッシュフィルタに登録されているかを検証する。つまり、生成した1つまたは複数のハッシュ値に対応するビットがすべて1になっているキャッシュフィルタが、共有キャッシュフィルタリスト内に存在するか否かを判断する(ステップS223)。
そのようなキャッシュフィルタが存在する場合(ステップS223:Yes)、当該コンテンツIDに対応するページIDと、当該キャッシュフィルタに対応するコンテンツサイズ範囲から推定したダウンロード時間と、オフライン再生可能フラグと、当該キャッシュフィルタに対応するAPID(当該コンテンツIDのコンテンツをキャッシュしているアクセスポイントのAPID)とを含むエントリを、付加情報付コンテンツリストに追加する(ステップS224)。
ダウンロード時間の推定方法は、第1実施形態と同様の方法を用いればよい。ダウンロード時間を推定する際、コンテンツサイズ範囲の上限値をコンテンツサイズとみなしてもよいし、当該上限値の80%など特定の割合の値をコンテンツサイズとみなしてもよいし、ダウンロード時間をコンテンツサイズ範囲に合わせて、時間の範囲によって表現してもよい。
一方で、そのようなキャッシュフィルタが共有キャッシュフィルタリスト内に含まれない場合(ステップS223:No)、生成したコンテンツIDに対応するページID(コンテンツIDを生成するもとになったページID)を含むエントリを、付加情報付コンテンツリストへ追加する(ステップS225)。例えば、図19の一番下段に記載されているエントリのように、http://www.example.com/page/example8を、付加情報付コンテンツリストへ追加する。なお、推定ダウンロード時間、オフライン再生可能フラグ、APIDは、当該エントリに含まれない。ただし、推定ダウンロード時間や、オフライン再生不可フラグ(あるいは、オフライン再生可能な場合は、オフライン再生不可フラグ)をエントリに追加してもよい。
次に、コンテンツリストに含まれる全てのエントリが抽出されたか否かを判断する(ステップS226)。コンテンツリストに含まれる全てのエントリが抽出された場合(ステップS226:Yes)、付加情報付コンテンツリストの生成を終了する。一方で、コンテンツリストに含まれる全てのエントリの抽出がされていない場合(ステップS226:No)、次のエントリを抽出し、上述した処理を繰り返す(ステップS220乃至ステップS225)。
付加情報付コンテンツリストの生成が完了すると、付加情報付コンテンツリストを応答としてユーザー端末2へと送信する。付加情報付コンテンツリストを受信したユーザー端末2は、受信した付加情報付コンテンツリストを、その画面に表示する。ユーザーは、画面に表示された付加情報付コンテンツリストを参照することで、コンテンツ毎に、オフライン再生可能か否か(ダウンロード可能か否か)の判断や、ダウンロードに要する時間の予測等を行うことができる。なお、ユーザーは、ページID以外の項目がなにも存在しないコンテンツはサーバーからダウンロードする必要があるコンテンツであり、ページID以外の項目も存在するコンテンツは、アクセスポイントにキャッシュされていると判断できる。
次に、コンテンツ提供動作について説明する。第1アクセスポイント1Aは、ユーザー端末2からページIDを含むコンテンツ取得要求を受信すると、ページIDに対応するコンテンツIDを算出し、当該コンテンツIDから、コンテンツのキャッシュ状況を調べる。その結果に応じて、コンテンツを記憶部14、他のアクセスポイント、またはサーバー4から取得して、ユーザー端末2へコンテンツを送信する。これにより、ユーザー端末2からの取得要求に応答する。
図21は、コンテンツ提供動作の処理を示すフローチャートである。まず、第1アクセスポイント1Aは、ユーザー端末2からページIDを含むコンテンツ取得要求を受信する(ステップS230)。
次に、コンテンツ取得要求応答部12のコンテンツ提供部は、受信したページIDからコンテンツIDを算出し、コンテンツIDから1つまたは複数のハッシュ値を算出する(ステップS231)。ハッシュ値の算出には、上述したものと同一のハッシュ関数又は同一のハッシュ関数の組を使用する。
次に、記憶部14に記憶されている共有キャッシュフィルタリスト内の各キャッシュフィルタを読み出し、ハッシュ値と各キャッシュフィルタとを比較し、当該ハッシュ値に対応するビットがすべて1になっているキャッシュフィルタが存在するかを判断する(ステップS232)。すなわち、各キャッシュフィルタに対して当該コンテンツIDが登録されているかを検証する。
そのようなキャッシュフィルタが存在しない場合(ステップS232:No)、ページIDを元に、コンテンツの配信元となるサーバーに対して取得要求を行い、コンテンツをサーバー4から取得する(ステップS233)。この際、第1アクセスポイント1Aは、当該コンテンツを記憶部14にキャッシュし、キャッシュフィルタリストを更新してもよい。
一方で、そのようなキャッシュフィルタが1つ以上存在する場合、すなわち、上記ハッシュ値に対応するビットがすべて1になっているキャッシュフィルタが、共有キャッシュフィルタリストに1つ以上含まれている場合(ステップS232:Yes)、当該1つ以上のキャッシュフィルタに対応するAPIDの中に、自アクセスポイントのAPIDに一致するものがあるか否かを判断する(ステップS234)。本例では、APIDの中に、第1アクセスポイント1AのAPIDである「AP1」が含まれているか否かを判断する。
自アクセスポイントのAPIDが含まれている場合(ステップS234:Yes)、コンテンツIDに対応するキャッシュコンテンツを自アクセスポイントの記憶部14から検索する(ステップS235)。
一方で、自アクセスポイントのAPIDが含まれていない場合(ステップS234:No)、当該1つ以上のキャッシュフィルタに対応するAPIDのうち、1つのAPIDを読み出し、読み出したAPIDのアクセスポイントに対して、キャッシュコンテンツの取得要求を送信して、当該アクセスポイントからキャッシュコンテンツを取得する(ステップS236)。この際、読み出し対象となるAPIDが複数存在する場合、最もコンテンツ取得に要する時間が短いAPIDを選択してもよい。または、なるべく上位の回線の帯域を使わないようなアクセスポイントのAPIDを選択するようにしてもよい。また、取得したコンテンツを自アクセスポイントの記憶部14にキャッシュしてもよい。この際、キャッシュフィルタリストを更新してもよい。あるいは、ある一定回数同じコンテンツの取得要求を受信した場合に、コンテンツをキャッシュするようにしてもよい。
コンテンツの提供準備が終了すると、第1アクセスポイント1Aは、コンテンツ取得要求に対する応答として、ユーザー端末2へコンテンツを送信する(ステップS237)。
以上のように、本実施形態によれば、ブルームフィルタを用いることにより、ユーザー端末2からコンテンツの取得要求があった場合に、要求されたコンテンツがどのアクセスポイントにキャッシュされているかを、高速に判定することが可能となる。また、アクセスポイント間で送受信する情報量を低減できる。
なお、上述した第1実施形態と同様に、1つのコンテンツに対して複数のビットレートのバージョンが存在していてもよい。この場合、第1実施形態と同様に、キャッシュフィルタリストのエントリの構成を変更してもよい。また、共有キャッシュフィルタリスト(図16参照)は、必ずしも他のアクセスポイントに関する情報を保持しておく必要は無く、自アクセスポイントの情報のみを保持するようにしてもよい。この場合、共有キャッシュフィルタリストのAPID項目に含まれるAPIDは、自アクセスポイントのAPIDのみとなるため、省略してもよい。
キャッシュ情報に変更があった場合のアクセスポイントの処理、例えば、新しいキャッシュコンテンツが追加された、又は、古いキャッシュコンテンツが削除された等の理由によりキャッシュ情報が更新された場合における処理について説明する。この場合、更新されたキャッシュ情報に基づき、キャッシュフィルタリストを更新する。そして、更新後のキャッシュフィルタリストを、他のアクセスポイントへとブロードキャストにより送信する。キャッシュフィルタリストを更新したタイミングではなく、所定の時間ごとに、最新のキャッシュフィルタリストをブロードキャスト送信するようにしてもよい。
なお、上記のようなタイミングではなく、ユーザー端末2からコンテンツの取得要求がされたタイミングで、キャッシュフィルタリストを送信してもよい。さらに別の例としては、他のアクセスポイントからキャッシュフィルタリストの取得要求があったタイミングで、キャッシュフィルタリストを送信するようにしてもよい。
(第3実施形態)
前述した第1および第2実施形態では、本発明の実施形態に係る通信装置をアクセスポイントに搭載したが、当該通信装置の機能の一部または全部を、コントローラ3またはサーバー4に搭載することも可能である。または、当該通信装置の機能の一部または全部を備えた単独の装置を実現することも可能である。
第1の例として、当該通信装置の機能の一部または全部を、コントローラ3に集約する例を示す。コントローラ3が、共有キャッシュ情報生成部11を備え、共有キャッシュ情報を生成する例を示す。この場合、各アクセスポイントは、サーバー4からのプッシュ通知や、コントローラ3からのキャッシュ情報の取得要求により、コントローラ3へキャッシュ情報を送信する。
コントローラ3は、自ノードに属する全てのアクセスポイントからキャッシュ情報を受信し、これらのキャッシュ情報から共有キャッシュ情報を生成する。そして、コントローラ3は、全てのアクセスポイントへ、作成した共有キャッシュ情報を送信する。この共有キャッシュ情報は、コントローラ3から各アクセスポイントへユニキャストで送信してもよいし、ブロードキャストにより全てのアクセスポイントへと一括して送信してもよい。
同様にして、第2実施形態の共有キャッシュフィルタリストをコントローラ3で生成してもよい。各アクセスポイントは、キャッシュ情報の代わりにキャッシュフィルタリストを送信し、コントローラ3は、各アクセスポイントから受信したキャッシュフィルタリストから、共有キャッシュフィルタリストを生成して、各アクセスポイントに送信してもよい。
または、コントローラ3が、各アクセスポイントのキャッシュ情報から、キャッシュフィルタリストを作成して、各アクセスポイントにキャッシュフィルタリストを送信するようにしてもよい。この場合、全てのアクセスポイントのキャッシュフィルタリストを受信した各アクセスポイントは、これらのキャッシュフィルタリストを元に、共有キャッシュフィルタリストを生成する。また、共有キャッシュフィルタリストの生成は、コントローラ3が行ってもよい。
以上のように、第1および第2実施形態におけるアクセスポイントの機能の一部を、コントローラ3に集約することにより、処理を一元化することが可能となり、各アクセスポイントにおける負荷を軽減することが可能となる。
第2の例として、当該通信装置の機能の一部または全部を、サーバー4に集約する例を示す。サーバー4は、コントローラ3に、必要な情報(キャッシュ情報またはキャッシュフィルタリスト等)の取得要求を送信して、コントローラ3は、各アクセスポイントから当該情報を取得して、サーバー4に送信する。あるいは、サーバー4からの要求を受けることなく、コントローラ3が自発的に情報を収集して、サーバー4に送信してもよい。サーバー4は、上述した第1の例におけるコントローラ3と同様に、共有キャッシュ情報の生成、または、共有キャッシュフィルタリストの生成等を行い、生成した共有キャッシュ情報または共有キャッシュフィルタリストを、コントローラ3を介して各アクセスポイントに配布する。
第3の例として、当該通信装置の機能の一部または全部を備えた単独の装置を実現する例を示す。
図21は、第3実施形態に係る通信システムの一例を示す図である。アクセスポイント1A、1Bに通信装置6が、有線または無線で接続されている。通信装置6は、第1または第2実施形態のアクセスポイントが搭載していた通信装置と同じ機能を有する。通信装置6は、アクセスポイント1A、1Bと通信可能である。この場合、アクセスポイント1A、1Bは、一般的な無線LANのアクセスポイントの機能を有すればよい。第1および第2実施形態でアクセスポイントが搭載していた機能を通信装置6に集約することで、処理を一元化することが可能となり、各アクセスポイントにおける負荷を軽減することが可能となる。または、通信装置6には、前述した第1の例または第2の例でコントローラ3またはサーバー4に集約するとしていた機能を搭載し、残りの機能はアクセスポイントに搭載してもよい。
尚、各実施形態の通信装置(アクセスポイント、コントローラまたはサーバー)は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現可能である。すなわち、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより、通信装置が備える各機能を実現出来る。このとき、通信装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現することや、各種の記憶媒体に記憶、あるいはネットワークを介して上記のプログラムを配布、このプログラムをコンピュータ装置に適宜インストールすることで実現が出来る。また、通信装置が備える記憶部は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはCD−R、CD−RW、DVD−RAM、DVD−Rなどの記憶媒体などを適宜利用して実現することができる。
本実施形態で用いられる用語は、広く解釈されるべきである。例えば用語“プロセッサ”は、汎用目的プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラ、マイクロコントローラ、状態マシンなどを包含してもよい。状況によって、“プロセッサ”は、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理回路(PLD)などを指してもよい。“プロセッサ”は、複数のマイクロプロセッサのような処理装置の組み合わせ、DSPおよびマイクロプロセッサの組み合わせ、DSPコアと協働する1つ以上のマイクロプロセッサを指してもよい。
別の例として、用語“メモリ”は、電子情報を格納可能な任意の電子部品を包含してもよい。“メモリ”は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、プログラム可能読み出し専用メモリ(PROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能PROM(EEPROM)、不揮発性ランダムアクセスメモリ(NVRAM)、フラッシュメモリ、磁気または光学データストレージを指してもよく、これらはプロセッサによって読み出し可能である。プロセッサがメモリに対して情報を読み出しまたは書き込みまたはこれらの両方を行うならば、メモリはプロセッサと電気的に通信すると言うことができる。メモリは、プロセッサに統合されてもよく、この場合も、メモリは、プロセッサと電気的に通信していると言うことができる。
また、用語“ストレージ”は、磁気技術、光学技術、または不揮発性メモリを利用して、永久的にデータを記憶できるに任意の装置を包含してもよい。例えば、ストレージは、HDD、光学ディスク、SSD等でもよい。
上記に、本発明の一実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。