以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.配信システム、サーバシステム
図1に本実施形態により実現されるコンテンツの配信システム(ノード管理システム)やサーバシステムの構成例を示す。
図1の配信システムは、サーバシステム100と、サーバシステム100のクライアントとなる複数のノードN1〜N10を有する配信網10を含む。なお、配信システムは図1の構成に限定されず、他の構成要素を追加するなどの種々の変形実施が可能である。
配信網10(ネットワーク、通信回線)は、例えばインターネットを利用した通信路であり、直接接続のための専用線(専用ケーブル)やイーサネット(登録商標)等によるLANの他、電話通信網やケーブル網等の通信網を含むことができる。また通信方法については有線/無線を問わない。
配信網10は、相互に通信接続される複数のノードN1〜N10を含む。各ノードは、インターネット等への接続機能を有するクライアント端末により構成される。このクライアント端末は、例えば家庭用ゲーム装置、携帯型ゲーム装置、PC(パーソナルコンピュータ)、携帯型情報端末等により実現され、図示しない操作部、処理部、通信制御部、記憶部、情報記憶媒体用のインターフェース等を有する。
図1に示すように、配信網10は、コンテンツ配信元(サーバシステム、コンテンツ配信部)から直列接続(接続)される基幹ノードN1、N3、N6、N10の列である基幹ノード列KNLを含む。即ち、これらの基幹ノードN1、N3、N6、N10は、サーバシステム100から下方向(第1の方向)に一列に直列接続される。
また配信網10は、基幹ノード列KNLの各基幹ノード(起点ノード)に直列接続(接続)される分岐ノードの列BNL1、BNL2、BNL3を含む。具体的には、分岐ノード列BNL1を構成する分岐ノードN2、N4、N7は、基幹ノードN1に対して直列接続される。即ち、分岐ノードN2、N4、N7は、基幹ノードN1から、横方向(第1の方向に直交する第2の方向)に分岐することなく一列に直列接続される。同様に、分岐ノード列BNL2を構成する分岐ノードN5、N8は、基幹ノードN3に対して直列接続され、分岐ノード列BNL3を構成する分岐ノードN9は、基幹ノードN6に対して直列接続される。
このように図1の単純分岐型の配信網10では、基本となる直列接続された基幹ノードN1、N3、N6、N10が設けられると共に、N1、N3、N6、N10の各基幹ノードを起点として、分岐ノードN2、N4、N7の列やN5、N8の列やN9の列が、一列に直列接続されている。なおN1〜N10の各ノードの番号は、コンテンツの配信順番号(ノードの追加順番)を表している。具体的には、起点となるノードN1(上位ノード)は、そのコンテンツ配信元であるサーバ(サーバシステム、コンテンツ配信部)からコンテンツを受信する。そして受信したコンテンツを中継して、そのコンテンツ配信先ノードN2、N3(下位ノード)に送信(再送)する。ノードN2(上位ノード)は、そのコンテンツ配信元ノードN1からコンテンツを受信すると、そのコンテンツを中継して、そのコンテンツ配信先ノードN4(下位ノード)に送信する。同様にノードN3(上位ノード)も、そのコンテンツ配信元ノードN1からコンテンツを受信すると、そのコンテンツを中継して、そのコンテンツ配信先ノードN5、N6(下位ノード)に送信する。
なお本実施形態の配信網10は図1の構成に限定されず、種々の変形実施が可能である。例えば図2(A)、図2(B)に配信網の他の構成例を示す。
図2(A)は、順序型配信網の例である。図2(A)では、コンテンツ配信元であるサーバに対してノードN1、N2、N3が配信順(ノードの追加順番)に直列接続されている。即ち図2(A)では、ノードN1は、サーバからコンテンツを受信すると、受信したコンテンツを中継してノードN2に送信する。ノードN2は、ノードN1からコンテンツを受信すると、受信したコンテンツを中継してノードN3に送信する。
そして図2(A)の順序型配信網では、ノードN2であるクライアントが、視聴終了や回線切断により配信網から除外されると、その前後のノードであるN1とN3とを接続することで、最小限の処理負荷(処理コスト)で配信網を維持できるという利点がある。但し、図2(A)の順序型配信網では、配信網のノード数が増えてくると、末端のノードに対してのコンテンツ配信が開始するまでに、長いタイムラグが発生してしまうという問題点もある。例えばノードN2が、ノードN1からコンテンツを受信して、受信したコンテンツを中継(リレー)してノードN3に送信するまでに、データのバッファリングや配信準備等のために一定の中継時間を要する。このため、末端のノードでは、この中継時間がノード数分だけ積算されたタイムラグが発生してしまい、これによりコンテンツの視聴開始時間が遅れ、ユーザの待ち時間が長くなってしまう。
図2(B)は二分木型配信網の例である。この二分木型配信網では、例えばサーバにはノードN1、N2が接続され、ノードN1にはノードN3、N4が接続され、ノードN2にはノードN5、N6が接続されるというように各ノードが1入力・2分岐のツリー構造になっている。この二分木型配信網では、図2(A)の配信網に比べて、末端のノードでの配信時間のタイムラグを短縮できるという利点がある。但し、視聴終了や回線切断により配信網から特定のノードが除外された場合に、配信順を崩さないようにするノードのトポロジの再構築処理の負荷が非常に大きいという問題点がある。
この点、図1に示す単純分岐型の配信網10は、末端のノードN7、N8、N9、N10での配信開始のタイムラグを、同じノード数で比較した場合に図2(A)に比べて小さくできるという利点がある。例えばノード数が10である場合に、末端のノードにコンテンツが届くまでに図2(A)では9回の中継処理が必要になるが、図1では3回の中継処理で済むため、タイムラグを大幅に軽減できる。更に図1の単純分岐型の配信網10では、配信順の維持のためのトポロジ再構築の処理負荷を、図2(B)に比べて軽くできるという利点もある。
このように図1の単純分岐型の配信網10では、タイムラグの低減とトポロジの再構築の処理負荷の軽減を両立できるというメリットがあるが、本実施形態の配信網の構成は図1に限定されず、状況に応じた種々の構成の配信網を採用できる。
図1においてサーバシステム100は、コンテンツ配信部110、ノード管理部120、制御処理部130、課金処理部140、データベース170、通信制御部190を含む。なお、サーバシステム100は図1の構成に限定されず、これらの一部の構成要素(例えばコンテンツ配信部)を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
データベース170(データベースサーバ)は、例えばMySQLなどで実現されるリレーショナルデータベースであり、コンテンツ配信やサーバ管理やノード管理や評価ポイント演算に必要な様々な情報を記憶する。例えば配信管理情報、サーバ管理情報、ノード管理情報、ユーザ情報、評価ポイント情報などを記憶する。具体的にはデータベース170は、コンテンツ記憶部172、評価ポイント記憶部173、管理情報記憶部174を含む。コンテンツ記憶部172は、配信対象となる映像、音声等のコンテンツを記憶する。評価ポイント記憶部173は、各ノード(クライアント端末、視聴者、ユーザ)に対して付与される評価ポイント(協力ポイント)を記憶する。具体的には、各ノード(各ノードの識別情報)に関連づけてその評価ポイントを記憶する。管理情報記憶部174は、ノード管理処理のためのノード管理情報(ノード情報、配信網情報等)を記憶する。
通信制御部190(通信サーバ)は、配信網10を介した情報転送のための各種の通信制御処理を行う。具体的にはインターネット等のプロトコルに従った通信に必要な各種処理を行う。
コンテンツ配信部110(コンテンツサーバ、コンテンツ配信元)は、データベース170のコンテンツ記憶部172(コンテンツデータベース)に記憶される映像(映画)、音声(音楽)、静止画、テキスト、ゲームプログラム、ゲームデータ等のコンテンツの配信処理(ストリーム配信)を行う。具体的には、配信網10のコンテンツ配信元の各ノードからコンテンツ配信先の各ノードに対してP2P(Peer to Peer)のリレー方式で配信されるコンテンツを、基幹ノード列KNLの起点の基幹ノードN1に対して送信する。すると、コンテンツ配信部110からコンテンツを受信した基幹ノードN1は、コンテンツ配信元として、そのコンテンツ配信先のノードN2、N3に対してリレー方式でコンテンツを配信(ストリーム転送)する。この場合にコンテンツ配信部110は、必要であれば、DES、AES等の共通鍵暗号化方式や、公開鍵暗号化方式などで、コンテンツの暗号化処理を行う。そしてクライアントである各ノードは、暗号化されたコンテンツの復号化処理を行う。また各ノードは、コンテンツの復号化処理や再生処理を行うと共に、後段の下位のノードに対してコンテンツを再配信する中継処理を行う。
ノード管理部120(ノード管理サーバ、斡旋サーバ)は、配信網10のノード管理処理を行う。例えば配信網10への新規ノードの追加処理や、視聴終了や回線切断されたノードを配信網10から除外する処理や、ノード列の接続を組み替える処理や、ノードからの各種要求に応答する処理や、ノードに対して各種要求を発行する処理などを行う。
具体的にはノード管理部120は、配信網10に新規ノードが追加された場合に、コンテンツ配信先ノードの接続が可能なノードのうち、配信網10への追加順番(配信順)が最も古いノードを検索する。即ち、追加順番の番号(配信順番号)が最も若いノードを検索する。そして検索されたノードに対して新規ノードを接続するための処理(検索や接続の要求処理や応答処理等)を行う。例えば、検索されたノードのコンテンツ配信先ノードとして分岐ノードが接続されていない場合(分岐ノードの接続が可能な場合)には、新規ノードを新たな分岐ノードとして接続する。一方、検索されたノードのコンテンツ配信先ノードとして分岐ノードが接続されているが、基幹ノードが接続されていない場合(分岐ノードの接続は不可であるが基幹ノードの接続は可能である場合)には、新規ノードを新たな基幹ノードとして接続する。
また、ノード管理部120は、視聴終了や回線切断により配信網10から分岐ノードが除外され、除外された分岐ノードのコンテンツ配信先ノードとして下位(下流)の分岐ノードが存在する場合(下位の分岐ノードが接続されている場合)には、除外された分岐ノードの上位(上流)のノード(分岐ノード又は基幹ノード)を、その下位の分岐ノードに接続する。
一方、ノード管理部120は、視聴終了や回線切断により配信網10から基幹ノードが除外され、除外された基幹ノードのコンテンツ配信先ノードとして分岐ノードが存在する場合(分岐ノードが接続されている場合)には、その分岐ノードを繰り上げて、新たな基幹ノードに設定する。この際に、新たな基幹ノードの下位(下流)の基幹ノードが存在し、この下位の基幹ノードの配信網10への追加順番が、新たな基幹ノードの追加順番よりも先である場合(番号が若い場合)には、その新たな基幹ノード及びそれに接続される分岐ノード列と、下位の基幹ノード及びそれに接続される分岐ノード列との入れ替え処理を行う。なお除外された基幹ノードに対して複数の分岐ノード列が接続される場合には、複数の分岐ノード列の起点となる分岐ノードのうち、配信網10への追加順番が最も古い分岐ノード(最も番号が若い分岐ノード)を、除外された基幹ノードの代わりに基幹ノードに設定してもよい。
またノード管理部120は、除外された基幹ノードのコンテンツ配信先ノードとして分岐ノードが存在せず、除外された基幹ノードのコンテンツ配信先ノードとして下位の基幹ノードが存在する場合(分岐ノードが非接続で、下位の基幹ノードが接続されている場合)には、除外された基幹ノードの上位の基幹ノードを、下位の基幹ノードに接続する。
更にノード管理部120は、配信網10に新規ノードが追加された場合に、新規ノードを、配信網10の基幹ノードのコンテンツ配信先ノードとして接続することを、配信網10のノード数(総ノード数)に応じて許可(制限)してもよい。例えば、配信網10のノード数をKとし、基幹ノード数をnとし、nの関数f(n)で表される所定数をL=f(n)とした場合に、ノード数Kが所定数L以上であることを条件に、新規ノードを、基幹ノードのコンテンツ配信先ノードとして接続する。或いは、配信網10の下位の基幹ノードに接続される分岐ノード列での追加可能ノード数の方が、上位の基幹ノードに接続される分岐ノード列での追加可能ノード数よりも小さくなるように制限する。具体的には、pの関数をG(p)とした場合に、第pの基幹ノードに接続される分岐ノード列の追加可能ノード数をM=G(p)に制限する。或いは、第1の基幹ノード列及びそれに接続される第1の分岐ノード列群により構成される第1のノード集合のノード数が所定数になった場合には、第2の基幹ノード列及びそれに接続される第2の分岐ノード列群により構成される第2のノード集合を設定してもよい。
制御処理部130(制御処理サーバ)は、種々の制御処理を行うものであり、情報受信部132、情報送信部134、評価ポイント演算部136を含む。
情報受信部132は、各ノード等からの情報を受信する処理を行う。例えば各ノードからの要求情報や報告情報を受信する。具体的には、配信網の第jのノードが、上位の第iのノードからコンテンツを受信し、受信したコンテンツを、P2P(Peer to Peer)のリレー方式で下位の第k(例えばi、j、kはi<j<kとなる整数)のノードに送信したとする。この場合に、情報受信部132は、コンテンツ配信の報告情報(コンテンツ配信が第jのノードと第kのノードの間で行われたことやその内容を報告する情報)を、例えば第kのノード及び第jのノードの少なくとも一方から受信する。
更に具体的には情報受信部132は、報告情報として、第kのノードが第jのノードから受信したコンテンツの受信データ量の情報を、第kのノードから受信する。ここで、受信データ量の情報は、受信データ量そのものであってもよいし、受信データ量の大小を表す情報(例えば受信回数等)であってもよい。或いは、報告情報として、受信データ量の情報と、第jのノード(第jのノードのクライアント端末、ユーザ)を特定するための識別情報(ID)を受信してもよい。
情報送信部134は、各ノード等に情報を送信する処理を行う。例えば各ノードに対して要求情報や通知情報を送信する。
評価ポイント演算部136は、評価ポイント(協力ポイント、貢献ポイント)の演算処理を行う。具体的には、受信された報告情報に基づいて、第jのノードから第kのノードへのコンテンツの転送データ量に応じた評価ポイントを、第jのノードに対して付与(加算)する処理を行う。例えば転送データ量が多くなるほど高くなる評価ポイントを第jのノードに対して付与する(ポイント加算する)。そして、この評価ポイントは、評価ポイント記憶部173において、第jのノードに関連づけて記憶されることになる。なお、転送データ量に応じた評価ポイントは、転送データ量(受信データ量、送信データ量)そのもの基づいて演算してもよいし、転送データ量に相当する情報(例えば転送回数等)に基づいて演算してもよい。
また評価ポイント演算部136は、第jのノードからコンテンツを受信した第kのノードから、報告情報を受信したことを条件に、第jのノードから第kのノードへのコンテンツの転送データ量に応じた評価ポイントを、第jのノードに対して付与してもよい。即ち送信側(受益者側)である第jのノードからの報告情報ではなく、受信側である第kのノードからの報告情報に基づいて、第jのノードの評価ポイントを演算する。例えば情報受信部132は、第kのノードから報告情報として、第jのノードから受信したコンテンツの受信データ量の情報を受信する。この場合には評価ポイント演算部136は、報告された受信データ量の情報に基づき演算された評価ポイントを、第jのノードに対して付与する。或いは、情報受信部132が、受信データ量の情報に加えて、第jのノードを特定するための識別情報を受信した場合には、評価ポイント演算部136は、報告された受信データ量の情報に基づき演算された評価ポイントを、受信した識別情報により特定される第jのノードに対して付与する。
なお評価ポイント演算部136は、コンテンツを送信した第jのノード及びコンテンツを受信した第kのノードの双方から、報告情報を受信したことを条件に、第jのノードに対して評価ポイントを付与(加算)してもよい。
また評価ポイント演算部136は、第jのノードが受信したコンテンツの受信データ量よりも、第jのノードが送信したコンテンツの送信データ量の方が多い場合に、第jのノードに対して評価ポイントを付与(加算)する。例えば受信データ量よりも送信データ量が多いほど、評価ポイントを高くする。
また、第jのノードでの再生コンテンツの決定(ユーザによる再生コンテンツの決定)から、第jのノードに対する課金の決済が終了するまでの決済期間において、第jのノードから第kのノードにコンテンツが配信されたとする。この場合には、評価ポイント演算部136は、この決済期間において配信されたコンテンツの転送データ量を除外して、第jのノードに対する評価ポイントを演算してもよい。即ちこの決済期間において生じたポイントについては、第jのノードの評価ポイントには加算しないようにする。
なお、第kのノード(クライアント端末)が、第jのノードでの決済終了の報告を受けた後に、第jのノードから受信したコンテンツの受信データ量の集計処理を開始したとする。この場合には情報受信部132は、報告情報として、第jのノードでの決済終了後の受信データ量の情報を第kのノードから受信する。そして評価ポイント演算部136は、第kのノードでの受信データ量に応じた評価ポイントを、第jのノードに対して付与することになる。
また例えば配信網10として図1に示すような構成のものを採用した場合には、評価ポイント演算部136は、基幹ノードに対する評価ポイントの方が、分岐ノードに対する評価ポイントよりも高くなるように、評価ポイントの演算処理を行ってもよい。例えば基幹ノードのユーザに対しては、分岐ノードのユーザよりも、ポイント加算値を大きくする(例えば2倍にする)。このようにすれば、基幹ノードに配置されたユーザが感じる不平等感を解消できる。
また本実施形態における評価ポイントは、例えば、コンテンツ配信における転送データ量(転送回数等の転送データ量に相当する情報を含む)に応じた視聴者(ノード)に対する評価(貢献度)を、数値(パラメータ)で表したものである。この評価ポイントの使用形態としては、例えば、家電量産店におけるポイントカードに加算されるポイントのような使用形態や、特典データや仮想マネーデータなどの他の形態のデータに変換する元になる数値としての使用形態などを想定できる。例えば評価ポイントが一定値に達すると、課金処理において評価ポイントを視聴者に還元して、コンテンツの配信量(ダウンロード量)を割り引いたり、1又は複数回のコンテンツ視聴を無料にする。或いは、内部データとして蓄積された評価ポイントの数値(パラメータ)を、例えばキャラクデータ、アイテムデータ、或いは壁紙データなどの特典データに変換したり、ネットワーク上の金銭価値である仮想マネーデータに変換して、そのノード(視聴者、ユーザ、プレーヤ)に付与する(記憶部においてそのノードに対応づける)。或いは、評価ポイントに基づいて視聴者の会員としてのランク付けを行ってもよい。例えば評価ポイントの数値が一定値に達すると、その視聴者を、ゴールド会員やプレミアム会員などと呼ばれる高いランクの会員に昇格させる。具体的には、評価ポイントの数値に基づいて、視聴者の会員ランク指定フラグを変化させる。このように評価ポイントとしては様々な使用形態を考えることができる。
2.クライアント端末
図3に配信網10の各ノードに設けられるクライアント端末(情報処理装置、ゲーム装置等)の構成例を示す。このクライアント端末は、処理部200、操作部260、記憶部270、情報記憶媒体280用のインターフェース(I/F)部282、表示部290、音出力部292、通信制御部296を含む。なお本実施形態のクライアント端末は図3の構成に限定されず、その一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
処理部200は種々の処理を行う。具体的には、暗号化されたコンテンツの復号化処理、映像や音声の再生処理等を行う。また、コンテンツ配信元のノードから受信したコンテンツのデータを記憶部270にバッファリング(キャッシュイング)し、バッファリングしたコンテンツのデータをリレー方式(バケツリレー方式)でコンテンツ配信先のノードに再送する処理等を行う。この処理部200の機能は、CPU等のプロセッサや、プロセッサ上で動作するプログラムなどにより実現できる。
操作部260は、視聴者がコンテンツ視聴のために必要な各種の入力を行うためのものであり、例えばキーボード、マウス、ゲームコントローラなどにより実現できる。
記憶部270は、処理部200や通信制御部296のワーク領域として機能するものであり、その機能はRAMやHDD等により実現できる。この記憶部270は、コンテンツバッファ272、管理情報記憶部274、決済終了フラグ記憶部276、受信データ量記憶部278を含む。
コンテンツバッファ272は、コンテンツ配信元のノードから受信したコンテンツのデータのキャッシュメモリとして機能する。管理情報記憶部274は、自身のノードの情報や他のノードの情報などの管理情報を記憶する。
決済終了フラグ記憶部276は、コンテンツ配信の決済の終了時にオンになる決済終了フラグを記憶する。受信データ量記憶部278は、コンテンツの配信先から受信したコンテンツのデータ量(集計結果)を記憶する。
I/F部282は、プログラムやデータが記憶される情報記憶媒体280へのアクセス処理などのインターフェース処理を行う。
情報記憶媒体280(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部200は、情報記憶媒体280に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体280には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
表示部290は、コンテンツの映像等を表示するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部292は、コンテンツの音声等を出力するものであり、その機能は、スピーカやヘッドホーン等により実現できる。
通信制御部296は、他のノードやサーバとの間でのデータの送受信のための各種の通信制御処理を行うものである。具体的にはインターネット等のプロトコルに従った通信に必要な各種処理を行う。通信制御部296の機能は、通信用のASICやファームウェアにより実現できる。
処理部200は、コネクション確立部202、コンテンツ受信部204、復号化部206、再生部208、コンテンツ送信部210、表示制御部212、情報受信部214、情報送信部216、受信データ量集計部218を含む。なお、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
コネクション確立部202は、ノード間でのコネクション(セッション)を確立するための処理を行う。ここでコネクションの確立とは、ノード間に仮想的な通信路を確保する処理である。具体的には、コンテンツデータ等のデータを実際に通信するのに先立って、送信元のノードと送信先のノードとの間に仮想的な通信路を確保し、ノード間でデータを転送できる状態にする処理である。TCP(Transmission Control Protocol)を例にとれば、コネクションの確立は、スリーウェイハンドシェークにより実現される。
コンテンツ受信部204はコンテンツ(コンテンツデータ)の受信処理を行う。具体的には、コンテンツ配信における上位のノードである第jのノードからコンテンツを受信する。そして、この第jのノードが、視聴停止や回線切断により配信網10から除外された場合には、第kのノードと第iのノードとの間で予め確立しておいた予備コネクションを利用して、第iのノードからのコンテンツを受信する。これにより、第jのノードの除外時における再接続処理を短縮化できる。
復号化部206は、上位のノードから受信したコンテンツを復号化する処理を行う。また再生部208は、復号化されたコンテンツを再生するための処理を行う。例えば、コンテンツの映像を再生したり音声を再生する。そしてコンテンツ送信部210は、上位のノードから受信したコンテンツを下位のノードに送信するための処理を行う。具体的には、上位のノードから受信したコンテンツはコンテンツバッファ272に蓄積され、コンテンツ送信部210は、このコンテンツバッファ272に蓄積されたコンテンツを、中継して、下位のノードに送信する。これにより、P2Pのリレー方式(バケツリレー方式、キャッシュ・アンド・トス方式)でのコンテンツ配信が可能になる。
表示制御部212は表示部290の表示制御を行う。例えば、コンテンツ選択画面や、課金の決済画面や、コンテンツの再生画面等の表示制御を行う。
情報受信部214は、サーバシステム100や他のノードからの各種の情報を受信する処理を行う。例えばサーバシステム100や他のノードから各種の要求情報や報告情報を受信する。情報送信部216は、サーバシステム100や他のノードに対して各種の情報を送信する処理を行う。例えばサーバシステム100や他のノードに対して各種の要求情報や報告情報を送信する。
受信データ量集計部218は、上位ノードから受信したコンテンツのデータ量の集計処理を行う。集計結果である集計受信データ量は、受信データ量記憶部278に記憶される。具体的にはユーザが、表示部290に表示されたコンテンツ選択画面において、所望のコンテンツを選択すると、前回までの集計受信データ量はクリアされる。そして、上位ノードからコンテンツのデータを受信すると、受信したデータ量に応じて集計受信データ量が増加する。この場合、例えば、上位ノードからの決済終了フラグがオンになったことを条件に、受信データ量の集計処理を開始してもよい。
3.転送データ量に応じた評価ポイントの付与
P2Pのリレー方式において、システムの安定状態を維持するためには、配信網においてコンテンツ配信元となる各ノードが、コンテンツ配信先となる各ノードに対して、安定してコンテンツを供給することが必要である。例えば、各ノードのクライアント端末のコンテンツバッファの蓄積データ量が多ければ多いほど、システム全体は安定状態になる。具体的には、各ノードのコンテンツバッファに1本分のコンテンツ(1本分の映画)が蓄積されていれば、絶対的な安定状態になる。
ところが、各ノードのユーザが視聴を終了した場合や、回線切断などの故障があった場合には、そのノードは配信網から除外されてしまう。そして、このようなノードの除外が頻繁に起こると、システムが不安定状態になってしまう。従って、システムの安定化のためには、コミュニティに参加するユーザに対して、コンテンツの配信元として留まることのインセンティブを付与することが重要になる。
また、例えば図1のような構成の配信網10では、基幹ノードN1、N3、N6は、2つの配信先ノードに対してコンテンツを配信している。一方、分岐ノードN2、N4、N5は、1つの配信先ノードだけにしかコンテンツを配信しておらず、分岐ノードN7、N8、N9は、いずれのノードに対してもコンテンツを配信していない。従って、同じ配信網10のコミュニティに所属するノードであるのにもかかわらず、自ノードが配置された配信網内での位置によって、送信データ量が異なってしまう。例えばインターネットのプロバイダによっては、送信データ量に制限を設けている場合もあり、このような送信データ量の違いは、ユーザ間に不公平感を生む可能性がある。特に、自ノードが配信網内のどの位置に配置されるかは、システム側が決定するものであり、ユーザに選択権は無いため、このような不公平感は大きな問題になる可能性がある。
そこで本実施形態では、そのノードの転送データ量に応じた評価ポイントをそのノードに対して付与する手法を採用している。例えばコンテンツの受信データ量に比べて送信データ量が多い場合には、そのノードへの評価ポイントを高くする。そして、評価ポイントに応じて、例えば次回のコンテンツ配信の際に配信サービスの料金の割引を行ったり、その評価ポイントを仮想マネーや各種サービスに変換できるようにする。このようにすれば、評価ポイントがインセンティブになって、ユーザが配信網に留まるようになり、システムの安定化に繋がる。また、多くのコンテンツデータを送信したノードに対しては、多くのポイントを付与することで、不公平感や不平等感を解消できる。
例えば図4(A)において、第iのノードNiは第jのノードNjの上位ノードであり、第jのノードNjは、第kのノードNkの上位ノードである。ここで、「上位」とは、コンテンツの配信順(接続の追加順番)が上位であることを示しており、具体的には配信順番号(追加順番の番号)が若いことを示している。なお図4(A)等では、説明を簡単にするためにノードNi、Nj、Nkが隣接している場合を示しているが、本実施形態はこれに限定されるものではない。
図4(A)では、ノードNjが、上位のノードNiからコンテンツを受信し、受信したコンテンツをP2Pのリレー方式で下位のノードNkに送信(中継)している。この場合に、ノードNj、Nk間でコンテンツ配信が行われたことやその内容を報告する情報が、サーバシステム100に送信され、情報受信部132がその報告情報を受信する。ここで報告情報は、受信側(受け手側)のノードNkが送信することが望ましいが、ノードNjが送信するようにしてもよい。
評価ポイント演算部136は、受信した報告情報に基づいて、ノードNjからNkへの転送データ量に応じた評価ポイントを、ノードNjに対して付与する。例えばノードNjからNkへの転送データ量が多ければ多いほど高くなる評価ポイントを付与する。そして図4(A)に示すように、この評価ポイントは、そのノードNjに関連づけられて、評価ポイント記憶部173に記憶される。従って、例えば図1の課金処理部140は、この評価ポイント記憶部173の評価ポイントを参照して、コンテンツの視聴料金の割引処理等を実行できるようになる。
図4(B)に示すように、ノードNjのポイントを評価する場合には、ノードNjからコンテンツを受信するノードNkからの報告情報に基づいて、ノードNjに対して評価ポイントを付与することが望ましい。例えば、ポイントが加算される受益者側であるノードNjからの報告情報に基づいてポイントを加算してしまうと、詐称による不正な行為が行われてしまうおそれがある。
この点、図4(B)のように、受信側であるノードNkの報告情報に基づいて評価ポイントを演算すれば、このような事態の発生を防止できる。また本実施形態では、評価ポイントの演算処理を、各ノードでローカルには行わずに、サーバシステム100側の評価ポイント演算部136で行うと共に、評価ポイントの情報を、サーバシステム100側の評価ポイント記憶部173に記憶している。これにより、ユーザの不正行為等の発生を更に効果的に防止できる。
図4(B)では、ノードNkからの報告情報は、ノードNkがノードNjから受信したコンテンツの受信データ量RDAkの情報や、ノードNjを特定するための識別情報IDjを含む。情報受信部132がこれらの受信データ量RDAk、識別情報IDjを受信すると、評価ポイント演算部136は、IDjに基づいて、評価ポイント記憶部173から、ノードNjのこれまでの評価ポイントPTjを読み出す。そして、読み出された評価ポイントPTjに対して、受信データ量RDAkの情報に基づき求められた加算ポイントを加算する。このようにすることで、ノードNjの評価ポイントを演算できる。
例えば図1のN1がノードNiであり、N3がノードNjであり、N5がノードNkであったとする。すると、ノードN3(Nj)は、ノードN1(Ni)から受信したコンテンツを、ノードN5(Nk)に対して送信すると共にノードN6に対しても送信している。従って、この場合には、ノードN5からの報告情報(受信データ量)に基づいて、ノードN3(Nj)のポイントが加算されると共に、ノードN6からの報告情報(受信データ量)に基づいても、ノードN3(Nj)のポイントが加算されることになる。報告情報に、識別情報IDjや受信データ量RDAkの情報を含ませれば、このように複数の受信ノードからの報告情報によるポイント加算が可能になる。
なお、図5(A)に示すように、ノードNjからの報告情報と、ノードNkからの報告情報の双方に基づいて、ノードNjの評価ポイントの演算処理を行ってもよい。例えば、ノードNjからの報告情報とノードNkからの報告情報が一致した場合(送信データ量と受信データ量が一致した場合)に、ノードNjの評価ポイントを加算する。このようにすれば、ユーザの不正行為を更に効果的に防止でき、適正なポイント評価を実現できる。
また図5(B)に示すように、ノードNjが受信したコンテンツの受信データ量RDAjよりも、ノードNjが送信したコンテンツの送信データ量TDAjの方が多い場合に、ノードNjに対して評価ポイントを付与(加算)するようにしてもよい。具体的には、例えば送信データ量TADjと受信データ量RDAjの差分であるTADj−RDAjに応じたポイントを、ノードNjの評価ポイントPTjに対して加算する。このようにすれば、より多くのデータを送信したノードに対して、より多くの評価ポイントが付与されるようになり、ユーザが感じる不公平感を更に低減できる。
また例えば図6の配信網10は、コンテンツ配信元であるサーバシステム100から直列接続される基幹ノードの列と、基幹ノード列の各基幹ノードに直列接続される分岐ノードの列を有する。このような構成の配信網10では、例えば基幹ノードN1、N3、N6、N10、N15は、分岐ノードN2、N4、N5等に比べて、送信データ量が必然的に多くなってしまう。従って、この場合には、基幹ノードに対する評価ポイントの方が、分岐ノードに対する評価ポイントよりも高くなるように、評価ポイントの演算処理を行えばよい。具体的には、例えば基幹ノードに対しては、デフォルトで一定の評価ポイントを付与し、分岐ノードに対しては、評価ポイントを付与しないようにしたり、基幹ノードに付与される評価ポイントよりも少ないポイントを、分岐ノードに付与する。或いは、後述の図8で説明するポイント変換係数KPを、分岐ノードに比べて基幹ノードの方が大きな値になるように設定してもよい。このようにすれば、自身の意思に無関係に基幹ノードに設定されてしまったユーザの不公平感を、評価ポイントの優遇により解消することが可能になる。
また例えば図7に示すように、映画等のコンテンツをユーザが視聴する場合には、ユーザのクライアント端末の表示部にタイトルの選択画面が表示され、表示されたタイトルの中から所望のタイトルを選択して決定する。そして、その後、課金処理部140による決済処理が行われ、決済が終了すると、そのクライアント端末でのコンテンツの再生が開始する。
しかしながら、図7に示すように、例えばノードNjのユーザが、再生コンテンツを決定してから、ノードNjのユーザに対する課金の決済が終了するまでには、一定の決済期間TDを要する。そして、システム全体の安定化のためには、この決済期間TDにおいても、ノードNjは、P2Pのリレー方式の中継点として、コンテンツの転送処理を行うことが望ましい。
ところが、この決済期間TDで発生した転送データ量に対しても、ノードNjのユーザに評価ポイントを付与してしまうと、ノードNjのユーザが、詐称により不正な評価ポイントを獲得してしまうおそれがある。即ち、タイトルの決定後、決済の段階でキャンセルするという行為を繰り返すことで、ノードNjのユーザに対して不正な評価ポイントが付与されてしまう。
そこで図7では、このような場合に、決済期間TDにおいて配信(中継)されたコンテンツの転送データ量を除外して、ノードNjに対する評価ポイントを演算している。具体的には、決済期間TDにおいては、転送データ量の集計処理を行わずに、決済期間TDが完了してから、集計処理を開始するようにする。具体的には、ノードNjの下位のノードNkは、ノードNjでの決済終了の報告を受けた後に(ノードNjでの決済終了フラグがオンになった後に)、ノードNjから受信したコンテンツの受信データ量の集計処理を開始する。そして評価ポイント演算部136は、集計された受信データ量に応じた評価ポイントを、ノードNjに対して付与する。このようにすれば、上述のような不正な行為により、ノードNjのユーザに対して不正な評価ポイントが付与されてしまう事態を効果的に防止できる。
4.本実施形態の手法の詳細な処理
次に本実施形態の手法の詳細な処理例について、図8、図9のフローチャートを用いて説明する。
図8は、評価ポイントの演算処理についてのフローチャートである。まず、図4(B)で説明したように、ノードNkからの報告情報として、ノードNjからの受信データ量RDAkと、ノードNjの識別情報IDjを受信する(ステップS71)。ここで、受信データ量RDAkは、ノードNkが、ノードNjから、前回の報告の後に受け取ったデータ量の総量である。また識別情報IDjは、ノードNjのクライアントを特定するためのIDであり、同一のIDについての加算ポイントは合算されることになる。
次に、ポイント変換係数KPと、受信データ量RDAkに基づいて、加算ポイントAPjを演算する(ステップS72)。具体的には、例えばAPj=KP×RDAkの演算処理を行う。ここでポイント変換係数KPは、実績受信データ量を、評価ポイント(協力ポイント)に変換するための係数である。
次に、ステップS72で求められた加算ポイントAPjを、識別情報IDjで特定されるノードNjの評価ポイントPTjに加算する(ステップS73)。具体的には、PTj=PTj+APjの加算処理を行う。即ち図4(B)で説明したように、評価ポイント記憶部173において、ノードNjに対応づけられて記憶される評価ポイントPTjに対して、加算ポイントAPjを加算する。これにより、受信データ量RDAkに応じた評価ポイントを、ノードNjに対して付与することが可能になる。
図9は、ノードNjのクライアント端末がコンテンツの受信を開始した後、ノードNkのクライアント端末が同じコンテンツの受信を開始するまでの処理を、模式的に表したフローチャート(データフロー)である。図9では、ノードNjのクライアント端末において、「手続き」、「コンテンツ受信」、「コンテンツ送信」という3つのタスクが同時に動作している。そして図7で説明したように、ノードNjによってオンにされる決済終了フラグ(ステップS89)を、コンテンツの受け手であるノードNkがモニタし(ステップS109)、決済終了フラグがオンになった後に、ノードNjからの受信データの集計処理を開始するという(ステップS110)、仕組みになっている。
具体的には、ノードNj(手続きのタスク)では、決済終了フラグをオフにした後(ステップS81)、コンテンツが決定される(ステップS82)。即ち、ノードNjのユーザがコンテンツ選択画面でコンテンツを選択して決定する。すると、決済画面が表示され(ステップS83)、決済が承諾された場合には(ステップS84)、課金処理部140(課金サーバ)に対して決済が依頼される(ステップS85)。
すると、課金処理部140は、決済手続きの処理を行い(ステップS86)、決済終了を知らせる通知を送信する(ステップS87)。これにより、ノードNjは、決済終了フラグをオンにして(ステップS88)、決済終了フラグオンになった事を、コンテンツの受け手であるノードNkに知らせる(ステップS89)。その後、コンテンツの再生処理に移行する。
またノードNj(コンテンツ受信のタスク)は、ステップS82のコンテンツ決定の後に、集計受信データ量をクリアする(ステップS90)。そして、決定されたコンテンツの配信元の紹介依頼を、ノード管理部120(斡旋サーバ)に対し行い(ステップS91)、ノード管理部120はノードNjに対して配信元を紹介する(ステップS92)。これにより、ノードNjは、紹介された配信元であるノードNiに対してコンテンツの送信を依頼する(ステップS93)。すると、ノードNiからコンテンツの一部が送信される(ステップS94)。
ノードNjは、送信されたコンテンツの一部を受信した後(ステップS95)、ノードNiからの連絡(ステップS99)により、ノードNiの決済終了フラグがオンになったと判断すると(ステップS96)、受信データ量の集計処理を開始する(ステップS97)。そして、全てのコンテンツの受信が完了すると(ステップS98)、受信処理のタスクが終了する。
ノードNkでは、決済終了フラグをオフにした後(ステップS101)、コンテンツが決定される(ステップS102)。すると、集計受信データ量をクリアし(ステップS103)、決定されたコンテンツの配信元の紹介依頼を、ノード管理部120に対して行い(ステップS104)、ノード管理部120が配信元を紹介する(ステップS105)。これにより、ノードNkは、紹介された配信元であるノードNjに対してコンテンツの送信を依頼する(ステップS106)。すると、ノードNjからコンテンツの一部が送信される(ステップS107)。
ノードNkは、送信されたコンテンツの一部を受信した後(ステップS108)、ノードNjからの連絡(ステップS89)により、ノードNjの決済終了フラグがオンになったと判断すると(ステップS109)、受信データ量の集計処理を開始する(ステップS110)。そして、全てのコンテンツの受信が完了すると(ステップS111)、受信処理のタスクが終了する。
5.ノード接続管理手法
以下、図1の構造の配信網10を採用した場合の本実施形態の詳細について具体的に説明する。
本実施形態のP2P配信システムでは、コンテンツ配信を要求している複数のクライアント(ノード)について、迅速且つ円滑に、サーバ・クライアント間、或いは2つのクライアント間のP2P接続ができるように、配信順序を最適化し、接続を斡旋している。即ち配信システムを実現するサーバシステム(適宜、単にサーバと呼ぶ)は、帯域性能が限られており、同時配信可能なクライアント数が少ないため、本実施形態のシステムによって効率の良いノード接続管理(斡旋)を実現する。以下、映画等の動画を配信する場合のノード接続管理手法について、図10(A)〜図12を用いて詳細に説明する。
本実施形態では、P2Pのリレー方式(バケツリレー方式、キャッシュ・アンド・トス方式)にて、直列に接続されたクライアント(ノード)間で順番にコンテンツのデータを受け渡して行く。そして視聴終了や回線切断により配信網から外れるクライアントが発生した場合には、その前後の上位、下位のクライアントを接続することで、最低限の処理コストで配信網を維持する。このとき、配信網の接続変更を迅速に行うために、予め接続変更候補のクライアント同士で予備的なセッション(接続)を確立しておき、接続の切り替え処理の負荷(コスト)を低減する。また、直接P2P接続している2つのクライアントの順序を入れ替えるなどして、小規模な変更処理で配信網の最適化を図る。
具体的には本実施形態では図1に示すように、図2(A)の基本となる順序型配信網に加えて、各基幹ノードを起点として分岐ノードを更に直列接続する。そして、P2P接続の順序として以下のルールを採用する。
(1)基幹ノード(図1のノードN1、N3、N6、N10)に対しては、配信先ノードとして、2個(広義にはI個)までの接続を許可する。一方、分岐ノード(ノードN2、N4、N5、N7、N8、N9)に対しては、配信先ノードとして、1個(広義にはJ個)だけの接続を許可する。
別の言い方をすれば、基幹ノードに対して接続可能なコンテンツ配信先ノードの個数をIとし、分岐ノードに対して接続可能なコンテンツ配信先ノードの個数をJとした場合に、I>Jとする。図1では、I=2、J=1になっており、基幹ノードに対しては2個のコンテンツ配信先ノードを接続でき、分岐ノードに対しては1個のコンテンツ配信先ノードを接続できる。なお、各基幹ノードに対して、2本以上の分岐ノード列を接続する構成にしてもよく、この場合にはI≧3になる。従って、本実施形態では、I≧2、J=1の関係が成り立つことになる。
(2)配信網に新規ノードが追加された場合に、コンテンツ配信先ノードの接続が可能なノードのうち、配信網への追加順番(接続順番)が最も古いノードに対して新規ノードを接続する。
例えば図10(A)において、サーバに対して基幹ノードN1、N3が直列接続され、基幹ノードN1に対して分岐ノードN2が接続されている。ここで上記ルール(1)によれば、基幹ノードN1、N3に対する配信先ノードの接続可能個数はI=2であり、分岐ノードN2に対する配信先ノードの接続可能個数はJ=1である。従って、図10(A)では、基幹ノードN1には、追加された新規ノードを接続できず、基幹ノードN3には2個の新規ノードを接続でき、分岐ノードN2には1個の新規ノードを接続できる。
そして図10(A)の接続構成の配信網に対して、新規ノードN4、N5、N6(新たに視聴を開始したクライアント)を追加すると、上記ルール(2)により、最終的な接続構成は図10(D)のようになる。
即ち、図10(A)において、ノードN1には、コンテンツ配信先ノード(自身がコンテンツを送信するノード)としてN2とN3が接続されており、基幹ノードN1の接続可能個数はI=2であるため、新たなコンテンツ配信先ノードを接続することはできない。一方、ノードN2、N3には、コンテンツ配信先ノードは接続されておらず、新たなコンテンツ配信先ノードの接続が可能である。従って、上記ルール(2)により、コンテンツ配信先ノードの接続が可能なノードN2、N3の中から、配信網への追加順番が最も古いノードを検索する。すると、ノードN2の方がN3よりも追加順番が古いので(番号が若いので)、上記ルール(2)により、図10(B)に示すようにノードN2に対して新規ノードN4を接続する。
また図10(B)において、ノードN1、N2には、新たなコンテンツ配信先ノードを接続することはできない。上記ルール(1)より、基幹ノードN1の接続可能個数はI=2であり、分岐ノードN2の接続可能個数はJ=1であるからである。一方、ノードN3、N4には、新たなコンテンツ配信先ノードの接続が可能である。そして、ノードN3の方がN4よりも配信網への追加順番が古い(番号が若い)。従って、上記ルール(2)により、図10(C)に示すようにノードN3に対して新規ノードN5を接続する。
また図10(C)において、ノードN3、N4、N5は、新たなコンテンツ配信先ノードの接続が可能である。そして、ノードN3の方がN4、N5よりも配信網への追加順番が古い。従って、上記ルール(2)により、図10(D)に示すようにノードN3に対して新規ノードN6を接続する。
ここで図10(A)のノードN2に着目すると、ノードN2のコンテンツ配信先ノードとして分岐ノードが接続されていないので、図10(B)に示すように、新規ノードN4は、新たな分岐ノードとして接続される。また図10(C)のノードN3に着目すると、ノードN3のコンテンツ配信先ノードとして分岐ノードN5は接続されているが、基幹ノードは接続されていないため、図10(D)に示すように、新規ノードN6は、新たな基幹ノードとして接続される。
次に、ノード(クライアント)の除外(離脱)処理及びそれによる配信網の組み替え処理について、図11(A)〜図12を用いて説明する。
例えば図11(A)では、視聴終了により基幹ノードN1が除外されている。また除外された基幹ノードN1のコンテンツ配信先ノードとして分岐ノードN2が存在する。この場合には、この分岐ノードN2を、除外された基幹ノードN1の代わりとなる新たな基幹ノードに設定する。即ち、視聴終了や回線切断により、配信網からノード(クライアント)を除外した場合には、各分岐ノード列の残ったノードを左に詰めて隙間を埋める。
また図11(B)では、基幹ノードN1が除外されたが、基幹ノードN1には分岐ノードが接続されていない。従って、この場合には、下の列であるノードN3、N5やN6を順次繰り上げる。
なお図11(A)において、配信網から分岐ノードN2が除外されたとする。この場合に、除外された分岐ノードN2のコンテンツ配信先ノードとして下位の分岐ノードN4が存在する。従って、この場合には、除外された分岐ノードの上位のノードN1(分岐ノード又は基幹ノード)を、下位の分岐ノードN4に接続することになる。即ち、ノードN2の除外により残ったノードN4を、左に詰めて隙間を埋める。
基幹ノードN1を除外した場合には配信網の組み替え処理が必要な場合がある。例えば図12では、基幹ノードN2が除外され、ノードN4が新たな基幹ノードに設定されている。そして、この新たな基幹ノードN4の下位の基幹ノードN3が存在し、下位の基幹ノードN3の配信網への追加順番は、新たな基幹ノードN4の追加順番よりも先である。従って、この場合には、新たな基幹ノードN4及びそれに接続される分岐ノード列と、下位の基幹ノードN3及びそれに接続される分岐ノード列との入れ替え処理を行う。即ち再配置により、基幹ノードが新たな基幹ノードに代わった場合には、上下の基幹ノード間で追加順番(配信順)が逆になっていないかをチェックし、問題がある場合には列を入れ替える。
6.ノード管理情報
次に図1の管理情報記憶部174に記憶されるノード管理情報の詳細について図13(A)〜図14を用いて説明する。
本実施形態のノード管理情報は、ノード情報、ノード配信順情報、配信網情報を含むことができる。ここでノード情報は、各ノードについての配信順、配信網における位置、その接続ノードなどの情報である。図13(A)にノード情報のデータ構造の例を示す。このノード情報は、接続ノード情報、ノード配信順番号、配信網位置情報を含む。
接続ノード情報は、そのノードに他のノードが接続されているか否かを示したり、接続されている場合にはどのノードが接続されているのかを示す情報である。具体的には、接続ノード情報は、そのノードの上位の基幹ノード、上位の分岐ノード、下位の分岐ノード、下位の基幹ノードの番号等を含む。
ノード配信順番号は、ノードが配信網に追加された順番を数値で表したものである。配信網位置情報は、ノードが配信網内に配置されている位置や、ノードが基幹ノードなのか分岐ノードなのかを知るための情報である。具体的には、配信網位置情報は、ノード列番号、ノード連結順番号(ノード列内の順番)を有する。
ノード配信順情報は、図13(B)に示すように、各ノードのノード情報を、配信網に追加された順にリスト化した情報である。新規ノードの追加位置を検索する際には、このノード配信順情報のリスト順にノード情報をチェックすることになる。
なお図13(B)には、図10(D)のようなノード構成の場合のノードN3のノード情報の例が示されている。このノード情報では、図10(D)のように、ノードN3の上位基幹ノード、下位分岐ノード、下位基幹ノードが、各々、ノードN1、N5、N6であり、上位分岐ノードは存在しないことが示されている。またノードN3の配信順番号が「3」であり、配信網位置が[1,0]であることが示されている。
配信網情報は、配信網全体の情報を管理するための情報であり、図14に示すように、ノード総数、基幹ノード数(ノード列数)、ノード列の接続ノード数を含む。例えば図14は、図10(D)のノード構成に対応するものであり、ノード総数は9であり、基幹ノード数は3であり、ノード列ノード数は[3,2,1]になっている。また図14では、図13(A)のノード連結順番号(横軸)や、ノード列番号(縦軸)が示されていると共に、ノードN1〜N6のノード情報が模式的に示されている。
7.詳細な処理
次に、新規ノードが追加された場合の本実施形態の詳細な処理例について、図15〜図18のフローチャートを用いて説明する。
図15、図16は新規ノードの追加処理に関するフローチャートである。新規ノードが追加された場合には、まず図15に示すように、配信網に接続されたノードが存在するか否かを判断する(ステップS1)。そして、他のノードが存在しない場合には、追加された新規ノードを起点の基幹ノードとしてサーバに接続する(ステップS2)。一方、存在する場合には、新規ノードを配信網に接続するための処理を実行する(ステップS3)。
図16は、図15のステップS3の処理の詳細を示すフローチャートである。まず配信網への追加順番が最も古いノードを検索する(ステップS11)。この検索処理は図13(B)のノード配信順情報等を用いて実現できる。
次に、検索されたノードのコンテンツ配信先ノード(下位のノード)として分岐ノードが接続されているか否かを判断する(ステップS12)。この判断処理は図13(A)のノード情報等を用いて実現できる。そして、検索されたノードに分岐ノードが接続されていない場合には、新規ノードを、新たな分岐ノードとして接続する(ステップS13)。
一方、検索されたノードに分岐ノードが接続されている場合には、コンテンツ配信先ノード(下位のノード)として基幹ノードが接続されているか否かを判断する(ステップS14)。そして接続されていない場合には、新規ノードを、新たな基幹ノードとして接続する(ステップS15)。一方、基幹ノードが接続されている場合には、検索されたノードには、新規ノードを接続できないため、検索されたノードを候補から除外する(ステップS16)。そして、他の候補となるノードが存在するか否かを判断し(ステップS17)、存在する場合にはステップS11に戻る。
以上のように新規ノードの追加処理を行えば、末端ノードへの配信開始の少ないタイムラグを維持しながら、負荷が少ない効率的な処理で、新規ノードを配信網に接続することが可能になる。
図17は、ノード除外時の配信網の組み替え処理に関するフローチャートである。ここでは説明を簡単にするために、図19(A)又は図19(B)のようにノードが接続されていると想定する。即ち図19(A)において、ノードAは、視聴終了等により除外された分岐ノードであり、ノードBは、ノードAに接続されている上位のノード(分岐ノード、基幹ノード)であり、ノードCは、ノードAに接続されている下位の分岐ノードである。また図19(B)において、ノードAは、除外された基幹ノードであり、ノードDはノードAの上位の基幹ノードであり、ノードEはノードAの下位の基幹ノードである。
図17に示すように、まず、除外されたノードAが基幹ノードか否かを判断する(ステップS21)。そして図19(A)に示すように、ノードAが基幹ノードではなく分岐ノードである場合には、下位の分岐ノードCが存在するか否かを判断し(ステップS22)、存在する場合にはノードBとノードCを互いに接続する(ステップS23)。このようにすれば、ノードAが除外された場合に、ノードCを左に詰めてノードBに接続できる。
一方、図19(B)に示すように、除外されたノードAが、ステップS21で基幹ノードであると判断された場合には、下位の分岐ノードCが存在するか否かを判断する(ステップS24)。そしてノードCが存在する場合には、ノードCを新たな基幹ノードに設定する(ステップS25)。即ち、ノードCを左に詰めて、ノードAの代わりに基幹ノードに設定する。そして、ノード列の接続順を組み替える処理を行う(ステップS27)。
一方、ステップS24で、下位の分岐ノードCが存在しないと判断された場合には、下位の基幹ノードEが存在するか否かを判断する(ステップS28)。そして、下位の基幹ノードEが存在する場合には、基幹ノードDと基幹ノードEを互いに接続する(ステップS29)。このようにすれば、ノードAが除外された場合に、ノードEを上に詰めでノードDに接続できるようになる。
図18は、図17のステップS27の処理の詳細を示すフローチャートである。即ち、図19(B)においてノードCを新たな基幹ノードに設定した場合の組み替え処理に関するフローチャートである。
まず、ノードCに下位の基幹ノードが接続されているか否かを判断する(ステップS31)。そして接続されている場合には、下位の基幹ノードEの配信網への追加順番がノードCよりも先か否かを判断する(ステップS32)。そして、先である場合には、ノードC及びその分岐ノード列とノードE及びその分岐ノード列を入れ替える処理を行う(ステップS33)。即ち図12で説明した入れ替え処理を行う。そして入れ替えたノードの上位、下位ノードとの接続を更新する(ステップS34)。
以上のような組み替え処理を行えば、ノードAが除外された場合にも、P2Pのリレー方式における配信順の維持を、少ない処理負荷で実現できる。
8.基幹ノード数の制限
さて、以上の本実施形態の手法でノード接続等を管理した場合に、分岐ノード数がそれほど増加せずに、基幹ノード数の方が大きく増加してしまう可能性がある。このように基幹ノード数が増加してしまうと、末端ノードへの配信のタイムラグが大きくなってしまい、効率の良い配信を実現できなくなるおそれがある。
即ち、本実施形態では前述のルール(1)(2)により新規ノードの接続処理等を行っている。しかしながら、これらのルール(1)(2)のみでは、定期的にノードが追加された場合に、徐々に基幹ノード数が増加して行くのに対して、基幹ノード数が減少するには、ノード列にノードが追加される前に全てのノードが配信網から除外される必要がある。従って、視聴終了による自然なノード除外のみでは、基幹ノード数はなかなか減少しない。その結果、ノードの追加及び除外を繰り返すうちに、配信網の総ノード数に比較して、基幹ノード数(ノード列数)が増加してしまう。そして、基幹ノード数が増加して、配信網が縦に長くなると、末端のノードに到達するまでの中継ノード数が増えてしまい、結果として配信効率が悪化する。
このような問題を解消するためには、例えば基幹ノードの追加に条件を設定し、一方的な基幹ノード数の増加を防ぐことが望ましい。そこで上記のルール(1)に加えて、以下のルール(3)を加える。
(3)ルール(1)において、基幹ノードの例えば2つの接続先のうち、新たな基幹ノードとなるノードの接続については、現在、配信網に接続されているノードの数が十分に多い場合にのみ接続を許可する。即ち、配信網に新規ノードが追加された場合に、新規ノードを、基幹ノードのコンテンツ配信先ノードとして接続することを、配信網のノード数に応じて許可する。
具体的には、配信網のノード数をKとし、配信網の基幹ノード数をnとし、nの単調増加関数f(n)で表される所定数をL=f(n)としたとする。この場合に、ノード数Kが所定数L以上であることを条件に、新規ノードを、基幹ノードのコンテンツ配信先ノードとして接続することを許可する。
例えばL=f(n)={(n+1)×(n+2)/2}−1であったとする。そして図20(A)では、配信網のノード数はK=9であり、基幹ノード数はn=3である。従って、L={(3+1)×(3+2)/2}−1=9になり、K≧L=9となる。よって、この場合には、新規ノードN10を、基幹ノードN3の下位の基幹ノードとして接続することを許可する。
一方、図20(B)では、配信網のノード数はK=6であり、基幹ノード数はn=3である。従って、L={(3+1)×(3+2)/2}−1=9より、K<L=9になる。よって、この場合には、新規ノードN8を、基幹ノードN3の下位の基幹ノードとして接続することを禁止する。
以上のようにすれば、配信網が縦方向に無駄に拡大して行くのを防止でき、コンテンツ配信の効率化を図れる。
図21、図22に、以上の本実施形態の手法を実現する処理のフローチャートを示す。図21は、図15に対応するフローチャートであり、図21が図15と異なるのは、図21ではステップS53とステップS54の処理が追加されている点であり、その他のステップの処理は同様である。
即ち、ステップS53では、基幹ノード数に対して配信網のノード数(総ノード数)が十分に多いか否かを判断する。具体的には上述のように、配信網のノード数をKとし、基幹ノード数をnとした場合に、K≧L=f(n)か否かを判断する。そして、基幹ノード数nに対して配信網のノード数Kが十分に多い場合には、ステップS55の新規ノードを配信網に接続する処理を行う。即ち、図16で説明した通常の接続処理を行う。
一方、基幹ノード数に対して配信網のノード数が十分に多くない場合には、ステップS54に示すように、新規ノードを分岐ノードに限定して配信網に接続する処理を行う。具体的には図22のフローチャートに示す処理を行う。
ここで図22と図16が異なるのは、図16ではステップS14、S15の処理が行われるのに対して、図22では、このステップS14、S15に対応する処理を行わない点である。即ち、図22のステップS62で、検索されたノードのコンテンツ配信先ノードとして分岐ノードが接続されていると判断された場合には、検索されたノードのコンテンツ配信先ノードとして基幹ノードが接続されているか否かを判断することなく(図16のステップS14の判断を行うことなく)、無条件でその検索ノードを候補から除外する(ステップS66)。従って、図16のステップS15に示す処理(新規ノードを基幹ノードとして接続する処理)が行われないようになり、基幹ノードの増加を防止できるようになる。
9.基幹ノード追加の制限手法
次に、基幹ノードの追加を制限する種々の手法について説明する。基幹ノードの追加を制限する手法としては、以下の(I)(II)(III)の方式を考えることができる。
(I)長方形方式
この方式は、前述の基幹ノード追加制限のルール(3)を適用するだけで実現できる手法である。配信網の形状は、配信網形成開始からノードの除外が発生するまでは三角形になるが、ノードの除外発生以降は、図23(A)に示すように徐々に長方形に変化して行く。この方式は、配信網の形状が縦方向に無駄に延びる事態を防止できると共に、制限方法が単純であり、配信網管理の処理負荷が軽いというメリットがある。
(II)三角形方式
この方式は、配信網の形状を変化させずに、三角形に維持したまま管理する手法である。この方式では、図23(B)に示すように、各末端ノードN15、N14、N13、N12、N11に至るまでの中継ノード数をほぼ一定にすることができ、端末ノードでの配信のタイムラグの均等化を図れ、データが伝達するまでの遅延の予測が容易になるというメリットがある。この方式では、接続ノード数をノード列ごとに管理し、ノードの追加探索時に調査対象ノードが属するノード列のノード数により、追加を制限する。
具体的には、配信網の下位の基幹ノードに接続される分岐ノード列での追加可能ノード数の方が、上位の基幹ノードに接続される分岐ノード列での追加可能ノード数よりも小さくなるように制限する。更に具体的には、pの単調減少関数をG(p)とした場合に、基幹ノード列の第pの基幹ノードに接続される分岐ノード列の追加可能ノード数をM=G(p)に制限する。
例えば図23(B)では、下位の基幹ノードN10に接続される分岐ノード列BNL4での追加可能ノード数の方が、上位の基幹ノードN1に接続される分岐ノード列BNL1での追加可能ノード数よりも小さくなっている。このようにすることで、配信網の形状が三角形に維持される。
例えば、基幹ノード数をnとし、G(p)=n−pとする。すると、図23(B)では、基幹ノード数はn=5であるため、第1(p=1)の基幹ノードN1に接続される分岐ノード列BNL1の追加可能ノード数は、M=G(p)=5−1=4に制限される。同様に、第2(p=2)の基幹ノードN3に接続される分岐ノード列BNL2の追加可能ノード数は、M=G(p)=5−2=3に制限され、第3(p=3)の基幹ノードN6に接続される分岐ノード列BNL3の追加可能ノード数は、M=G(p)=5−3=2に制限され、第4(p=4)の基幹ノードN10に接続される分岐ノード列BNL4の追加可能ノード数は、M=G(p)=5−4=1に制限される。従って、結果として配信網の形状が三角形に維持される。
そして図23(C)では、分岐ノード列BNL3に対する新規ノードN16の追加は不可になり、分岐ノード列BNL4に対する新規ノードN17、N18の追加も不可になる。
(III)追加区画管理方式
この方式は、現在存在している配信網のノードの集合である第1のノード集合に対するノードの追加を一定数で停止し、それ以降に追加されたノードを用いて、上記の第1のノード集合の基幹ノードの末端に新たな第2のノード集合を接続する手法である。この方式によれば、ノードの追加の際に、ノードの追加が停止された第1のノード集合をチェックする必要がなくなり、追加位置探索対象となるノードを限定できるため、追加位置探索処理の負荷を抑制できる。
具体的には図24において、第1の基幹ノード列KNL1及びKNL1に接続される第1の分岐ノード列群により構成される第1のノード集合NAG1のノード数が所定数になったとする。この場合には、第1の基幹ノード列KNL1に直列接続される第2の基幹ノード列KNL2及びKNL2に接続される第2の分岐ノード列群により構成される第2のノード集合NAG2を設定する。そして、以降は、追加された新規ノードN21、N22、N23を、第1のノード集合NAG1ではなくて、第2のノード集合NAG2のノードに接続する。これにより処理負荷を軽減しながら、ノード数を効率的に増加させることが可能になる。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、評価ポイントの演算手法、情報の報告手法、コンテンツの配信手法、ノード接続管理手法、ノード列の接続の組み替え手法等も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。