【文献】
Thorsten Lohmar et al.,‘Dynamic Adaptive HTTP Streaming of Live Content’,2011 IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks WoWMoM 2011,2011年 6月20日,pp. 1-8
(58)【調査した分野】(Int.Cl.,DB名)
請求項1から3までのいずれか1項記載の方法において、前記チャネル設定情報の少なくとも一部が、前記第1マニフェスト・ファイルにおいて前記クライアントに提供され、前記チャネル設定情報が、前記制御チャネル・サーバ機能を前記ネットワークにおいて位置特定するためのサーバ位置情報を含む、方法。
少なくとも1つの配信ノードから送信されたセグメント化されたコンテンツの受信を制御するためのコンテンツ処理デバイスにおける使用のためのクライアントであって、第1配信ノードが第1制御チャネル・サーバ機能に関連付けられ、前記クライアントが、
セグメント化されたコンテンツを前記少なくとも1つの配信ノードに配信する要求を送信し、
1つ以上のセグメント識別子と、前記セグメント識別子に関連付けられた1つ以上のセグメントを前記少なくとも1つのクライアントに送信するように構成される1つ以上のコンテンツ配信ノードを位置特定するための位置情報とを含むマニフェスト・ファイルを受信し、
チャネル設定情報を供給され、
第1チャネル設定情報に基づいて、前記少なくとも1つのクライアントと前記第1制御チャネル・サーバ機能との間にストリーミング制御チャネルを確立するように構成され、
前記少なくとも1つのクライアントが前記第1制御チャネル・サーバ機能から少なくとも1つのマニフェスト・ファイル更新メッセージを受信するように構成される、クライアント。
少なくとも1つの配信ノードに関連付けられ、前記配信ノードから1つ以上のクライアントへのセグメント化されたコンテンツのストリーミングにおけるネットワーク開始制御を可能にするための制御チャネル・サーバ機能であって、
セグメント化されたコンテンツを前記1つ以上のクライアントに配信する少なくとも1つの要求を受信し、
1つ以上のセグメント識別子と、前記セグメント識別子に関連付けられた1つ以上のセグメントを前記1つ以上のクライアントに送信するように構成される1つ以上のコンテンツ配信ノードを位置特定するための位置情報と、チャネル設定情報とを含む少なくともマニフェスト・ファイルを生成し、
前記マニフェスト・ファイルを前記1つ以上のクライアントの内少なくとも1つに送信し、
前記少なくとも1つのクライアントと前記制御チャネル・サーバ機能との間における少なくとも第1ストリーミング制御チャネルの設定に関与する
ように構成され、
前記設定が、前記チャネル設定情報に基づき、任意に、前記制御チャネル・サーバ機能が、更に、マニフェスト・ファイル更新メッセージを生成し、および/または、前記メッセージを、前記第1ストリーミング制御チャネルを通じて前記クライアントに送信するように構成される、制御チャネル・サーバ機能。
コンピュータのメモリにおいて実行されると、請求項1から11までのいずれか1項記載の方法のステップを実行するソフトウェア・コード部を含むコンピュータ・プログラム。
【発明を実施するための形態】
【0036】
図1は、端末におけるクライアント130とメディア・サーバ132との間における従来のHASプロトコル・フローの全体像を示す。クライアント130およびサーバ132は、応答および要求プロトコル・メッセージ134,136を含むHASストリーミング・プロトコルのような、ストリーミング・プロトコルによって通信するように構成される。ここでは、端末は、一般に、コンテンツ処理デバイス、例えば、電子タブレット、スマート・フォン、ノートブック、メディア・プレーヤ等というような、(移動体)コンテンツ・プレイ・アウト・デバイスに関係することができる。実施形態では、端末が、コンテンツ・プレイ・アウト・プレーヤによる今後の消費のためにコンテンツを処理し一時的に格納するように構成されたセット・トップ・ボックスまたはコンテンツ記憶デバイスであってもよい場合もある。同様に、メディア・サーバは、コンテンツ提供者またはコンテンツ配信ネットワーク(CDN)の一部であってもよく、またはこれに関連付けられてもよい。
【0037】
このプロトコル・フローは、ユーザがウェブサイト上であるビデオに対するリンクを選択することによって開始することができ(ステップ102)、ULRがマニフェスト・ファイルを指し示すことができる(例えば、リディレクトによって)。マニフェスト・ファイルは、セグメント識別子、例えば、セグメント・ファイル名を含む空間データ構造に関係することができ、セグメント化ビデオ・ファイルおよび1つ以上のネットワーク・ノードを位置特定するための関連する位置情報、例えば、URLを構築する。ネットワーク・ノードは、セグメントをクライアント(配信ノード)に配信するように、または代わりにネットワーク・ノードに配信するように構成される。ネットワーク・ノードは、識別されたセグメントを配信することができると考えられる1つ以上のネットワーク・ノードを決定することができる。更に他の実施形態では、位置情報は、ネットワーク・ノード上の位置も指し示すことができる。例えば、URL関連セグメントは、1つの配信ノードにおいて定められた異なるフォルダを指し示すことができる。
【0038】
好ましくはマニフェスト・ファイル内に含まれる、セグメントに対する参照は、セグメント識別子、および/または当該セグメントを位置特定するためにセグメント識別子に関連付けられた位置情報を含むことができる。
【0039】
更に、マニフェスト・ファイルは、セグメント間の時間的および/または空間的関係を記述する情報も含むことができる。このようなファイルは、特定のファイル名拡張子、例えば、.mf、.xml、および.n3u8を使用して格納および識別することができる。次いで、クライアントはHTTP GET要求を送り、サーバからマニフェスト・ファイルを得ることができる(ステップ104)。応答して、サーバはマニフェスト・ファイルをクライアントに送ることによって応答することができる(ステップ106)。その後、クライアントはマニフェスト・ファイルを解析して、要求されたビデオに関連付けられたセグメントの位置を得る(ステップ108)。
【0040】
クライアントは、ビデオの第1セグメントを、マニフェスト・ファイルに記載された位置に要求し、サーバは、要求されたセグメントをクライアントに送ることによって、この要求に応答する(ステップ110,112)。マニフェスト・ファイルに基づいて、様々なセグメントを抽出することができる(ステップ114,116)。次いで、ある時間量の後、クライアントは、マニフェスト・ファイルを更新する時間であると判断することができ(例えば、既定のタイマが満了したこと、またはクライアントがライブ・ストリームにおいてマニフェスト・ファイルの終端にほぼ達したことに基づいて)、最初のマニフェストを取得した同じ位置に要求を送ることができる(ステップ118)。その後、更新されたマニフェスト・ファイルがクライアントに送られ(ステップ120)、更新されたマニフェスト・ファイルの解析を開始することによって、再度クライアントによって処理することができる。
【0041】
先に既に論じたように、このような従来のHASコンテンツ・ストリーミング・システムは、クライアントとサーバとの間におけるストリーミング・プロセスのサーバに基づく制御を許可しない。これは、予測が難しくストリーミング構成の直接適応化が要求される場当たり的状況における制御も許可しない。
【0042】
図2は、本発明の一実施形態によるクライアントとサーバとの間におけるプロトコル・フローを示す。具体的には、
図2は、コンテンツをメディア・サーバ232からクライアント230にストリーミングするためのHTTP適応ストリーミング(HAS)プロトコルのような、ストリーミング・プロトコルに関連付けられたプロトコル・フローを示す。
【0043】
クライアントは、ビデオ・プレイ・アウト機能246によるプレイ・アウトのためにストリームを処理するストリーミング・クライアント機能248と、制御チャネル・クライアント機能244(CCCF)とを含むことができる。同様に、メディア・サーバは、ストリーミング・クライアント機能248にメディアをストリーミングするストリーミング・サーバ機能242を含むことができる。メディア・サーバは、更に、サーバ232内にまたはこれに関連付けられた制御チャネル・サーバ機能(CCSF)、例えば、HAS制御チャネル・サーバ機能234を含むことができる。HAS制御チャネル・サーバ機能234は、CCSFとCCCF244との間におけるストリーミング制御チャネル236の確立を開始するように構成される。ストリーミング制御チャネルは、クライアントとサーバとの間においてストリーミング制御情報、特に、セグメント化されたコンテンツ238のクライアントへのストリーミングの間、サーバから発信してクライアントへのストリーミング制御情報を交換するために使用することができる。
【0044】
ここでは、本プロセスは
図1と同様に開始することができる。即ち、ユーザが、ウェブサイト上においてビデオに対するリンクをクリックし(ステップ200)、URLがマニフェスト・ファイルを指し示す(例えば、リディレクトによって)。クライアントは、サーバからマニフェスト・ファイルを得るためにHTTP GET要求を送ることができ、サーバは、マニフェスト・ファイル(この場合、XMLファイル)をクライアントに送ることによって、それに応答する(ステップ202,204)。その後、クライアントはマニフェスト・ファイルを解析して、要求されたコンテンツ・ストリームを構成するセグメントの位置を得る(ステップ206)。この特定的な事例では、しかしながら、サーバにおけるCCSFが、チャネル設定情報をマニフェスト・ファイルに挿入するように構成され、これによって、クライアントにおけるCCCFおよびサーバにおけるCCSFがストリーミング制御チャネルを設定することができる。
【0045】
マニフェスト・ファイルに埋め込まれたチャネル設定情報に基づいて、クライアントにおけるCCCFは、例えば、サーバ−クライアント・ストリーミング制御チャネルを設定するために、チャネル設定要求をサーバにおけるCCSFに送る(ステップ208)。一実施形態では、CCCFおよびCCSFは、WebSocketプロトコルおよびチャネル設定情報を使用してクライアントとサーバとの間にストリーミング制御チャネルを設定するように構成されたHTTP WebSocketAPIを含むことができる。WebSocket接続は、通例、データが容易にファイアウォールおよびNATを移る(transfer)ように、標準的なHTTPポート80および443を使用するが、他のポートを使用してもよい。
【0046】
WebSocketプロトコルの使用には、スケーラビリティに対する少ないメッセージ・オーバーヘッド、プロトコル収束およびファイアウォール横断のためのHTTPの使用、ならびに他のプロトコルのトンネリングの可能性というような、CDNおよびHASのコンテキスト内において様々な利点がある。他の実施形態では、セッション開始プロトコル(SIP)(http://tools.ietf.org/html/rfc3261)が使用され、この場合、クライアントはSIPユーザ・エージェントを構成することができ、サーバはSIPアプリケーション・サーバとなる。
【0047】
更に他の実施形態では、拡張可能メッセージングおよびプレゼンス・プロトコル(XMPP)(http://www.ietf.org/rfc/ rfc3920.txt)が使用され、この場合、クライアントはXMPPクライアントを構成することができ、サーバはXMPPサーバを構成する。SIPおよびXMPPプロトコル・メッセージは双方共、draft-ibc-rtcweb-sip-websocket-00 および draft-moffitt-xmpp-over-websocket-00にしたがって、WebSocketをくぐり抜けることができる。異なるプロトコルについての実施形態の更に詳細な説明は、
図5Aから
図5Cに設けられる。
【0048】
ストリーミング制御チャネルの設定の間、チャネル・パラメータをCCCFとCCSFとの間で交換することができる(ステップ210)。更に、クライアントから発信するメッセージを処理する(handle)ために、CCSFは専用チャネル処理プロセス(スレッド)を作成することができる(ステップ212)。一旦ストリーミング制御チャネルが確立されたなら(214)、クライアントは、マニフェスト・ファイルにおいて特定されたストリーミング・セグメントの処理を開始することができる。ストリーミング・プロセスは、HASタイプのストリーミング・プロトコルに基づくことができ、HTTP GET要求から開始することができる。HTTP GET要求は、第1セグメントsegment_low-1.aviに関連付けられたURLを含む(ステップ216)。一旦第1セグメントとの配信がHTTP 200 OK応答によって確認されたなら(ステップ218)、クライアントは後続のセグメント segment_high−2.aviを要求することができる(ステップ220,222)。
【0049】
次いで、メディア・サーバにおけるCCSFは、クライアントがそのマニフェスト・ファイルを更新することが必要であると判断することができる。例えば、CCSFが可能なサーバの過剰負荷または障害を検出するかもしれない。したがって、ストリーミング制御チャネルを通じて、任意に新たなマニフェスト・ファイルを指し示すURLを含むマニフェスト更新信号を送ることができる(ステップ224)。マニフェスト・ファイル更新信号を受信すると、CCCFは新たなマニフェスト・ファイルを要求することができる。新たなマニフェスト・ファイルの受信時に、クライアントは新たなマニフェスト(図示せず)に基づいてストリーミングを継続することもできる。
【0050】
一実施形態では、マニフェスト・ファイルにおいてチャネル設定情報を転送する代わりに、チャネル設定情報が端末に予めインストールされてもよく、または別の通信チャネルを通じて他の(ネットワーク)ソースから抽出されてもよい。その場合、クライアントがマニフェスト・ファイルを受信すると、
図2のステップ208から214を参照して説明したように、ストリーミング制御チャネルを確立するために、チャネル設定情報を抽出するストリーミング制御チャネル・クライアント機能を作動させる。
【0051】
他の実施形態では、メディア・サーバがセグメントを多数のクライアントにストリーミングするように構成されてもよく、
図2を参照して説明したように、ネットワーク開始、例えば、サーバ開始制御を可能にするために、各クライアントにはそれ自体のストリーミング制御チャネルが関連付けられる。このように、サーバは、ネットワーク・パラメータ、例えば、ネットワーク・トラフィックまたはサーバの処理負荷に基づいて、セグメント化されたコンテンツの多数のクライアントに対するストリーミングを制御することができる。例えば、一特定実施形態では、異なるクライアントが異なる登録、例えば、特別登録および通常登録に関連付けられてもよい。メディア・サーバに関連付けられた負荷均衡化機能240が負荷増大を検出すると、CCSFにマニフェスト・ファイル更新を開始するように通知することによって、先験的にその負荷を低減することができ、通常クライアント(の少なくとも一部)には、新たなマニフェスト・ファイルが供給され、これらのクライアントに、低レートおよび/または低(より低い)品質に関連付けられたセグメントを要求させる。
【0052】
マニフェスト・ファイル更新は、種々の方法で実現することができる。一実施形態では、更新されるマニフェスト・ファイルの全体または少なくとも一部が、ストリーミング制御チャネルを通じてクライアントに送られてもよい。別の実施形態では、CCSFがマニフェスト更新トリガをクライアントに、具体的には、CCCFに送るのでもよく、CCCFは、マニフェスト・ファイル更新トリガにおいて識別されるように、更新されたまたは新たなマニフェスト・ファイルを(デフォルト)位置、例えば、元のメディア・サーバ、または新たな位置、例えば、別のメディア・サーバに要求することによって応答する(例えば、URLを使用する)。
【0053】
図3は、本発明の一実施形態によるクライアント側プロセス・フローを示す。具体的には、
図3は、セグメントの抽出およびプレイバックのため、ならびに、例えば、
図2に示したようなストリーミング制御チャネルを通じてストリーミングのサーバ開始制御を行うためにクライアント上で実行されるプロセスに関連付けられたプロセスを示す。このプロセスは、クライアントが特定のセグメント化されたコンテンツ項目に関連付けられたマニフェスト・ファイルを要求することから開始することができる(ステップ300)。マニフェスト・ファイルは、セグメント位置だけでなく、ストリーミング制御チャネルを設定するためにクライアントによって使用されるチャネル設定情報(WebSocket URL、および例えば、WebSocketサブプロトコル、WebSocketバージョン等を示す可能な何らかのプロトコル)も含むことができる。マニフェスト・ファイルをサーバから受信すると、クライアントはこのマニフェスト・ファイルを解析し(ステップ301および302)、クライアントにおいて少なくとも2つの別のプロセス/スレッド、即ち、セグメントの抽出およびセグメントのプレイバックを処理するためにクライアントにおいてメディア・ストリーミング・クライアント機能によって実行される第1プロセスと、ストリーミング制御チャネルを操作するためにクライアントにおいてCCCFによって実行される第2プロセスとを開始することができる。クライアントは、マニフェスト・ファイルに記載されたセグメント位置を使用して、セグメントを周期的に抽出し、ビデオの終了が検出されるまで(ステップ304)これらを生成する(ステップ303)。更に、クライアントは、マニフェスト・ファイルに埋め込まれたチャネル設定情報を使用して、マニフェスト・ファイルに記載されたURLに基づいてサーバにチャネル設定要求を送り(ステップ305)、クライアント、具体的には、クライアントにおけるCCCFとサーバ、具体的には、サーバに関連付けられたCCSFとの間にストリーミング制御チャネルを確立する(ステップ306)ことができる。次いで、セグメントのストリーミングおよびプレイ・アウトの間、CCCFは、サーバからの着信メッセージを求めて、ストリーミング制御チャネルを聴取する(ステップ307)。また、ストリーミング制御チャネルは、クライアントからサーバへのデータ送信にも使用することができる。
【0054】
サーバからの着信メッセージの場合、CCCFはマニフェスト更新信号(マニフェスト更新トリガ)が受信されたか否かチェックすることができる(ステップ308)。このようなマニフェスト更新信号が受信されていた場合、CCCFは更新マニフェスト(元のマニフェストを受信した位置から、またはマニフェスト更新トリガ・メッセージに指定されるURLから)を要求することができる(ステップ309)。更新マニフェスト・ファイルを受信した後、クライアントはそれを解析し(ステップ302参照)、セグメント識別子のリストおよび関連する位置情報を更新する。
【0055】
図4は、本発明の一実施形態によるサーバ側プロセス・フローを示す。具体的には、
図4は、セグメントをクライアントにストリーミングするため、そしてストリーミング制御チャネルを使用してストリーミングのネットワーク開始制御を行うためにメディア・サーバ上で実行されるプロセスのプロセス・フローを示す。このプロセスは、例えば、
図2を参照して説明したように、メディア・サーバ上にホストされた種々の機能、即ち、ストリーミング・サーバ機能、制御チャネル・サーバ機能、および、任意に、負荷均衡化機能によって実行することができる。これらの機能は、サーバ負荷を監視し、クライアントからのセグメント要求に応答し、ストリーミング制御チャネルをクライアントと共に設定し維持するために1つ以上のプロセスを実行するように構成することができる。
【0056】
例えば、第1プロセスがメディア・サーバにおけるCCSFによって実行され、クライアントによってサーバに送られるチャネル設定を求める要求の受信を監視することができる(ステップ402)。このような要求が受信された場合、CCSFはストリーミング制御チャネルを設定し、チャネル処理プロセスを開始することができ、たとえば、クライアントから発信した情報またはクライアントに送られる情報が適正に処理される。第2プロセスがメディア・ストリーミング・サーバ機能によって実行され、クライアントからのマニフェスト・ファイルおよび/またはセグメントを求める要求の受信を処理することができる(ステップ400)。このような要求が受信された場合、サーバは要求された情報(セグメントおよび/またはマニフェスト・ファイル)を要求元のクライアントに送ることができる(ステップ401)。第3プロセスは、ネットワーク負荷情報および/またはサーバ負荷情報を監視する負荷均衡化機能に関係することができる。負荷が一定の(最大)閾値に達したまたは近づいた場合、マニフェスト・ファイル更新のために1つ以上のクライアントを選択するように、CCSFに通知することができる(ステップ405)。応答して、CCSFはマニフェスト更新トリガを、選択されたクライアントに送ることができる(ステップ406)。
【0057】
例えば、一実施形態では、サーバに関連付けられた負荷均衡機能は、サーバの処理負荷を低減するために、マニフェスト・ファイル更新を開始するように、CCSFに通知することができる。更新されたマニフェスト・ファイルは、クライアントに、品質が低い方のセグメントに基づいてストリーミングを継続することを命令する。他の実施形態では、CCSFは、サーバの過剰負荷またはサーバ障害を検出し、応答して、1つ以上のクライアントに他のネットワーク・サーバからセグメントを抽出することを命令するために、マニフェスト・ファイル更新を開始することができる。
【0058】
マニフェスト更新プロセスは、様々な方法で実現することができる。一実施形態では、更新されたマニフェスト・ファイルは、CCSFによって、ストリーミング制御チャネルを通じてクライアントにおけるCCCFに送られるのでもよい。他の実施形態では、CCSFがマニフェスト・ファイル更新トリガをクライアントにおけるCCCFに送るのでもよく、応答して、クライアントは更新されたまたは新しいマニフェスト・ファイルをメディア・サーバに要求する。別の実施形態では、マニフェスト・ファイル更新トリガが、別のメディア・サーバの位置情報、例えば、URLを含んでもよく、クライアントが、この位置情報に基づいて、更新されたまたは新しいマニフェスト・ファイルをこの別のメディア・サーバに要求することができる(ステップ406)。
【0059】
図5Aから
図5Cは、ネットワーク開始ストリーミング制御を可能にするストリーミング制御チャネルを確立するための種々の非限定的なプロトコル・フローを示す。具体的には、
図5Aは、
図2と同様のメッセージ・フローを示し、ここでは、HTTP WebSocketプロトコルが、ストリーミング制御チャネルを設定するために使用される。このプロセスは、ユーザが、ウェブサイト上でビデオに対するリンクを選択することから開始することができ(ステップ500a)、URLがマニフェスト・ファイルを指し示すことができる(例えば、リディレクトによって)。応答して、クライアントは、マニフェスト・ファイルをサーバから得るために、HTTP GET要求を送ることができ(ステップ501a)、マニフェスト・ファイルはサーバによってクライアントに(この場合、XMLファイルの形態で)送られる(ステップ502a)。
【0060】
クライアントは、マニフェスト・ファイルを解析して、ビデオを構築するセグメントの少なくとも一部の位置を得て(ステップ503a)、マニフェスト・ファイルに埋め込まれた情報を使用して、WebSocket設定要求 (HTTP GET WS ws://...)をサーバに送ることができる(ステップ504a)。強制WebSocketハンドシェーク(WS draft draft−ietf−hybi−thewebsocketprotocol−17に詳細に説明されるように)を実行した後、サーバは、HTTP 101 SWITCHING PROTOCOLSメッセージを使用して、クライアントからのWebSocket要求を受け入れることができる(ステップ505a)。次いで、着信メッセージを処理してWebSocketを作成するために、サーバは専用プロセス/スレッドを作成し(ステップ506a)、これによってWebSocketストリーミング制御チャネルを確立する。このWebSocketストリーミング制御チャネルは、サーバ開始ストリーミング制御を行うために使用することができる(ステップ507a)。
【0061】
WebSocketプロトコルは、ベスト・エフォート・インターネット接続における全二重双方向通信に対応する(allow for)。サーバおよびクライアント双方がいずれの時点でも、ストリーミング制御チャネル上で同時にでもデータを送ることができる。HTTPヘッダのオーバーヘッドがないデータのみが送られることによって、帯域幅を劇的に広げる。更に、WebSocketはHTTPベース・プロトコルであるので、通常、ファイアウォールまたはネットワーク・アドレス変換器(NAT)によって自動的に阻止されない。
【0062】
図5Bは、
図2と同様に、SIPプロトコルを使用してストリーミング制御チャネルを設定するためのメッセージ・フローを示す。このプロセスは、ユーザが、ウェブサイト上であるビデオに対するリンクを選択することから開始することができる(ステップ500b)。応答して、クライアントは、HTTP GET要求を送って、マニフェスト・ファイルをサーバから得ることができ(ステップ501b)、URLがマニフェスト・ファイルを指し示すことができる(例えば、リディレクトによって)。マニフェスト・ファイルは、サーバによって(この場合、XMLファイルの形態で)クライアントに送られる(ステップ502b)。
【0063】
クライアントは、マニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置を得て(ステップ503b)、マニフェスト・ファイルに埋め込まれた情報を使用して、SIP INVITEメッセージをSIPアプリケーション・サーバに送ることができる(ステップ504b)。この情報は、セッション記述プロトコル・メッセージ[http://www.ietf.org/rfc/rfc4566.txt]としてフォーマットすることができる。サーバは、INVITEメッセージを受け入れ、SIP 200 OKメッセージで応答する(ステップ505b)。次いで、着信メッセージを処理してSIPセッションを作成するために、サーバは専用プロセス/スレッドを作成し(ステップ506b)、これによってSIPベース・ストリーミング制御チャネルを確立する。このSIPベース・ストリーミング制御チャネルは、サーバ開始ストリーミング制御を行うために使用することができる(ステップ507b)。
【0064】
図5Cは、
図2と同様に、XMPPプロトコルを使用してストリーミング制御チャネルを設定するためのメッセージ・フローを示す。このプロセスは、ユーザが、ウェブサイト上であるビデオに対するリンクを選択することから開始することができ(ステップ500c)、URLがマニフェスト・ファイルを指し示すことができる(例えば、リディレクトによって)。応答して、クライアントは、HTTP GET要求を送って、マニフェスト・ファイルをサーバから得ることができる(ステップ501c)。マニフェスト・ファイルは、サーバによって(この場合、XMLファイルの形態で)クライアントに送られる(ステップ502c)。
【0065】
クライアントは、マニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置を得て(ステップ503c)、XMPPサーバのJabber Identifier(JID)のようなマニフェスト・ファイルに埋め込まれた情報を使用して、XMPPセッション要求メッセージを、1つ以上のXML Stanzasの形態でXMLストリーム上でXMPPサーバに送ることができる(ステップ505c)。XMPPサーバは、このセッション要求メッセージを受け入れて、セッション作成結果メッセージで応答する(ステップ506c)。次いで、 着信メッセージを処理してXMPPセッションを作成するために、サーバは専用プロセス/スレッドを作成し(ステップ507c)、これによってXMPPベース・ストリーミング制御チャネルを確立する。XMPPベース・ストリーミング制御チャネルは、サーバ開始ストリーミング制御を行うために使用することができる(ステップ508c)。
【0066】
図6は、本発明の一実施形態にしたがって、セグメント化されたコンテンツをクライアントに配信するコンテンツ・ストリーミング・システム600を示す。具体的には、
図6はCDNを含むコンテンツ配信システムのアーキテクチャ全体像を示す。CDNは、CDNにおける1つ以上の配信ノードと1つ以上のクライアントとの間においてネットワーク開始制御ストリーミング・プロセスを設けるように構成される。ネットワーク開始制御は、
図2から
図5を参照して説明したストリーミング制御チャネル機能性に基づいて実現することができる。
【0067】
この実施形態では、クライアント配信システムは、少なくとも1つのコンテンツ配信ネットワーク(CDN)602、トランスポート・ネットワーク600を介して1つ以上のクライアント603に結合されたコンテンツ・ソース(CS)601を含むことができる。コンテンツ・ソースは、コンテンツ提供システム(CPS)、コンテンツ準備システム、または他のCDNに関係することができる。CPSは、コンテンツ、例えば、オーディオ項目またはビデオ・タイトルを顧客に提供するように構成することができ、顧客は、クライアントを使用して、コンテンツを購入し受信することができる。
【0068】
クライアントには、端末、即ち、コンテンツ処理デバイス、例えば、電子タブレット、スマート・フォン、ノートブック、メディア・プレーヤ等というような、(移動体)コンテンツ・プレイ・アウト・デバイス上で実行するソフトウェア・プログラムを実装することができる。実施形態では、端末がコンテンツ・プレイ・アウト・プレーヤによる今後の消費のためにコンテンツを処理し一時的に格納するように構成されたセット・トップ・ボックスまたはコンテンツ記憶デバイスであってもよい場合もある。
【0069】
CDNは、配信ノード(DN1,DN2)611,612、および少なくとも1つの中央CDNノード(CCN)610を含むことができる。各配信ノードは、コントローラ630、631、ならびにコンテンツを格納およびバッファリングするキャッシュ632、633を含む、またはこれらと関連付けることができる。各CCNは、外部ソース、例えば、コンテンツ提供者または他のCDNからのコンテンツの収集を制御する収集機能(またはコンテンツ起点ノード、COF(content origin function)620、コンテンツがCDN内部のどこに格納されているかについての情報を維持するコンテンツ位置データベース622、およびコンテンツの1つ以上のコピーの配信ノードに対する配給を制御し、更にクライアントをしかるべき配信ノードにリディレクトする(要求ルーティングとしても知られるプロセス)CDN制御機能(CDNCF)621を含むことができ、あるいはこれらと関連付けることができる。配給は、CDN全域にわたって、クライアントに対するコンテンツ配信に十分な帯域幅が保証されるように制御することができる。一実施形態では、CDNは、 ETSI TS 182 019に記載されるように、CDNに関係することができる。
【0070】
顧客は、要求をウェブ・ポータル(WP)661に送ることによって、セグメント化されたコンテンツ、例えば、ビデオ・タイトルをCPS660から購入することができる。ウェブ・ポータル661は、購入可能なビデオ・タイトルを識別するタイトル参照を供給するように構成される。この要求に応答して、クライアントは、タイトル参照の少なくとも一部をWPから受信し、そして選択されたコンテンツを配信することができるCDNのCDNCFの位置情報、例えば、URLを受信することができる。
【0071】
CDNCFは、選択されたコンテンツをクライアントに配信するように構成される1つ以上の配信ノードに関連付けられたクライアント位置情報を送ることができる。セグメントは、CDNにおける1つの配信ノード上にホストされても、あるいは代わりにCDNにおける複数の異なる配信ノードにホストされてもよい。例えば、人気が高いセグメントは、CDNにおける多数の配信ノード上にホストされ、適時の配信を保証できるようにするとよい。通例、CDNCFは、選択されたコンテンツをクライアントに配信するのに最も適した配信ノードをCDNにおいて選択することができる。1つ以上の配信ノードを選択する判断基準は、配信ノードの処理負荷、および/またはクライアントに関連付けられたコンテキスト情報、例えば、クライアントの位置(IPアドレス)および/またはクライアントの登録(例えば、
図2を参照して先に説明したような特別登録および通常登録)に基づくことができる。したがって、このように、CDNCFは動的にマニフェスト・ファイルを生成することができ、マニフェスト・ファイルは、セグメントをクライアントに効率的に配信するために最適化される。
【0072】
クライアントは、例えば、従来のDNSシステムを使用して、CDNにおける配信ノードに連絡することができる。更に、コンテンツをメディア・ストリーミング機能652に配信するためには種々のストリーミング・プロトコルを使用することができる。メディア・ストリーミング機能652は、ビデオ・プレイ・アウト機能651によるプレイ・アウトのためにストリームを処理する。このようなプロトコルは、HTTPおよびRTP/RTCP型ストリーミング・プロトコルを含むことができる。好ましい実施形態では、HTTP適応ストリーミング(HAS)のような適応ストリーミング・プロトコル、およびApple社のHTTPライブ・ストリーミング、Microsoft Smooth Streaming、Adobe社のHTTP動的ストリーミング、3GPP−DASH、およびHTTP上MPEG動的適応ストリーミングというような関連プロトコルを使用することができる。
【0073】
CDNは、セグメント化されたコンテンツを収集し配給するように構成される。既知のセグメント化ストリーミング・システムは、HTTP適応ストリーミング(HAS)のような、時間セグメント化に基づくことができる。この場合、コンテンツは、多数のセグメント(断片または部分)に編成することができ、セグメントは、MPEGまたはAVIのような既知のトランスポート・コンテナ・フォーマットにしたがってフォーマットすることができる。
【0074】
セグメント間の関係は、マニフェスト・ファイル内に記述することができ、マニフェスト・ファイルは、特定のファイル名拡張子、例えば、.mf、.xml、および.m3u8を使用して格納および識別することができる。マニフェスト・ファイルは、更に、1つ以上の配信ノード上における異なるセグメントの位置および名前(セグメント識別子)を記述することもできる。セグメント、特に、人気のあるセグメントは、CDNにおける1つよりも多い配信ノードから配信されてもよい。更に、ある状況では、セグメントは、他のCDNドメインにおける配信ノードから抽出されなければならないこともある。この状況については、
図12および
図13を参照して更に詳しく説明する。CDNCFは、セグメントを抽出することができる位置を管理することができる。このために、CDNCFはコンテンツ位置データベース622を使用することができる。一実施形態では、コンテンツ位置データベースは、 ETSI TS 182 019に記載されるように、アセット位置検出機能(ALF)に関係することができる。
【0075】
更に、CDNは配信連続ノード(DCN)613も含むことができる。配信連続ノード613は、クライアントに関連付けられたストリーミング制御チャネルを設定し管理し、更にクライアントと、これらのクライアントが接続される配信ノード(1つまたは複数)を含むデータベースを維持するように構成される。DCNは、配信連続管理機能(DCMF)640を含むことができる。この機能は、CDNCFの要求−ルーティング(RR)機能から発する通知を監視するプロセスを実行することができる。DCNは、更に、クライアントからのチャネル設定要求を監視し、クライアントにおける制御チャネル・クライアント(CCCF)機能650と共にストリーミング制御チャネルを設定するために、DCNにおいて制御チャネル・サーバ機能(CCSF)641を含むことができる。
【0076】
更に、DCN内におけるまたはDCNに関連付けられた配信連続(DC)データベース642は、クライアント情報(例えば、そのIPアドレス)およびマニフェスト・ファイル情報(即ち、セグメント識別子(例えば、ファイル名)およびこれらのセグメントをホストする配信ノードの少なくとも一部)を格納することができる。配信連続管理機能(DCMF)は、CDNCFまたはCDNにおける別のネットワーク監視機能から発するネットワーク通知、例えば、(過剰)負荷通知または障害通知を監視し、このようなネットワーク通知の受信に応答してマニフェスト・ファイル更新プロセスを開始することができる。DCNにおけるプロセスおよび機能についての詳細については、
図8を参照して説明する。
【0077】
図6では、DCNにおける機能、即ち、DCMFおよびCCSFが別のノード(DCN)上に実装されるが、別の実施形態では、これらの機能がCDNCFおよび収集機能を含むCCN610上において完全にまたは部分的に実装されてもよい。
【0078】
図7は、本発明の一実施形態によるコンテンツ・ストリーミング・システムにおける使用のためのメッセージ・フローを示す。具体的には、
図7は、CDNにおける1つ以上の配信ノードと1つ以上のクライアントとの間におけるストリーミング・プロセスのネットワーク開始制御を行うように構成されたCDN型コンテンツ・ストリーミング・システムにおける使用のためのメッセージ・フローを示す。この実施形態では、CDNは、少なくとも第1および第2配信ノード(DN1、DN2)、ならびに
図6を参照して説明したようなCDNCF、DCMF、およびCCSFを含むCCNを含むことができる。
【0079】
図7におけるプロセスは、ユーザが、ウェブサイト上においてあるビデオに対するリンクを選択することから開始することができ(ステップ700)、URLがマニフェスト・ファイルを指し示すことができる(例えば、リディレクトによって)。選択するとき、クライアントは、HTTP GET要求をCDNCFに送ってマニフェスト・ファイルを得ることができる(ステップ701)。CDNCFは、マニフェスト・ファイルをクライアントに送ることによって、この要求に応答することができる(ステップ702)。この場合、負荷均衡化機能からの情報に基づいて、CDNCFは、第1配信ノードDN1上に格納されたセグメントに対する参照(例えば、セグメント識別子および/または関連する位置情報)を収容するマニフェスト・ファイルを選択および/または生成することができる。更に、CDNCFは、特定のクライアント(例えば、そのIPアドレスによって定められる)に、特定の(1組の)配信ノード(1つまたは複数)(この例では、配信ノードDN1)に対する参照を収容するマニフェスト・ファイルを送ったという事実を記す。このために、CDNCFは、ビデオ・タイトルの少なくとも一部に関連付けられたクライアント情報(例えば、クライアントのIPアドレス)およびマニフェスト・ファイル情報(例えば、マニフェスト・ファイル識別子、マニフェストID)と、配信連続(DC)データベースにおいてマニフェスト・ファイルによって参照されるセグメントをホストする特定の(1組の)配信ノード(1つまたは複数)の位置情報とを今後の使用のために格納することができる(ステップ703)。
【0080】
ここでは、マニフェスト・ファイル情報は、番号によって識別することができ、配信ノードは、CDN内部で知られる配信ノードによって識別することができる。クライアントは、マニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置(例えば、URL)を得ることができる(ステップ704)。更に、クライアントにおけるCCCFは、マニフェスト・ファイルにおけるチャネル設定情報を使用して、CCCFとCDNにおけるCCSFとの間においてストリーミング制御チャネルを設定ことができる(ステップ705a)(CCCFとCCSFとの間にストリーミング制御チャネルを設定するプロセスは、
図2および
図3を参照して説明したので、ここでは繰り返さない)。
【0081】
ストリーミング制御チャネルを確立する間、CCSFは、DCデータベースに格納された情報を使用して、チャネル設定要求を、特定のクライアントおよび1つ以上の関連する配信ノードに相関付けることができる(ステップ705b)。具体的には、CCSFがDCデータベースに問い合わせて、ストリーミング制御チャネルが設定されるクライアントを求め(クライアントは、例えば、そのIPアドレスによって識別することができる)、一意のストリーミング・チャネル識別子、即ち、チャネルID(例えば、ポート番号、またはWebSocketが使用される場合は、WebSocketID)を、当該クライアントに所属するデータベース・エントリに割り当てることができる。このように、CCSFは、特定のクライアント−チャネルの組み合わせと特定の(1組の)配信ノード(1つまたは複数)および/またはマニフェスト・ファイルに関係付けることができる。
【0082】
一旦ストリーミング制御チャネルが設定されたなら、クライアントは、第1セグメント(この場合、segment_low-1)を第1配信ノードDN1(マニフェスト・ファイルにおいて参照される)に要求することによって、ストリーミング・プロセスを開始することができる(ステップ706)。配信ノードDN1は、要求されたセグメントをクライアントにストリーミングすることによって応答することができる(ステップ707)。
【0083】
ストリーミング・プロセスの間、ある時点において、CDNCF(CDNにおける配信ノードの負荷を監視する負荷均衡機能を含むまたはそれと関連付けられる)は、第1配信ノードDN1上の負荷が(最大)閾値に近づくことを注意することができる(ステップ708)。CDNCFは、CDデータベースに格納された情報をチェックすることによって、どのクライアントが第1配信ノードDN1を使用しているのかチェックするように、DCMFに通知することができる(ステップ709)。次いで、DCMFは、第1配信ノードD1の処理負荷が低減されるように、一部(または全部)のクライアントを第1配信ノードDN1から他の第2配信ノードDN2にリディレクトすることを決定することができる。このために、DCMFは、DCデータベースにおける情報を使用して、CCSFにDCMFによって選択されたクライアントのストリーミング制御チャネルを通じてマニフェスト更新トリガを送るように命令することができる(ステップ710)。
【0084】
マニフェスト更新トリガを受信すると、クライアントにおけるCCCFは、マニフェスト要求をCDNCFに送ることによって、新たなまたは更新されたマニフェスト・ファイルを要求するように作動される(ステップ711)(ステップ701を参照して説明したのと同様に)。CDNCFは、マニフェスト要求を受け、クライアントのために新たなまたは更新されたマニフェスト・ファイルを選択または生成し、このマニフェスト・ファイルをクライアントに送ることができる。
【0085】
一実施形態では、新たなまたは更新されたマニフェスト・ファイルを生成するとき、CDNCFは新たな配信ノードを選択するために、負荷均衡化機能からの情報を使用することができる(ステップ702も参照のこと)。更に、新たなまたは更新されたマニフェスト・ファイルは、第2配信ノードDN2上に格納されたセグメントに対するリンクを収容することもできる。
【0086】
一実施形態では、マニフェスト更新トリガは、新たなまたは更新されたマニフェスト・ファイルを含む別のノードを識別する位置情報、例えば、URLを含むことができる。他の実施形態では、新たなまたは更新されたマニフェスト・ファイルを抽出するようにクライアントに通知するためにマニフェスト更新トリガを送る代わりに、新たなまたは更新されたマニフェスト・ファイルを直接ストリーミング制御チャネルを通じてクライアントに送信することもできる。更新マニフェスト・ファイルがクライアントに返送された後、クライアントは新たなまたは更新されたマニフェスト・ファイルを使用して、第2配信ノード(図示せず)からセグメントのストリームを再開する。
【0087】
クライアントは新たなまたは更新されたマニフェスト・ファイルを受信したので、CDNCFは、703を参照して説明したようにこのステップを実行することによって、DCデータベースにおいてそのクライアントに関連付けられたマニフェスト・ファイル情報を更新することができる。このように、今後のある時点において、過剰負荷の問題が発生した場合、CDNCFはクライアントを再度他の配信ノードにリディレクトすることができるとよい。
【0088】
図8は、本発明の一実施形態による配信連続ノード(DCN)に関連付けられたプロセス・フローを示す。具体的には、
図8は、
図6を参照して説明したような配信連続ノード(DCN)上にホストすることができる1つ以上の機能の全体像を示す。DCNは、クライアントに関連付けられたストリーミング制御チャネルを設定および管理し、クライアントとこれらが接続される配信ノード(1つまたは複数)とを列挙する表を維持するように構成することができる。他の実施形態では、DCNに関連付けられた機能の全部または少なくとも一部がCCN上にホストされるのでもよい(
図7、
図9、
図11、および
図13参照)。
【0089】
DCNは、配信連続管理機能(DCMF)を含むことができる。この機能は、CDNCFの要求−ルーティング(RR)機能から発する通知を監視するプロセスを実行することができる(ステップ800)。CDNCFがマニフェスト・ファイルをクライアントに送るときはいつでも、またはクライアントを特定の配信ノードにリディレクトするときはいつでも、CDNCFは、どの配信ノードからクライアントがセグメントを抽出することを予想されるかDCNに通知することができる(即ち、クライアントに送られたマニフェスト・ファイルにおいて参照される配信ノード、またはクライアントがリディレクトされる配信ノード)。この通知を受信すると、DCNは、特定のクライアント(例えば、そのIPアドレスによって識別される)を、そのクライアントに送られたマニフェスト・ファイルにおいて参照される配信ノードの少なくとも一部に割り当てるエントリを配信連続(DC)データベースに追加することができる(ステップ801)。
【0090】
更に、制御チャネル・サーバ機能(CCSF)は、クライアントにおけるCCCFからのチャネル設定要求を監視することができる(ステップ802)。要求を受信した場合、適したプロトコル、例えば、WebSocket、SIP、またはXMPPに基づいて、ストリーミング制御チャネルを設定するプロセスを開始する。
【0091】
ストリーミング制御チャネルの確立の間、CCSFはDCデータベースに問い合わせ、ストリーミング制御チャネルが設定されるクライアント(クライアントは、例えば、そのIPアドレスによって識別することができる)を求め、一意のストリーム・チャネル識別子(例えば、ポート番号、またはWebSocketが使用される場合、WebSocket ID)を、そのクライアントに所属するデータベース・エントリに割り当てることができる(ステップ803)。DCMFは、次いで、ネットワーク通知、例えば、CDNCF、CDNCFに関連付けられた負荷均衡化機能、または別のネットワーク監視機能からのネットワーク過剰負荷通知または障害通知を監視する監視プロセスを実行することができる(ステップ804)。一実施形態では、過剰負荷または障害通知は、CDNCFがリディレクトを望むクライアントの数に関する情報を含むこともできる。
【0092】
一旦DCMFがこのような通知(それ自体における配信ノードまたは他のCDN(図示せず)における配信ノードに関する)をDCNCFから受信したなら、DCデータベースに問い合わせて、過剰負荷または障害通知に関連付けられた配信ノードからセグメントを抽出することが予想されるクライアントをチェックすることができる(ステップ805)。DCMFは、次いで、リディレクトすべき1つ以上のクライアントを選択することができる(ステップ806)(この選択は、ステップ804を参照して先に説明したように、リディレクトされるべきクライアントの数に基づくことができる)。その後、DCMFは、そのデータベースに問い合わせて、選択されたクライアントに関連付けられたストリーミング・チャネル(例えば、ストリーミング・チャネル識別子を使用する)を識別し、これらのチャネルの各々を通じてマニフェスト・トリガを送ることができる。
【0093】
DMCFは、更に、クライアントから発信するメッセージを監視するように構成することもできる。一実施形態では、DMCFが新たなまたは更新されたマニフェスト・ファイルを、ストリーミング制御チャネルを通じて、クライアントに送るのでもよい。
【0094】
図9は、本発明の他の実施形態によるコンテンツ・ストリーミング・システムにおける使用のためのメッセージ・フローを示す。具体的には、
図9は、
図7と同様のコンテンツ配信システムとの使用のためのメッセージ・フローを示す。この実施形態では、しかしながら、マニフェスト・ファイルは、CDNCFによってクライアントに配信されるのではなく、配信ノード自体によって配信される。このために、配信ノード、例えば、第1配信ノードDN1は、その配信ノード上のセグメントに対する参照だけを含むマニフェスト・ファイルを含むことができる。
【0095】
図9におけるプロセスは、ユーザが、ウェブサイト上であるビデオに対するリンクを選択することから開始することができ(ステップ900)、URLがCDNCFの要求ルーティング(RR)機能を指し示す(例えば、コンテンツ・プロバイダからのリディレクトによって)。クライアントがHTTP GET要求をCDNCFに送った後(ステップ901)、CDNCFのRR機能が、例えば、負荷均衡化機能から得られた情報に基づいて、要求されたマニフェスト・ファイルおよび関連するセグメント化されたコンテンツをクライアントに配信するのに適した配信ノードを選択することができる。CDNCFは、次いで、クライアントに、選択された配信ノード(この特定的な例では、第1配信ノードDN1)上のマニフェスト・ファイルへのURLを収容するHTTP REDIRECTメッセージを送ることができる(ステップ902)。
【0096】
HTTP GET要求をリディレクトするとき、CDNCFはクライアント情報(例えば、クライアントのIPアドレス)およびマニフェスト・ファイル情報(例えば、ビデオ・ファイルの少なくとも一部に関連付けられたマニフェスト・ファイル識別子、またはマニフェストID、およびマニフェスト・ファイルによって参照されるセグメントをホストする特定の(1組の)配信ノード(1つまたは複数))を、今後の使用のために配信連続(DC)データベースに格納することができる(ステップ903)。ここでは、マニフェスト・ファイル識別子は、数値によって識別することができ、配信ノードは、CDN内部において知られている配信ノード識別子によって識別することができる。
【0097】
CDNCFからHTTP REDIRECTメッセージを受信すると、クライアントは新たなHTTP GET要求メッセージを、第1配信ノードに関連付けられたREDIRECTメッセージにおけるURLに送ることができる(ステップ904)。配信ノードDN1は、続いて、要求されたマニフェスト・ファイルをクライアントに送ることによって、応答する(ステップ905)。
【0098】
マニフェスト・ファイルを受信した後、クライアントはこのマニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置を得ることができる(ステップ906)。クライアントにおけるCCCFは、マニフェスト・ファイルにおけるチャネル設定情報を使用して、CCSFとクライアントとの間にストリーミング制御チャネルを設定することができる(ステップ907a)(チャネルを設定するプロセスは、
図2および
図3において説明したので、ここでは繰り返さない)。
【0099】
ストリーミング制御チャネルの確立の間、CCSFは、DCデータベースに格納された情報を使用することによって、チャネル設定要求を特定のクライアントおよび関連する配信ノードと相関付けることができる(ステップ907b)。具体的には、CCSFはDCデータベースに問い合わせて、ストリーミング制御チャネルが設定されるクライアント(このクライアントは、例えば、そのIPアドレスによって識別することができる)を求め、一意のストリーミング・チャネル識別子(例えば、ポート番号、またはWebSocketが使用される場合、WebSocket ID)を、クライアントに所属するデータベース・エントリに割り当てることができる。このように、CDNにおける機能は、どのクライアント/チャネルの組み合わせが、どの(1組の)配信ノード(1つまたは複数)を使用しているのかチェックすることができる(例えば、この場合、CDNCFは、特定のクライアントが第1配信ノードDN1を使用しており、特定のマニフェスト・ファイルを受信したことをチェックすることができる)。
【0100】
一旦ストリーミング制御チャネルが設定されたなら(例えば、
図2および
図3において説明したように)、クライアントは、第1配信ノードDN1から得られるセグメントを要求し、受信し、プレイ・アウトし始めることができる(ステップ908)。ストリーミング・プロセスの間、ある時点において、CDNCF(CDNにおける配信ノードの負荷を監視するために負荷均衡化機能を含む、またはこれに関連付けられる)は、第1配信ノードDN1上の負荷が所定の(最大)閾値レベルに達することを通知することができる(ステップ909)。CDNCFは、次に、DCMFを作動させて、DCデータベースに格納された情報をチェックすることによって、どのクライアントが第1配信ノードDN1に関連付けられているか判定することができる(ステップ910)。この情報に基づいて、DCMFは、一部(または全部)のクライアントを第1配信ノードDN1から離れるようにリディレクトすることを決定することができる。
【0101】
このために、CCSFを作動させて、これらのクライアントの制御チャネルを通じてマニフェスト更新トリガを送ることができる(ステップ911)。クライアントがそれらの更新マニフェストを第1配信DN1(デフォルトとして)を受信しないことを確実にするために、マニフェスト更新トリガは、新たなまたは更新されたマニフェスト・ファイルに関連付けられたURLを含むことができる(例えば、第2配信ノードDN2を指し示す)。マニフェスト更新トリガの受信は、クライアントに、新たなマニフェスト・ファイルを要求しなければならないことを伝える。次いで、マニフェスト・ファイル要求を、マニフェスト更新トリガにおいて参照された第2配信ノードDN2に関連付けられたURLに送ることができる(ステップ912)。第2配信ノードDN2は、要求されたマニフェスト・ファイルをクライアントに送ることによって応答することができる。
【0102】
このマニフェスト・ファイルを受信すると、クライアントは、後続のセグメントを、第1配信ノードDN1の代わりに、第2配信ノードDN2に要求することによって、ストリーミング・プロセスを継続することができる(ステップ913)。クライアントは新たなまたは更新されたマニフェスト・ファイルを受信したので、CDNCFは、903を参照して説明したステップを実行することによって、DCデータベースにおいて、そのクライアントに関連付けられたマニフェスト・ファイル情報を更新することができる。このように、今後のある時点において過剰負荷の問題が発生した場合、CDNCFはクライアントを再度他の配信ノードにリディレクトすることができると考えられる。
【0103】
したがって、
図9に示す実施形態では、クライアントとCCSFとの間にストリーミング制御チャネルを設定するためのチャネル設定情報を含むマニフェスト・ファイルが、セグメントが格納された配信ノードに格納される。この実施態様では、CDNCFの負荷および複雑さの一部が複数の配信ノードに肩代わりされるという利点がある。
図7では、CDNCFは、マニフェスト・ファイルが更新される毎に負荷がCDNCFに追加されるように、マニフェスト・ファイルをホストし、および/または生成する。ある種の実施態様では、例えば、生コンテンツの場合、クライアント開始マニフェスト更新は、非常に頻繁に、例えば、30秒毎に1回起こる場合もあり、これによってCDNCFにかかる負荷が増大する。したがって、クライアント開始マニフェスト要求に応答するタスクを、配信ノードに委託することによって、CDNCFの相当な負荷低減を実現することができる。
【0104】
図10は、本発明の更に他の実施形態によるコンテンツ・ストリーミング・システムにおける使用のためのメッセージ・フローを示す。具体的には、
図10は、
図7と同様のメッセージ・フローを示すが、DCN機能性をCDNCFに追加させる代わりに、CDNが別のノードに配置される。
【0105】
図10におけるプロセスは、ユーザが、ウェブサイト上であるビデオに対するリンクを選択し(ステップ1000)、およびCDNCFからマニフェスト・ファイルを得るためにクライアントによって送られるHTTP GET要求の送信(ステップ1001)から開始することができ、URLがCDNCF上にホストされたマニフェスト・ファイルを指し示すことができる(例えば、リディレクトによって)。CDNCFは、マニフェスト・ファイルをクライアントに送ることによって、この要求に応答することができる。この例では、負荷均衡化機能から得られた情報に基づいて、CDNCFは、第1配信ノードDN1上に格納されたセグメントに対する参照を収容するマニフェスト・ファイルを選択することができる(ステップ1002)。
【0106】
CDNCFは、DCNに、具体的には、DCNにおけるDCMFに、特定のクライアント(例えば、そのIPアドレスによって識別される)に、特定の(1組の)配信ノード(1つまたは複数)に対する参照を含む新たなまたは更新されたマニフェスト・ファイルが供給されたことを示す通知を送ることができる(ステップ1003)。DCMFは、クライアント情報(例えば、クライアントのIPアドレス)およびマニフェスト・ファイル情報(例えば、ビデオ・ファイルの少なくとも一部に関連付けられたマニフェスト・ファイル識別子、またはマニフェストID、およびマニフェスト・ファイルによって参照されたセグメントをホストする特定の(1組の)配信ノード(1つまたは複数)の位置情報)を、今後の使用のためにDCデータベースに格納することができる(ステップ1004)。ここでは、マニフェスト・ファイル識別子は数値によって識別することができ、配信ノードは、CDN内部において知られている配信ノード識別子によって識別することができる。
【0107】
クライアントは、マニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置(例えば、URL)を得ることができる(ステップ1005)。更に、クライアントは、マニフェスト・ファイルにおけるチャネル設定情報を使用して、CDNへのチャネルを設定することができる(ステップ1006a)。(チャネルを設定するプロセスは、
図2および
図3において説明したので、ここでは繰り返さない)。
【0108】
ストリーミング制御チャネルの確立の間、CCSFは、DCデータベースに格納された情報を使用することによって、チャネル設定要求を特定のクライアントおよび関連する配信ノードと相関付けることができる(ステップ1006b)。具体的には、CCSFはDCデータベースに問い合わせて、ストリーミング制御チャネルが設定されるクライアント(このクライアントは、例えば、そのIPアドレスによって識別することができる)を求め、一意のストリーミング・チャネル識別子(例えば、ポート番号、またはWebSocketが使用される場合、WebSocket ID)を、クライアントに所属するデータベース・エントリに割り当てることができる。このように、CDNにおける機能、例えば、CDNCF、DCMF、およびCCSFは、特定のクライアント−チャネルの組み合わせを特定の(1組の)配信ノード(1つまたは複数)に関係付けることができる。
【0109】
一旦ストリーミング制御チャネルが設定されたなら、ストリーミング・クライアント機能は、第1配信ノードDN1から得られるセグメントを要求し、受信し、プレイ・アウトし始めることができる(ステップ1007)。ストリーミング・プロセスの間、DCMFは、ネットワーク通知、例えば、CDNCF、CDNCFに関連付けられた負荷均衡化機能、あるいはネットワーク監視機能からのネットワーク過剰負荷または障害通知を監視するための監視プロセスを実行することができる。例えば、ある時点において、全ての配信ノードの負荷を監視するための負荷均衡化機能を含むまたはこれに関連付けられたCDNCFが、DN1にかかる負荷が所定の(最大)閾値に達することを通知することもできる(ステップ1008)。
【0110】
次いで、CDNCFは過剰負荷通知をDCMFに送り、第1配信ノードDN1にかかる負荷が所定の(最大)閾値に近づきつつあることを示すことができる。一実施形態では、過剰負荷通知が、リディレクトすべきクライアントの数に関する情報を含んでもよい(ステップ1009)。DCMFは、DCデータベースにおいてマニフェスト・ファイル情報をチェックすることによって、第1配信ノードDN1を使用しているクライアントを判定することができる(ステップ1010)。
【0111】
DCMFは、次に、リディレクトすべきクライアントを選択し、CCSFを作動させて、これらのクライアントのストリーミング制御チャネルを通じて、マニフェスト更新トリガを送ることができる(ステップ1011)。マニフェスト更新トリガの受信は、ステップ1001を参照して説明したのと同様の方法で、クライアントに、マニフェスト要求をCDNCFに送ることによって新たなマニフェストを要求するように伝えることができる(ステップ1012)。
【0112】
CDNCFは、マニフェスト要求を受信し、クライアントに適した新たなマニフェスト・ファイルを生成または選択することができる(ステップ1013)(例えば、負荷均衡化機能を調べることによって)。この場合、選択されたマニフェスト・ファイルは、例えば、第2配信ノードDN2上に格納されたセグメントに対するリンクを収容することができる。次いで、選択されたマニフェスト・ファイルをクライアントに送ることができる。この新たなマニフェスト・ファイルを受信すると、クライアントは、第1配信ノードDN1の代わりに第2配信ノードDN2に後続のセグメントを要求することによって、ストリーミング・プロセスを継続することができる。
【0113】
クライアントは、異なる配信ノード(即ち、第1配信ノードDN1の代わりに第2配信ノードDN2)上にホストされたセグメントを参照する新たなまたは更新されたマニフェスト・ファイルを受信したので、CDNCFは、クライアントに関連するDCデータベースにおいて1つまたは複数のエントリを更新することができる。そうするために、CDNCFは、CDNにおけるDCMFに、クライアントには新たなまたは更新されたマニフェスト・ファイルが供給されたという通知を送ることができる(ステップ1003を参照して説明したのと同様に)。この通知を受信した後、DCMFはクライアント情報およびマニフェスト・ファイル情報をDCデータベースに格納することができる(ステップ1004を参照して説明したのと同様に)。このように、CDNCFは、第2配信ノードDN2に関連付けられた別の可能な負荷問題を扱うことができる。
【0114】
したがって、
図10に示す実施形態では、ストリーミング制御機能を確立し管理する機能が、別のネットワーク・ノード、即ち、DCN上に実装されるので、CCNにおけるCDNCFに必要とされる変化は非常に限定され、既存のCDNCFの実施態様を再利用することができ、これによって、ストリーミング制御チャネル機能性をCDNに追加するときに必要となるコストを抑える。更に、クライアントの数、および関連するアクティブなストリーミング制御チャネルの数が増大した場合、CDNCF全体ではなく、DCNの容量だけをアップグレードすれば済む。このように、この実施形態は、CDNに関連付けられた多数のストリーミング制御チャネルを管理するために、スケーラブルなソリューションを提供する。
【0115】
図11は、本発明の別の実施形態によるコンテンツ・ストリーミング・システムにおける使用のためのメッセージ・フローを示す。具体的には、
図11は、
図7と同様のメッセージ・フローを示す。しかしながら、各マニフェスト・ファイルが1つの配信ノードに対する参照だけを含む代わりに、マニフェスト・ファイルは多数の配信ノードに対する参照を収容することができる。この実施形態では、CDNCFは、マニフェスト・ファイルを作成しホストするように構成することができる。
【0116】
このプロセスは、ユーザが、ウェブサイト上であるビデオに対するリンクを選択すること(ステップ1100)、およびCDNCFからマニフェスト・ファイルを得るためにクライアントによって送られるHTTP GET要求の送信(ステップ1101)から開始することができ、URLがCDNCF上にホストされたマニフェスト・ファイルを指し示す(例えば、リディレクトによって)。クライアントからマニフェスト要求を受信すると、CDNCFは新たなマニフェスト・ファイルを作成するか、または異なる配信ノード上にあるセグメントに対する参照を含む既存のマニフェスト・ファイルを選択することができる(ステップ1102)。例えば、一実施形態では、マニフェスト・ファイルは、第1配信ノードDN1上にホストされた低品質セグメントに対する参照、および第2配信ノードDN2上にホストされた高品質セグメントに対する参照を含むことができる。CDNCFは、CDNにおける配信ノードに関連付けられた負荷情報(負荷均衡化機能によって生成される)を使用し、更には任意にクライアントの位置情報(例えば、IPアドレス)を使用して、クライアントに要求されたセグメント(の一部)を配信するのに最も適した配信ノードを選択することができる。この場合、マニフェスト・ファイルは、少なくとも第1配信ノードDN1および第2配信ノードDN2に対する参照を含むことができる。
【0117】
CDNCFは、マニフェスト・ファイルをクライアントに送り(ステップ1103)、クライアント情報(例えば、そのIPアドレス)ならびにマニフェスト・ファイル情報(例えば、クライアントのIPアドレス)およびマニフェスト・ファイル情報(例えば、ビデオ・タイトルの少なくとも一部に関連付けられた、マニフェスト・ファイル識別子、またはマニフェストID、ならびにマニフェスト・ファイルによって参照されるセグメントをホストする特定の(1組の)配信ノード(1つまたは複数)、この場合、第1および第2配信ノードD1およびD2の位置情報)をDCデータベースに格納することができる(ステップ1104)。ここでは、マニフェスト・ファイル識別子は、数値によって識別することができ、配信ノードは、CDN内部で知られている配信ノード識別子によって識別することができる。
【0118】
クライアントは、マニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置を得て(ステップ1105)、マニフェスト・ファイルにおけるチャネル設定情報を使用して、クライアントとCCSFとの間にストリーミング制御チャネルを設定することができる(ステップ1106a)。(このチャネルを設定するプロセスは
図2および
図3において説明したので、ここでは繰り返さない。)
ストリーミング制御チャネルの確立の間、CCSFは、DCデータベースに格納された情報を使用することによって、チャネル設定要求を特定のクライアントおよび関連する(1組の)配信ノード(1つまたは複数)と相関付けることができる(ステップ1106b)。具体的には、CCSFがDCデータベースに問い合わせて、ストリーミング制御チャネルが設定されるクライアントを求め(クライアントは、例えば、そのIPアドレスで識別することができる)、一意のストリーミング・チャネル識別子(例えば、ポート番号、またはWebSocketが使用される場合は、WebSocket ID)を、クライアントに所属するデータベース・エントリに割り当てることができる。このように、CDNにおける機能は、特定のクライアント−チャネルの組み合わせを特定の(1組の)配信ノード(1つまたは複数)に関係付けることができる。
【0119】
一旦ストリーミング制御チャネルが設定されたなら、クライアントは第1および第2配信ノードから発信するセグメントを要求し、受信し、プレイ・アウトすることによって、ストリーミング・プロセスを開始することができる(ステップ1107)。ストリーミング・プロセスの間、ある時点において、CDN内部の配信ノードの負荷を監視するための負荷均衡化機能を含むまたはこれに関連付けられたCDNCFが、第1配信ノードDN1にかかる負荷が所定の(最大)閾値に達するまたは接近することを通知することができる(ステップ1108)。すると、CDNCFは、DCMFを作動させて、DCデータベースにおけるマニフェスト・ファイル情報をチェックすることによって、第1配信ノードDN1と関連付けられたクライアントはどれかチェックすることができる。次いで、DCMFは、どのクライアントがマニフェスト更新を必要とするか判定し、CCSFを作動させて、マニフェスト更新トリガをこれらのクライアントの制御チャネルを通じて送ることができる(ステップ1110)。
【0120】
マニフェスト更新トリガは、マニフェスト要求をCDNCFに送ることによって(ステップ1101)、クライアントが新たなまたは更新されたマニフェスト・ファイルを必要とすることを、クライアントに知らせることができる(ステップ1111)。CDNCFは、マニフェスト要求を受信し、このクライアントに適した新たなマニフェスト・ファイルを作成または選択する(ステップ1102参照)(ステップ1012)。この場合、新たなまたは更新されたマニフェスト・ファイルは、例えば、第1配信ノードDN1に関連付けられたURLを、同じセグメントをホストする他の配信ノードDN(例えば、第3配信ノードDN3)に関連付けられたURLと交換することができる。配信ノードDN2に関連付けられたURLは交換されない。何故なら、第1配信ノードDN1だけが過剰負荷になる危険があったからである。CDNCFは、新たなまたは更新されたマニフェスト・ファイルをクライアントに送ることができ(ステップ1113)、クライアントはその(内部)セグメント・リストを更新し、新たなまたは更新されたマニフェスト・ファイルに列挙されたセグメントを要求することによって、ストリーミング・プロセスを継続することができる。
【0121】
クライアントは新たなまたは更新されたマニフェスト・ファイルを受信したので、CDNCFは、1104を参照して説明したステップを実行することによって、そのクライアントに関連付けられたマニフェスト・ファイル情報をDCデータベースにおいて更新する。このように、今後のある時点において、過剰負荷の問題が発生した場合、CDNCFはこのクライアントを再度他の配信ノードにリディレクトすることができると考えられる。
【0122】
したがって、
図11に示す実施形態は、1つのマニフェストによって参照されたセグメントを多数の配信ノードに渡って分散できるという利点があり、各配信ノードは全てのセグメントの内部分集合のみをホストする。これの利点の1つは、CDNが異なるタイプのセグメント間で区別することが可能になることである。セグメント化されたコンテンツでは、あるセグメントが他のセグメントよりも人気がある(一層頻繁に要求される)ことがある。例えば、時間的セグメント化ビデオ・タイトルでは、早い方のセグメントは、遅い方のセグメントよりも頻繁に要求されるのが通例である。他の例では、ビデオ・タイトルが、異なるビデオ品質に関係するセグメントを有し、ある品質が他のよりも人気があるという場合もある。このような場合、CDNは、人気が高い方のセグメントを、人気が低い方のセグメントよりも多くの配信ノードにおいてホストし、スケーラビリティ強化および効率向上に備えることができる。
【0123】
図12は、本発明の他の実施形態によるコンテンツ・ストリーミング・システムを示す。具体的には、
図12は、
図6を参照して説明したような、CDNベースのコンテンツ配信システムを示す。しかしながら、この実施形態では、本システムは少なくとも2つの相互接続されたCDNを含む。具体的には、このコンテンツ・ストリーミング・システムは、CDN相互接続インターフェース1264を介して少なくとも1つの第2CDN 1204(下流CDNとも称される)に相互接続された第1CDN 1202(上流CDNとも称される)を含み、各CDNは、当該CDN内における1つ以上の配信ノードと1つ以上のクライアントとの間において、ストリーミング・プロセスのネットワーク開始制御を行うように構成される。ネットワーク開始制御は、
図2から
図5を参照して説明したようなストリーミング制御チャネル機能性に基づいて実現することができる。
【0124】
更に、コンテンツ配信システムは、クライアント1203をホストする1つ以上の端末1204にトランスポート・ネットワーク600を通じて接続されたコンテンツ・ソース1201を含む。コンテンツ・ソースは、コンテンツ・プロバイダ・システムCPS、コンテンツ準備システム、または他のCDNに関係することができる。CPSは、コンテンツ、例えば、ビデオ・タイトルを顧客に提供するように構成することができ、顧客は、ビデオ・プレイ・アウト機能1251によるプレイ・アウトのためにストリームを処理するメディア・ストリーミング機能1252を含むクライアントを使用して、コンテンツを購入し受信することができる。
【0125】
図6と同様、CDNは、配信ノード1211,1212,1215、および少なくとも1つのCCN1210,1223を含むことができる。各配信ノードは、コントローラ1230,1231,1234,およびコンテンツを格納およびバッファリングするキャッシュ1232,1233,1235を含むことができ、またはこれらと関連付けられるのでもよい。各CCNは、外部ソース、例えば、コンテンツ・プロバイダまたは他のCDNからのコンテンツの収集を制御する収集ノード(またはコンテンツ発信機能、COF)1220,1223,コンテンツがCDN内のどこに格納されたかについての情報を維持するコンテンツ位置データベース1222,1225、ならびに配信ノードへのコンテンツの1つ以上のコピーの配給を制御し、更にクライアントをしかるべき配信ノードにリディレクトする(要求ルーティングとしても知られるプロセス)CDN制御機能(CDNCF)1221,1224を備えることができ、またはこれらと関連付けられるのでもよい。顧客は、要求をウェブ・ポータル(WP)1261に送ることによって、コンテンツ、例えば、ビデオ・タイトルをCPS1260から購入することができ、ウェブ・ポータル1261は、
図6を参照して説明したのと同様に、購入可能なコンテンツ項目を識別するタイトル参照を供給するように構成される。
【0126】
CDNCFは、コンテンツ位置データベース1222,1225を使用して、セグメントを抽出することができる位置を管理することができる。更に、CDNは、配信連続ノード(DCN)1213,1216も含むことができる。配信連続ノード1213,1216は、クライアントに関連付けられたストリーミング制御チャネルを設定および管理し、クライアント情報およびこれらのクライアントが接続された配信ノード(1つまたは複数)のマニフェスト・ファイル情報を含むデータベースを維持するように構成される。DCNは、単体DCNとして構成される、またはCDNCFに統合されるのでもよい。
【0127】
DCNは、CDNCFの要求ルーティング(RR)機能から発信する通知を監視する配信連続管理機能(DCMF)1240、1243と、クライアントからのチャネル設定要求を監視し、クライアントにおける制御チャネル機能1250と共にストリーミング制御チャネルを設定する制御チャネル・サーバ機能(CCSF)1241、1244と、クライアント情報(例えば、クライアントのIPアドレス)およびマニフェスト・ファイル情報(即ち、セグメント識別子(例えば、ファイル名)およびこれらのセグメントをホストする配信ノードの少なくとも一部に関連付けられた位置情報(例えば、URL))を格納するためにDCN内にあるまたはこれに関連付けられた配信連続(DC)データベース1242,1245を含むことができる。
【0128】
DCMFは、ネットワーク通知、例えば、CDNCFの要求ルーティング(RR)機能、CDNにおける別の過剰負荷機能、またはネットワーク監視機能から発信する過剰負荷または障害通知を監視し、このような通知の受信に応答してマニフェスト・ファイル更新プロセスを開始することができる。マニフェスト・ファイル更新プロセスの詳細については、以下で
図13を参照して更に詳しく説明する。
【0129】
図12のコンテンツ配信システムでは、上流CDNが、クライアントへのセグメント配信の一部を、下流CDNに外部委託することができる。例えば、一実施形態では、低品質セグメントが、第1CDN A(例えば、移動体デバイスに対するコンテンツ配信のために構成される)によって突き止められて配信されてもよく、高品質セグメントが、第2CDN Bによって突き止められて配信されてもよい(HDTV技術をサポートする家庭用メディア・デバイス)への高品質セグメントの配信のために構成される)。
【0130】
セグメント配信の一部を下流CDNに外部委託するとき、上流CDN(または、具体的には、上流CDNのCDNCF)が、第1CDN Aにおける1つ以上の配信ノードに対する参照と、第2CDN Bにおける1つ以上の配信ノードに対する参照とを含むマニフェスト・ファイルを生成するプロセスを開始することができる。このようなマニフェスト・ファイルは、CDN間マニフェスト・ファイルと称することもできる。CDN間マニフェスト・ファイルは、更に、クライアントと上流CDN Aとの間にストリーミング制御チャネルを設定するためのチャネル設定情報も含むことができる。
【0131】
CDN間マニフェスト・ファイルを生成するプロセスの間、相互接続インターフェース1264を介してCDN間で情報を交換することができる。具体的には、CDN間マニフェスト・ファイルの生成の間、上流CDNは、下流CDNに外部委託された1つ以上のセグメントに関する位置情報を、下流CDNに要求することができる。応答して、下流CDNは、クライアントに関するコンテキスト情報に基づいて、要求されたセグメントをホストする配信ノードを選択することができる。例えば、下流CDNは、クライアントの位置に地理的に最も近い配信ノードを選択することもできる。この情報は、続いて、CDN間マニフェスト・ファイルの生成のために、上流CDNのCDNCFに送られる。したがって、
図13におけるコンテンツ配信システムは、「個人専用とされた」CDN間マニフェスト・ファイルを動的に生成するように構成される。
【0132】
一旦CDN間マニフェスト・ファイルが生成されクライアントに転送されると、このクライアントにおける制御チャネル機能は、CDN間マニフェスト・ファイル内にあるチャネル設定情報を使用して、上流CDNのDCNにおけるCCSFと共にストリーミング制御チャネルを設定し、セグメントの要求およびプレイ・アウトを開始することができる。
【0133】
ストリーミング・プロセスの間、DCMFは、ネットワーク通知、例えば、(過剰)負荷通知または障害通知をCDNCFから受信し、クライアントを1つ以上の他の配信ノードにリディレクトすべきであると判断することができる。このネットワーク通知は、上流CDNまたは下流CDNにおけるネットワーク問題状況に関係することができる。後者の場合、下流CDNのCDNCFは、ネットワーク通知を、相互接続インターフェース1264を介して、上流CDNのCDNCFに送ることができる。
【0134】
図13は、本発明の更に別の実施形態によるコンテンツ・ストリーミング・システムにおける使用のためのメッセージ・フローを示す。具体的には、
図13は、
図12に示したコンテンツ配信ネットワークにおける使用のためのメッセージ・フローを示し、マニフェスト・ファイルは、異なるCDNに関連付けられた異なる配信ノード上にホストされたセグメントに対する参照を含むことができる。
【0135】
このプロセスは、ユーザが、ウェブサイト上であるビデオに対するリンクを選択することから開始することができ(ステップ1300)、URLが第1CND Aと関連付けられた第1CDNCF上にホストされたマニフェスト・ファイルを指し示す(例えば、リディレクトによって)。このCDNは、上流CDNと称することもある。選択のとき、クライアントは、CDN AのCDNCFからマニフェスト・ファイルを得るために、HTTP GET要求を送ることができる(ステップ1301)。
【0136】
クライアントからマニフェスト要求を受信した後、第1CDNCFは、新たなマニフェスト・ファイルを作成するまたは既存のマニフェスト・ファイルを更新するプロセスを開始することができ、マニフェスト・ファイルは、異なるCDNに関連付けられた異なる配信ノード上にあるセグメントに対する参照を含むことができる(ステップ1302)。例えば、一実施形態では、低品質セグメントが第1CDN Aによって突き止められて配信されてもよい(例えば、移動体デバイスに対するコンテンツ配信のために構成される)。このCDNを上流CDNと称することもある。更に、高品質セグメントは、第2CDN Bによって突き止められて配信されてもよい(例えば、HDTV技術をサポートする家庭用メディア・デバイスに対する高品質セグメントの配信のために構成される)。このCDNを下流CDNと称することもある。少なくとも第1CDN Aに関連付けられた第1配信ノードDN1と、CDN Bに関連付けられた第2配信ノードDN2に対する参照を含むマニフェスト・ファイルを、CDN間マニフェスト・ファイルと称することもある。CDN間マニフェスト・ファイルは、更に、クライアントと上流CDN Aに関連付けられたCDNCFとの間にストリーミング制御チャネルを設定するためのチャネル設定情報も含むことができる。
【0137】
一実施形態では、CDN間マニフェスト・ファイルは、上流CDN Aの第1CDNCFが、CDN Bによってクライアントに配信されるべき所定数のセグメントの位置に対する参照を提供するように、下流CDN Bの第2CDNCFに要求するプロセスに基づいて、生成することができる。
【0138】
第1CDNCFは、次に、CDN間マニフェスト・ファイルをクライアントに送ることができ(ステップ1303)、第1CDNCFはクライアント情報(例えば、そのIPアドレス)およびマニフェスト・ファイル情報を、第1CDNCFに関連付けられたDCデータベースに格納することができる(ステップ1304)。マニフェスト・ファイル情報は、ビデオ・タイトルの少なくと一部に関連付けられたマニフェスト・ファイル識別子、またはマニフェストIDと、第1CDN Aと第2CDN Bに関連付けられた(特定の1組の)配信ノード(1つまたは複数)とに関連付けられた、マニフェスト・ファイルによって参照されるセグメントとをホストする特定の(1組の)配信ノード(1つまたは複数)の位置情報とを含む。ここでは、セグメントはファイル名によって識別することができ、配信ノードは配信ノード識別子によって識別することができる。ここでは、マニフェスト・ファイル識別子は、数値によって識別することができ、配信ノードはCDN内部で知られている配信ノード識別子によって識別することができる。
【0139】
したがって、CDN間マニフェスト・ファイルの生成の間、第1および第2CDNCF間で通信が行われるので、第2CDNCFはCDNマニフェスト・ファイルにおける全てのセグメントを知らなくても、第2CDNCFは、その配信ノード(1つまたは複数)上に配置された所定数のセグメントが(近い)今後クライアントによって要求される可能性があることを知る。したがって、第2CDNCFは、下流CDN(この場合、第2配信ノードDN2)における配信ノードを、第2CDN Bに関連付けられたDCデータベースにおける上流CDN(この場合、第1CDNCF)に対する参照と共に格納することができるので、これらの配信ノードの1つに伴うあらゆるネットワーク問題、例えば、負荷または障害問題を第1CDNCFに通知することができる(ステップ1305)。
【0140】
クライアントは、CDN間マニフェスト・ファイルを解析して、ビデオを構成するセグメントの位置を得て(ステップ1306)、マニフェスト・ファイル内にあるチャネル設定情報を使用して第1CDNCFとクライアントとの間にストリーミング制御チャネルを設定することができる(ステップ1307)(チャネルを設定するプロセスは、
図2および
図3において説明したので、ここでは繰り返さない)。
【0141】
ストリーミング制御チャネルの確立の間、第1CDN 1に関連付けられたCCSFは、第1DCデータベースに格納された情報を使用することによって、チャネル設定要求を特定のクライアントおよび関連する(1組の)配信ノード(1つまたは複数)と相関付けることができる(ステップ1309)。具体的には、CCSFがDCデータベースに問い合わせて、ストリーミング制御チャネルが設定されるクライアントを求め(クライアントは、そのIPアドレスによって識別することができる)、一意のストリーム・チャネル識別子(例えば、ポート番号、またはWebSocketを使用する場合は、WebSocket ID)を、クライアントに所属するデータベース・エントリに割り当てることができる。このように、第1CDN1における機能は、特定のクライアント−チャネルの組み合わせを特定の(1組の)配信ノード(1つまたは複数)に関係付けることができる。ストリーミング制御チャネルの確立の後、クライアントは、第1(上流)CDN Aに関連付けられた第1配信ノードDN1および第2(下流)CDN Bに関連付けられた第2配信ノードDN2双方から得られるセグメントを要求し、受信し、プレイ・アウトすることによって、ストリーミング・プロセスを開始することができる(ステップ1308)。
【0142】
ストリーミング・プロセスの間、ある時点において、それ自体の配信ノードを監視している第2CDNCFが、ネットワーク問題、例えば、第2配信ノードDN2におけるネットワーク障害を通知する場合や、第2配信ノードDN2にかかる負荷が所定の(最大)閾値に達するまたは接近することを通知する場合もあり得る(ステップ1309)。すると、DCデータベースにおけるCDN間情報に基づいて、第2CDNCFが、ネットワーク通知、例えば、(過剰)負荷通知または障害通知を第1CDNCFに送ることによって、このネットワーク問題を第1CDNCFに通知することができる。過剰負荷通知は、第2CDNにおける配信ノードに対する参照の少なくとも一部、具体的には、CDN間マニフェスト・ファイルに列挙された配信ノードに対する参照を更新する必要があることを、第1CDNCFに知らせることができる(ステップ1310)。
【0143】
したがって、第2CDNCFからネットワーク通知を受信すると、第1CDNCFは、DCMFを作動させて、第1CDNCに関連付けられたDCデータベースに格納されたマニフェスト・ファイル情報に基づいて、第2配信ノードDN2に対する参照を収容したCDN間マニフェスト・ファイルがどのクライアントに送られたのかチェックする(ステップ1311)。次いで、DCMFは、どのクライアントがリディレクトし、そしてCCSFを作動させて、リディレクトされる必要があるクライアントの制御チャネルを通じて、マニフェスト更新トリガを送るか決定することができる(ステップ1312)。マニフェスト更新トリガを受信すると、クライアントは、マニフェスト・ファイル要求を第1CDNCFに送ることによって(ステップ1301と同様)、新たなマニフェスト・ファイルを要求する(ステップ1313)。
【0144】
第1CDNCFは、マニフェスト要求を受信し、ステップ1302を参照して先に説明したのと同様に、第2CDNCFと共同してクライアントに適した、新たなまたは更新されたマニフェスト・ファイルを生成する(ステップ1314)。例えば、一実施形態では、第2CDNCFが、第2CDN(この場合、第2配信ノード)における(殆ど)過剰負荷がかけられた配信ノードに参照するURLを、他の配信ノード、例えば、同じセグメントをホストする第4配信ノードDN4に対するURLと交換し、これらの参照を第1CDNCFに送ることができる。第1CDN Aにおいて配信ノードDN1を参照するURLは交換されない。何故なら、その配信ノードに対しては、過剰負荷シグナリングが第1CDNCFによって受信されないからである。第1CDNCFは、更新されたCDN間マニフェスト・ファイルをクライアントに送ることができる(ステップ1315)。クライアントは、更新されたマニフェスト・ファイルに基づいて、その内部セグメント・リストを更新し、新たなマニフェストにおいて列挙されたURLに、後続のセグメントを要求することによって、ストリーミングを継続することができる。
【0145】
クライアントは新たなまたは更新されたマニフェスト・ファイルを受信したので、第1CDNCFは、1304を参照して説明したステップを実行することによって、このクライアントに関連付けられたマニフェスト・ファイル情報をDCデータベースにおいて更新することができる。更に、第2CDNCFは、下流CDN(この場合第1CDNCF)に対する参照と共に上流CDN(この場合、第4配信ノードDN4)における配信ノードを含むCDN内情報を、第2CDN Bに関連付けられたDCデータベースにおいて、ステップ1305を参照して説明したのと同様に、更新することができる。このように、今後のある時点において、CDN Bにおいて過剰負荷問題が発生した場合、第2CDNCFがクライアントを再度他の配信ノードにリディレクトすることができると考えられる。
【0146】
したがって、
図13に示す実施形態は、区分化コンテンツを多数のCDNにわたって配給することを可能にするという利点があり、各CDNは全てのセグメントの内部分集合のみをホストする。この実施形態は、
図11を参照して論じたのと同じ種類の利点を提供するが、この場合、異なる配信ノードを多数のCDNにわたって分散させることができる。これの更に別の利点は、上流CDNが一部の作業負荷を他の下流CDNに外部委託することを可能にすることである。更に、この実施形態は特殊化CDNの使用も可能にする。例えば、一実施形態では、第1CDNが移動体デバイスに対する配信に合わせて構成され最適化され、主に低い方の品質のセグメントをホストするのでもよく、一方第2CDNは、HDプレイ・アウト・デバイスに対する配信に合わせて構成され最適化されて、主に高い方の品質のセグメントをホストするのでもよい。
【0147】
尚、以上で説明したCDNの実施形態では、更新マニフェスト・トリガをクライアントに送り、クライアントが更新されたまたは新たなマニフェスト・ファイルを要求することによって応答する代わりに、新たなまたは更新されたマニフェスト・ファイル(の一部)を直接クライアントに、このクライアントへのストリーミング制御チャネルを通じて送ることができることを申し述べておく。
【0148】
図14は、本発明の一実施形態によるマニフェスト・ファイルを示す。具体的には、
図14は、特定の1組のセグメントを配信するように構成された配信ノードに対する参照、例えば、URLを含むマニフェスト・ファイルの一実施形態を示す。この特定例では、マニフェスト・ファイルは、ある配信ノードに格納された同じコンテンツに関係する、2つの異なる組のセグメント、例えば、低および高ビットレート・セグメントに対する参照を含むのでもよい。更に、このマニフェスト・ファイルは、チャネル設定情報を含むこともできる。一実施形態では、チャネル設定情報は、ストリーミング制御機能(または、CDNの場合、制御チャネル・サーバ機能)を含むネットワーク・ノートに対する参照を示すチャネル目標パラメータ1400を含むことができる。更に、他の実施形態では、チャネル設定情報が、チャネル・パラメータ1402、即ち、ストリーミング制御機能/制御チャネル・サーバ機能によって使用されるパラメータを含むこともできる。例えば、WebSocketの場合、パラメータはWebSocketサブプロトコル、WebSocketバージョン等の使用に言及するのでもよい。
【0149】
尚、いずれの1つの実施形態に関係して説明されたいずれの特徴も、単独で用いること、または説明された他の特徴と組み合わせて用いることもでき、更に他のいずれかの実施形態の1つ以上の特徴と組み合わせ用いることもでき、あるいは、他のいずれの実施形態のいずれの組み合わせと組み合わせて用いることもできることは、理解されてしかるべきである。本発明の一実施形態は、コンピュータ・システムと共に用いるプログラム生産物として実現することができる。このプログラム生産物のプログラム(1つまたは複数)は、実施形態の機能を定義し(本明細書において説明した方法を含む)、種々のコンピュータ読み取り可能記憶媒体上に収容することができる。例示的なコンピュータ読み取り可能記憶媒体には、(i)情報が永続的に格納される不揮発性記憶媒体(例えば、CD−ROMドライブによって読み取り可能なCD−ROMのようなコンピュータ内部にあるリード・オンリー・メモリ・デバイス、フラッシュ・メモリ、ROMチップ、またはあらゆるタイプのソリッド・ステート不揮発性半導体メモリ)、ならびに(ii)変更可能な情報が格納される書き込み可能記憶媒体(例えば、ディスケット・ドライブ内部にあるフロッピー(登録商標)・ディスク、またはハード・ディスク・ドライブ、またはあらゆるタイプのソリッド・ステート・ランダム・アクセス半導体メモリ)が含まれるが、これらに限定されるのではない。本発明は、以上で説明した実施形態に限定されるのではなく、実施形態は、添付する請求項の範囲内で変更することもできる。