(57)【要約】  本開示の実施形態に従って、コンテンツサーバからクライアントデバイスのユーザエージェント(UA)へのコンテンツの配信のためのトランスポートアクセラレータ(TA)システムおよび方法が提供される。TAの実施形態は、TAの要求マネージャ(RM)によって、それぞれUAによって提供されたフラグメント要求を、コンテンツのチャンクを要求するための複数のチャンク要求に再分割し、RMによってTAの接続マネージャ(CM)に、コンテンツのチャンクを要求するための複数のチャンク要求のチャンク要求を提供するように動作する。したがって、CMによって、CMとコンテンツサーバとの間で確立された複数の接続を介してコンテンツサーバへのコンテンツのチャンクについての要求が行われ得る。
2017516188.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するための方法であって、
前記TAの要求マネージャ(RM)によって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割するステップであって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、ステップと、
前記RMによって前記TAの接続マネージャ(CM)に、前記コンテンツのチャンクを要求するための前記複数のチャンク要求のチャンク要求を提供するステップと、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求するステップと
を含む方法。
【請求項２】
前記CMによって、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップと、
前記CMから前記RMに、前記チャンク要求の前記コンテンツチャンクの前記決定されたサイズをシグナリングするステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記コンテンツサーバによって提供されたチャンク要求に対する応答に基づくサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
その接続を介して前記コンテンツサーバが即時に送ることができるデータの量のサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項５】
前記TAによって前記コンテンツサーバに提供されたアップストリームデータのオーバーヘッドに基づいて、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項６】
前記チャンク要求の前記コンテンツチャンクの最小サイズを決定するステップであって、前記最小サイズ未満のサイズのフラグメントが、1つのチャンク要求を使用して要求される、ステップ
をさらに含む、請求項1に記載の方法。
【請求項７】
前記チャンク要求の前記コンテンツチャンクの最大サイズを決定するステップであって、フラグメントが、前記最大サイズ以下のサイズを有するチャンク要求に区分される、ステップ
をさらに含む、請求項1に記載の方法。
【請求項８】
前記フラグメント要求の対応するフラグメントのサイズを取得する前に、少なくとも第1のチャンク要求を決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項９】
前記フラグメント要求のフラグメントのサイズとは無関係に、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項１０】
前記コンテンツサーバがハイパーテキスト転送プロトコル(HTTP)チャンク要求を受信するとすぐに、前記コンテンツサーバが前記CMと前記コンテンツサーバとの間の伝送制御プロトコル(TCP)接続を介してHTTP応答全体を即時に送るのを容易にするサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項１１】
前記CMによって行われたチャンクについての前記要求の順序による前記TAにおけるコンテンツのチャンクの到着を容易にするように適合されたサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項１２】
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整するステップ
をさらに含む、請求項1に記載の方法。
【請求項１３】
複数の接続を介して前記コンテンツサーバに前記複数のチャンクの前記チャンクを前記要求するステップは、前記複数の接続を介して並行して前記複数のチャンクを要求するステップを含む、請求項1に記載の方法。
【請求項１４】
前記複数のチャンクの連続するチャンク要求のサイズは、チャンク要求が同時に完了する可能性を低下させるために異なるように選択される、請求項13に記載の方法。
【請求項１５】
前記複数の接続のうちの第1の接続において前記コンテンツサーバによって完全には対応されていないチャンク要求は、少なくとも部分的に、前記複数の接続のうちの1つまたは複数の異なる接続を使用して再送される、請求項13に記載の方法。
【請求項１６】
前記CMによって、前記複数の接続の各接続の受信ウィンドウサイズを、前記接続の各々にほぼ同じダウンロードレートをもたらすように制御するステップ
をさらに含む、請求項13に記載の方法。
【請求項１７】
前記CMによって、前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算するステップ
をさらに含む、請求項1に記載の方法。
【請求項１８】
要求されたがまだ受信されていないデータの前記最大量を前記計算するステップは、
要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するステップ
を含む、請求項17に記載の方法。
【請求項１９】
前記CMによってターゲットチャンクサイズを計算するステップ
をさらに含む、請求項1に記載の方法。
【請求項２０】
前記ターゲットチャンクサイズを前記計算するステップは、
要求するチャンクのサイズを決定する際に使用されるターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するステップ
を含む、請求項19に記載の方法。
【請求項２１】
前記複数のチャンクの前記チャンクを前記要求するステップは、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を行うことを、その接続における以前の要求がすべて完了するまで控えるステップ
を含む、請求項1に記載の方法。
【請求項２２】
前記複数のチャンクの前記チャンクを前記要求するステップは、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を、その接続における1つまたは複数の以前の要求がまだ完了していないときに行うステップ
を含む、請求項1に記載の方法。
【請求項２３】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するように構成された装置であって、
前記TAの要求マネージャ(RM)によって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割するための手段であって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、手段と、
前記RMによって前記TAの接続マネージャ(CM)に、前記コンテンツのチャンクを要求するための前記複数のチャンク要求のチャンク要求を提供するための手段と、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求するための手段と
を含む装置。
【請求項２４】
前記CMによって、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段と、
前記CMから前記RMに、前記チャンク要求の前記コンテンツチャンクの前記決定されたサイズをシグナリングするための手段と
をさらに含む、請求項23に記載の装置。
【請求項２５】
前記コンテンツサーバによって提供されたチャンク要求に対する応答に基づくサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項２６】
その接続を介して前記コンテンツサーバが即時に送ることができるデータの量のサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項２７】
前記TAによって前記コンテンツサーバに提供されたアップストリームデータのオーバーヘッドに基づいて、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項２８】
前記チャンク要求の前記コンテンツチャンクの最小サイズを決定するための手段であって、前記最小サイズ未満のサイズのフラグメントが、1つのチャンク要求を使用して要求される、手段
をさらに含む、請求項23に記載の装置。
【請求項２９】
前記チャンク要求の前記コンテンツチャンクの最大サイズを決定するための手段であって、フラグメントが、前記最大サイズ以下のサイズを有するチャンク要求に区分される、手段
をさらに含む、請求項23に記載の装置。
【請求項３０】
前記フラグメント要求の対応するフラグメントのサイズを取得する前に、少なくとも第1のチャンク要求を決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項３１】
前記フラグメント要求のフラグメントのサイズとは無関係に、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項３２】
前記コンテンツサーバがハイパーテキスト転送プロトコル(HTTP)チャンク要求を受信するとすぐに、前記コンテンツサーバが前記CMと前記コンテンツサーバとの間の伝送制御プロトコル(TCP)接続を介してHTTP応答全体を即時に送るのを容易にするサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項３３】
前記CMによって行われたチャンクについての前記要求の順序による前記TAにおけるコンテンツのチャンクの到着を容易にするように適合されたサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するための手段
をさらに含む、請求項23に記載の装置。
【請求項３４】
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整するための手段
をさらに含む、請求項23に記載の装置。
【請求項３５】
複数の接続を介して前記コンテンツサーバに前記複数のチャンクの前記チャンクを要求するための前記手段は、前記複数の接続を介して並行して前記複数のチャンクを要求するための手段を含む、請求項23に記載の装置。
【請求項３６】
前記複数のチャンクの連続するチャンク要求のサイズは、チャンク要求が同時に完了する可能性を低下させるために異なるように選択される、請求項35に記載の装置。
【請求項３７】
前記複数の接続のうちの第1の接続において前記コンテンツサーバによって完全には対応されていないチャンク要求は、少なくとも部分的に、前記複数の接続のうちの1つまたは複数の異なる接続を使用して再送される、請求項35に記載の装置。
【請求項３８】
前記CMによって、前記複数の接続の各接続の受信ウィンドウサイズを、前記接続の各々にほぼ同じダウンロードレートをもたらすように制御するための手段
をさらに含む、請求項35に記載の装置。
【請求項３９】
前記CMによって、前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算するための手段
をさらに含む、請求項23に記載の装置。
【請求項４０】
要求されたがまだ受信されていないデータの前記最大量を計算するための前記手段は、
要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するための手段
を含む、請求項39に記載の装置。
【請求項４１】
前記CMによってターゲットチャンクサイズを計算するための手段
をさらに含む、請求項23に記載の装置。
【請求項４２】
前記ターゲットチャンクサイズを計算するための前記手段は、
要求するチャンクのサイズを決定する際に使用されるターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するための手段
を含む、請求項41に記載の装置。
【請求項４３】
前記複数のチャンクの前記チャンクを要求するための前記手段は、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を行うことを、その接続における以前の要求がすべて完了するまで控えるための手段
を含む、請求項23に記載の装置。
【請求項４４】
前記複数のチャンクの前記チャンクを要求するための前記手段は、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を、その接続における1つまたは複数の以前の要求がまだ完了していないときに行うための手段
を含む、請求項23に記載の装置。
【請求項４５】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するためのコンピュータプログラム製品であって、
プログラムコードを記録した非一時的コンピュータ可読媒体を含み、前記プログラムコードは、
前記TAの要求マネージャ(RM)によって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割するためのプログラムコードであって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、プログラムコードと、
前記RMによって前記TAの接続マネージャ(CM)に、前記コンテンツのチャンクを要求するための前記複数のチャンク要求のチャンク要求を提供するためのプログラムコードと、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求するためのプログラムコードと
を含む、コンピュータプログラム製品。
【請求項４６】
前記CMによって、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するためのプログラムコードと、
前記CMから前記RMに、前記チャンク要求の前記コンテンツチャンクの前記決定されたサイズをシグナリングするためのプログラムコードと
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項４７】
前記コンテンツサーバによって提供されたチャンク要求に対する応答に基づくサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項４８】
その接続を介して前記コンテンツサーバが即時に送ることができるデータの量のサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項４９】
前記フラグメント要求の対応するフラグメントのサイズを取得する前に、少なくとも第1のチャンク要求を決定するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５０】
前記フラグメント要求のフラグメントのサイズとは無関係に、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５１】
前記コンテンツサーバがハイパーテキスト転送プロトコル(HTTP)チャンク要求を受信するとすぐに、前記コンテンツサーバが前記CMと前記コンテンツサーバとの間の伝送制御プロトコル(TCP)接続を介してHTTP応答全体を即時に送るのを容易にするサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５２】
前記CMによって行われたチャンクについての前記要求の順序による前記TAにおけるコンテンツのチャンクの到着を容易にするように適合されたサイズとして、前記チャンク要求の前記コンテンツチャンクの前記サイズを決定するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５３】
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５４】
複数の接続を介して前記コンテンツサーバに前記複数のチャンクの前記チャンクを要求するための前記プログラムコードは、前記複数の接続を介して並行して前記複数のチャンクを要求するためのプログラムコードを含み、前記複数のチャンクの連続するチャンク要求のサイズは、チャンク要求が同時に完了する可能性を低下させるために異なるように選択される、請求項45に記載のコンピュータプログラム製品。
【請求項５５】
前記CMによって、前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５６】
要求されたがまだ受信されていないデータの前記最大量を計算するための前記プログラムコードは、
要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するためのプログラムコード
を含む、請求項55に記載のコンピュータプログラム製品。
【請求項５７】
前記CMによって、ターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを使用してターゲットチャンクサイズを計算するためのプログラムコード
をさらに含む、請求項45に記載のコンピュータプログラム製品。
【請求項５８】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するように構成された装置であって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに結合されたメモリと
を含み、
前記少なくとも1つのプロセッサは、
前記TAの要求マネージャ(RM)によって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割することであって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、再分割することと、
前記RMによって前記TAの接続マネージャ(CM)に、前記コンテンツのチャンクを要求するための前記複数のチャンク要求のチャンク要求を提供することと、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求することと
を行うように構成される、装置。
【請求項５９】
前記少なくとも1つのプロセッサは、
前記チャンク要求の前記コンテンツチャンクの前記サイズを決定することと、
前記CMから前記RMに、前記チャンク要求の前記コンテンツチャンクの前記決定されたサイズをシグナリングすることと
を行うようにさらに構成される、請求項58に記載の装置。
【請求項６０】
前記少なくとも1つのプロセッサは、
前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整すること
を行うようにさらに構成される、請求項58に記載の装置。
【請求項６１】
前記少なくとも1つのプロセッサは、
前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算することであって、要求されたがまだ受信されていないデータの前記最大量の計算が、要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用する、計算することを行うようにさらに構成される、請求項58に記載の装置。
【請求項６２】
前記少なくとも1つのプロセッサは、
要求するチャンクのサイズを決定する際に使用されるターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用してターゲットチャンクサイズを計算すること
を行うようにさらに構成される、請求項58に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権および関連出願の陳述
本出願は、同時係属の、2014年3月18日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY」と題する米国仮特許出願第61/954,970号、および2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY」と題する米国特許出願第14/289,403号の優先権を主張し、これらの開示は、参照により本明細書に組み込まれる。本出願は、同一出願人による、2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING EXTENDED TRANSMISSION CONTROL FUNCTIONALITY」と題する米国特許出願第14/289,016号、2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING EXTENDED TRANSMISSION CONTROL FUNCTIONALITY」と題する出願第14/289,181号、2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING ENHANCED SIGNALING」と題する第14/289,348号、2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING SELECTIVE UTILIZATION OF REDUNDANT ENCODED CONTENT DATA FUNCTIONALITY」と題する第14/289,458号、2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING A MULTIPLE INTERFACE ARCHITECTURE」と題する第14/289,476号、および2014年5月28日に出願された「TRANSPORT ACCELERATOR IMPLEMENTING CLIENT SIDE TRANSMISSION FUNCTIONALITY」と題する第14/289,499号に関係し、これらの各々は、本出願と同時に出願され、これらの開示は、全体が参照により明示的に本明細書に組み込まれる。
【背景技術】
【０００２】
ますます多くのコンテンツが、利用可能な通信ネットワークを介して転送されている。多くの場合、コンテンツは、たとえば、オーディオデータ、ビデオデータ、画像データなどを含む、多くのタイプのデータを含む。ビデオコンテンツ、特に高解像度ビデオコンテンツは、しばしば、比較的大きいデータファイルまたは他のデータ集合を含む。したがって、そのようなコンテンツを消費しているエンドユーザデバイスまたは他のクライアントデバイス上のユーザエージェント(UA)はしばしば、所望のビデオコンテンツを含むコンテンツの一連のフラグメントを要求し、受信する。たとえば、UAは、さらなる処理のために、また場合によってはユーザデバイス上での表示のために、データ、多くの場合にマルチメディアデータを要求し、要求したデータを受信する、ユーザデバイス上で実行されているクライアントアプリケーションまたはプロセスを含むことができる。
【０００３】
今日では多くのタイプのアプリケーションが、上記のコンテンツ配信のためにHTTPに依存している。多くのそのようなアプリケーションでは、HTTPトランスポートのパフォーマンスは、アプリケーションによるユーザのエクスペリエンスにとって重要である。たとえば、ライブストリーミングには、ビデオストリーミングクライアントのパフォーマンスを妨げ得るいくつかの制約がある。2つの制約が特に目立つ。第一に、メディアセグメントが経時的に次々に入手可能になる。この制約は、クライアントがデータの大きい部分を連続的にダウンロードすることを妨げ、ひいては、ダウンロードレート推定の精度に影響を与える。大半のストリーミングクライアントは、「要求-ダウンロード-推定」ループで動作するので、一般に、ダウンロード推定が不正確であるときには良好に機能しない。第二に、ライブイベントストリーミングを見ているとき、ユーザは一般に、実際のライブイベントタイムラインからの長い遅延に直面することを望まない。そのような行為は、ストリーミングクライアントが大きいバッファを作り上げるのを妨げ、結果的にさらなるリバッファリングが生じ得る。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】3GPP TS.26.346
【非特許文献２】IETF RFC 5053
【非特許文献３】IETF RFC 6330
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の実施形態に従って、クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバからクライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するための方法が提供される。実施形態の方法は、TAの要求マネージャ(RM)によって、それぞれUAによって提供されたフラグメント要求を、コンテンツのチャンクを要求するための複数のチャンク要求に再分割するステップであって、チャンク要求のコンテンツチャンクのサイズが、コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、ステップを含む。実施形態の方法は、RMによってTAの接続マネージャ(CM)に、コンテンツのチャンクを要求するための複数のチャンク要求のチャンク要求を提供するステップと、CMによって、CMとコンテンツサーバとの間で確立された複数の接続を介してコンテンツサーバにコンテンツのチャンクを要求するステップとをさらに含む。
【０００６】
本開示の実施形態に従って、クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバからクライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するように構成された装置が提供される。実施形態の装置は、TAの要求マネージャ(RM)によって、それぞれUAによって提供されたフラグメント要求を、コンテンツのチャンクを要求するための複数のチャンク要求に再分割するための手段であって、チャンク要求のコンテンツチャンクのサイズが、コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、手段を含む。実施形態の装置は、RMによってTAの接続マネージャ(CM)に、コンテンツのチャンクを要求するための複数のチャンク要求のチャンク要求を提供するための手段と、CMによって、CMとコンテンツサーバとの間で確立された複数の接続を介してコンテンツサーバにコンテンツのチャンクを要求するための手段とをさらに含む。
【０００７】
本開示の実施形態に従って、クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバからクライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するためのコンピュータプログラム製品が提供される。実施形態のコンピュータプログラム製品は、プログラムコードを記録した非一時的コンピュータ可読媒体を含む。実施形態のプログラムコードは、TAの要求マネージャ(RM)によって、それぞれUAによって提供されたフラグメント要求を、コンテンツのチャンクを要求するための複数のチャンク要求に再分割するためのプログラムコードであって、チャンク要求のコンテンツチャンクのサイズが、コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、プログラムコードを含む。実施形態のプログラムコードは、RMによってTAの接続マネージャ(CM)に、コンテンツのチャンクを要求するための複数のチャンク要求のチャンク要求を提供するためのプログラムコードと、CMによって、CMとコンテンツサーバとの間で確立された複数の接続を介してコンテンツサーバにコンテンツのチャンクを要求するためのプログラムコードとをさらに含む。
【０００８】
本開示の実施形態に従って、クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバからクライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するように構成された装置が提供される。実施形態の装置は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに結合されたメモリとを含む。実施形態の少なくとも1つのプロセッサは、TAの要求マネージャ(RM)によって、それぞれUAによって提供されたフラグメント要求を、コンテンツのチャンクを要求するための複数のチャンク要求に再分割することであって、チャンク要求のコンテンツチャンクのサイズが、コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定される、再分割することを行うように構成される。実施形態の少なくとも1つのプロセッサは、RMによってTAの接続マネージャ(CM)に、コンテンツのチャンクを要求するための複数のチャンク要求のチャンク要求を提供することと、CMによって、CMとコンテンツサーバとの間で確立された複数の接続を介してコンテンツサーバにコンテンツのチャンクを要求することとを行うようにさらに構成される。
【図面の簡単な説明】
【０００９】
【図１Ａ】本開示の実施形態による、トランスポート加速動作に適合されたシステムを示す図である。
【図１Ｂ】本開示の実施形態による、トランスポートアクセラレータの構成に関して実装され得るような要求マネージャおよび接続マネージャの実施形態に関する詳細を示す図である。
【図１Ｃ】本開示の実施形態による、トランスポートアクセラレータ構成に関する詳細を示す図である。
【図２】本開示の実施形態による、要求マネージャおよび接続マネージャの機能を提供するトランスポートアクセラレータの動作を示すフロー図である。
【図３】接続においてデータの別のチャンクが要求され得るときを判断するためのしきい値パラメータを採用する接続マネージャの例示的な実施形態を示す図である。
【図４】接続マネージャがチャンク要求を即時に行うことが現在可能であるときを判断するためのしきい値パラメータを採用する接続マネージャの例示的な実施形態を示す図である。
【図５】本開示の実施形態による、クライアントデバイスのためのコンテンツの転送のために複数のコンテンツサーバに関して使用される複数の接続を利用することを示す図である。
【図６】本開示の実施形態による、要求マネージャが複数の接続マネージャとインターフェースされる構成を示す図である。
【図７】本開示の実施形態による、ダウンロードチャンクレートディスカウントを示す図である。
【図８】本開示の実施形態による、エポックへのチャンク要求の分類を示す図である。
【図９】本開示の実施形態による、ダウンロードパイプラインレートディスカウントを示す図である。
【図１０Ａ】本開示の実施形態による、T値選択の結果を示す図である。
【図１０Ｂ】本開示の実施形態による、T値選択の結果を示す図である。
【図１０Ｃ】本開示の実施形態による、T値選択の結果を示す図である。
【図１１】本開示の実施形態による、様々なダウンロードチャンクレートおよびダウンロードパイプラインレートの組合せの平均的ギャップを示す図である。
【図１２】本開示の実施形態による、並べ替え層のための論理を示す図である。
【図１３Ａ】本開示の実施形態による、要求マネージャと接続マネージャとの間のアルゴリズム実行のための高レベル呼出しフローを示す図である。
【図１３Ｂ】本開示の実施形態による、要求マネージャと接続マネージャとの間のアルゴリズム実行のための高レベル呼出しフローを示す図である。
【図１３Ｃ】本開示の実施形態による、要求マネージャと接続マネージャとの間のアルゴリズム実行のための高レベル呼出しフローを示す図である。
【図１４Ａ】本開示の実施形態による、トランスポートアクセラレータを使用して単一のオリジンサーバに接続する単一のユーザエージェントに関して生成されたグラフを示す図である。
【図１４Ｂ】本開示の実施形態による、トランスポートアクセラレータを使用して単一のオリジンサーバに接続する単一のユーザエージェントに関して生成されたグラフを示す図である。
【図１４Ｃ】本開示の実施形態による、トランスポートアクセラレータを使用して単一のオリジンサーバに接続する単一のユーザエージェントに関して生成されたグラフを示す図である。
【発明を実施するための形態】
【００１０】
「例示的」という言葉は、「例、事例、または例示として働く」ことを意味するように本明細書において使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるとは限らない。
【００１１】
本説明では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で言及される「アプリケーション」は、開封されることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルを含む場合もある。
【００１２】
本説明において使用する「コンテンツ」という用語は、ビデオ、オーディオ、ビデオとオーディオの組合せを有するデータ、または1つもしくは複数の品質レベル、ビットレート、解像度もしくは他の要素によって決定された品質レベルの他のデータを含む場合がある。コンテンツは、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを含む場合もある。加えて、「コンテンツ」は、開封されることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能でないファイルを含む場合もある。
【００１３】
本説明において使用する「フラグメント」という用語は、ユーザデバイスによって要求されること、および/またはユーザデバイスにおいて受信されることがあるコンテンツの1つまたは複数の部分を指す。
【００１４】
本説明において使用する「ストリーミングコンテンツ」という用語は、コンテンツのリアルタイム転送またはある時間期間におけるコンテンツの転送を可能にする1つまたは複数の規格に従って、サーバデバイスから送られること、およびユーザデバイスにおいて受信されることがあるコンテンツを指す。ストリーミングコンテンツ規格の例としては、デインターリーブされた(または複数の)チャネルをサポートする規格、およびデインターリーブされた(または複数の)チャネルをサポートしない規格がある。
【００１５】
本説明において使用する「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すことが意図される。たとえば、構成要素は、限定はされないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよい。実例として、コンピューティングデバイス上で実行されているアプリケーションと、コンピューティングデバイスの両方が、構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在する場合があり、構成要素は、1つのコンピュータに局在する場合および/または2つ以上のコンピュータ間に分散される場合がある。加えて、これらの構成要素は、様々なデータ構造を記憶した様々なコンピュータ可読媒体から実行されてもよい。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システム内の別の構成要素と対話する、および/または、信号によってインターネットなどのネットワークにわたって他のシステムと対話する、1つの構成要素からのデータ)を有する信号に従ってなど、ローカルプロセスおよび/またはリモートプロセスによって通信してもよい。
【００１６】
本明細書で使用する「ユーザ機器」、「ユーザデバイス」、および「クライアントデバイス」という用語は、コンテンツをウェブサーバに要求し、ウェブサーバから受信すること、およびウェブサーバに情報を送信することが可能なデバイスを含む。そのようなデバイスは、静止デバイスまたはモバイルデバイスであり得る。「ユーザ機器」、「ユーザデバイス」、および「クライアントデバイス」という用語は、互換的に使用され得る。
【００１７】
本明細書で使用する「ユーザ」という用語は、ユーザデバイス上またはクライアントデバイス上でコンテンツを受信し、ウェブサイトに情報を送信する個人を指す。
【００１８】
図1Aは、通信ネットワークを介してオーディオデータ、ビデオデータ、画像データ、ファイルデータなどを含み得るようなコンテンツの転送をもたらすように本明細書における概念に従って適合されたシステム100を示す。したがって、クライアントデバイス110は、ネットワーク150を介してサーバ130と通信しているものとして示されており、ネットワーク150によってサーバ130は、本開示の概念に従って、データベース140に記憶された様々なコンテンツをクライアントデバイス110に転送することができる。たった1つのクライアントデバイスと1つのサーバおよびデータベースとが図1Aに表されているが、システム100は複数の任意またはすべてのそのようなデバイスを含み得ることを諒解されたい。たとえば、サーバ130は、サーバファームのサーバを含むことができ、サーバファームでは、コンテンツ転送に対する高レベルの需要に対応するために、複数のサーバが集中的に、かつ/または分散された構成で配置され得る。代替的に、サーバ130がトランスポートアクセラレータ120と同じデバイス上に配置される(たとえば、ネットワーク150を介する代わりに、I/O要素113を介してトランスポートアクセラレータ120に直接接続される)ことがあり、これは、コンテンツの一部または全部が、同じくそのデバイス上に配置されたデータベース140(キャッシュ)に存在し、サーバ130を介してトランスポートアクセラレータ120に提供される場合などにあり得る。同様に、ユーザが複数のクライアントデバイスを持っていることがあり、かつ/または複数のユーザが1つもしくは複数のクライアントデバイスをそれぞれ持っていることがあり、それらのいずれかまたはすべては、本明細書における概念に従ってコンテンツ転送に適合されている。
【００１９】
クライアントデバイス110は、ネットワーク150を介してコンテンツの転送を受信するように動作可能なデバイスの様々な構成を含むことができる。たとえば、クライアントデバイス110は、ワイヤードデバイス、ワイヤレスデバイス、パーソナルコンピューティングデバイス、タブレットコンピューティングデバイスもしくはパッドコンピューティングデバイス、ポータブルセルラー電話、WiFi対応デバイス、Bluetooth（登録商標）対応デバイス、テレビ、ディスプレイを有するメガネ、拡張現実メガネ、または任意の利用可能な方法もしくは基盤を使用してサーバ130と通信することができるネットワーク150に接続された任意の他の通信デバイス、コンピューティングデバイスもしくはインターフェースデバイスを含むことができる。クライアントデバイス110は、サーバ130のクライアントとして機能するデバイスとして機能すること、またはサーバ130のクライアントとして機能するデバイスに接続されることが可能であるので、「クライアントデバイス」と呼ばれる。
【００２０】
図示の実施形態のクライアントデバイス110は、複数の機能ブロックを含み、ここでは、プロセッサ111、メモリ112、および入力/出力(I/O)要素113を含むものとして示されている。簡単にするために図1Aの表現には示されていないが、クライアントデバイス110は、ユーザインターフェース、無線周波数(RF)モジュール、カメラ、センサアレイ、ディスプレイ、ビデオプレーヤ、ブラウザなどのような、追加の機能ブロックを含むことができ、それらの一部または全部は、本明細書における概念に従った動作によって利用され得る。上記の機能ブロックは、バス114のような1つまたは複数のバスを介して動作可能に接続され得る。バス114は、接続された要素、モジュールおよび構成要素が通信し相互動作することを可能にする論理接続および物理接続を含むことができる。
【００２１】
メモリ112は、任意のタイプの揮発性メモリまたは不揮発性メモリであってよく、一実施形態では、フラッシュメモリを含むことができる。メモリ112は、クライアントデバイス110に恒久的に設置されてよく、または取外し可能なメモリカードなど、取外し可能なメモリ要素であってもよい。メモリ112は、単一要素として示されているが、複数の個別のメモリおよび/またはメモリタイプを含むことができる。
【００２２】
メモリ112は、アプリケーション、オペレーティングシステム、ファイル、電子文書、コンテンツなどを形成し得るような、様々なコンピュータ可読コードセグメントを記憶すること、またはさもなければ含むことができる。たとえば、図示の実施形態のメモリ112は、プロセッサ(たとえば、プロセッサ111)によって実行されたときに本明細書で説明するように動作可能な論理回路を提供する、トランスポートアクセラレータ(TA)120およびUA129を定義するコンピュータ可読コードセグメントを含む。メモリ112によって記憶されたコードセグメントは、前述のTA120およびUA129に加えてアプリケーションを提供することができる。たとえば、メモリ112は、本明細書における実施形態に従ってサーバ130からコンテンツにアクセスする際に有用な、ブラウザなどのアプリケーションを記憶することができる。そのようなブラウザは、ウェブコンテンツにアクセスしウェブコンテンツを見るための、またサーバ130がウェブサーバである場合に、接続151および152により、ネットワーク150を介して、サーバ130との間でハイパーテキスト転送プロトコル(HTTP)を介して通信するためのHTTPウェブブラウザなどのウェブブラウザであり得る。一例として、クライアントデバイス110におけるブラウザから、接続151および152により、ネットワーク150を介して、サーバ130にHTTP要求が送られ得る。サーバ130から、接続152および151により、ネットワーク150を介して、クライアントデバイス110におけるブラウザにHTTP応答が送られ得る。
【００２３】
UA129は、コンテンツをサーバ130などのサーバに要求し、かつ/またはそのサーバから受信するように動作可能である。UA129は、たとえば、さらなる処理のために、また場合によってはクライアントデバイス110のディスプレイ上での表示のために、マルチメディアデータなどのデータを要求し、要求したデータを受信する、ブラウザ、DASHクライアント、HTTPライブストリーミング(HLS)クライアントなどのようなクライアントアプリケーションまたはプロセスを含むことができる。たとえば、クライアントデバイス110は、スタンドアロンメディア再生アプリケーションまたはインターネットブラウザにおいて作動するように構成されたブラウザベースのメディアプレーヤなど、メディアを再生するためのUA129を含むコードを実行することができる。実施形態による動作中、UA129は、ストリーミングコンテンツセッション中の様々な時点に転送のためにコンテンツファイルのどのフラグメントまたは一連のフラグメントを要求すべきかを決定する。たとえば、UA129のDASHクライアント構成は、たとえば最近のダウンロード状況に基づいて、各時点にコンテンツのどの表現(たとえば、高解像度表現、中解像度表現、低解像度表現など)からのどのフラグメントを要求すべきかを決定するように動作することができる。同様に、UA129のウェブブラウザ構成は、ウェブページまたはその一部分などについての要求を行うように動作することができる。一般に、UAはHTTP要求を使用してそのようなフラグメントを要求する。
【００２４】
TA120は、所望のコンテンツのフラグメントまたは一連のフラグメント(たとえば、ビデオストリーミング、ファイルダウンロード、ウェブベースのアプリケーション、一般的なウェブページなどをもたらす際に使用され得るような前述のコンテンツフラグメント)の向上した配信をもたらすために、本明細書における概念に従って適合される。実施形態のTA120は、標準化されたTCP伝送プロトコルを実装するHTTP 1.1インターフェースなどの標準インターフェースをサポートするだけである一般的UAまたはレガシーUA(すなわち、TAと対話するように事前設計されていないUA)が、それでもフラグメント要求を実行しているTAを使用することから恩恵を受けるためにそれらの要求を行うことができるように適合される。追加または代替として、実施形態のTA120は、向上したインターフェースの機能を利用するように設計されたUAにさらなる恩恵をもたらすことを促進するための向上したインターフェースを提供する。実施形態のTA120は、標準化されたTCP伝送プロトコルを実装するHTTPインターフェースを介してTCPを使用することなど、既存のコンテンツ転送プロトコルに従ってフラグメント要求を実行するように適合され、それによって、一般的メディアサーバまたはレガシーメディアサーバ(すなわち、TAと対話するように事前設計されていないメディアサーバ)が、UAおよびクライアントデバイスへのフラグメントの向上した配信をもたらす一方で、要求に対応することが可能になる。
【００２５】
上記の向上したフラグメント配信機能を提供するにあたり、本明細書における実施形態のTA120は、本明細書で説明するアーキテクチャの構成要素およびプロトコルを含む。たとえば、図1Aに示す実施形態のTA120は、以下でさらに説明するように、様々な向上したフラグメント配信機能を提供するために協調する要求マネージャ(RM)121および接続マネージャ(CM)122を含む。
【００２６】
アプリケーション、オペレーティングシステム、ファイル、電子文書、コンテンツなどを形成する前述のコードセグメントに加えて、メモリ112は、クライアントデバイス110の機能ブロックによって使用される様々なレジスタ、バッファ、および記憶セルを含むこと、またはさもなければ提供することができる。たとえば、メモリ112は、サーバ130からのストリーミングおよびクライアントデバイス110による再生のためにフラグメントのデータをスプールするための先入れ/先出し(FIFO)メモリを提供し得るようなプレイアウトバッファを含むことができる。
【００２７】
実施形態のプロセッサ111は、クライアントデバイス110の動作および機能を制御するために命令を実行することが可能な任意の汎用プロセッサまたは専用プロセッサであり得る。プロセッサ111は、単一要素として示されているが、複数のプロセッサおよび/または分散処理アーキテクチャを含むことができる。
【００２８】
I/O要素113は、様々な入力/出力構成要素を含むこと、および/または様々な入力/出力構成要素に結合されることがある。たとえば、I/O要素113は、ディスプレイ、スピーカー、マイクロフォン、キーパッド、ポインティングデバイス、タッチセンシティブスクリーン、ユーザインターフェース制御要素、およびユーザが入力コマンドを提供し、クライアントデバイス110から出力を受信することを可能にする任意の他のデバイスもしくはシステムを含むこと、および/またはこれらに結合されることがある。任意またはすべてのそのような構成要素は、クライアントデバイス110のユーザインターフェースを提供するために利用され得る。追加または代替として、I/O要素113は、ディスクコントローラ、ネットワークインターフェースカード(NIC)、無線周波数(RF)トランシーバ、ならびにクライアントデバイス110の入力機能および/もしくは出力機能を容易にする任意の他のデバイスもしくはシステムを含むこと、ならびに/またはこれらに結合されることがある。
【００２９】
ストリーミングコンテンツにアクセスしストリーミングコンテンツを再生する動作中、クライアントデバイス110は、レンダリングされたときにコンテンツの再生をもたらす(たとえば、前述のフラグメントとしての)コンテンツデータを取得するために、リンク151および152を使用してネットワーク150を介してサーバ130と通信する。したがって、UA129は、クライアントデバイス110においてコンテンツ再生環境を確立するためにプロセッサ111によって実行されるコンテンツプレーヤアプリケーションを含むことができる。特定のコンテンツファイルの再生を開始するとき、UA129は、コンテンツ識別子(たとえば、所望のコンテンツの、1つまたは複数のリスト、マニフェスト、構成ファイル、またはメディアセグメントもしくはフラグメント、およびそれらのタイミング境界を識別する他の識別子)を取得するために、サーバ130のコンテンツ配信プラットフォームと通信することができる。メディアセグメントおよびそれらのタイミングに関する情報は、UA129のストリーミングコンテンツ論理によって、コンテンツの再生のためのフラグメントを要求することを制御するために使用される。
【００３０】
サーバ130は、クライアントデバイスに所望のコンテンツを供給するように動作可能な1つまたは複数のシステムを含む。たとえば、サーバ130は、ネットワーク150を介して様々なクライアントデバイスにコンテンツをストリーミングするように動作可能な標準HTTPウェブサーバを含むことができる。サーバ130は、ユーザデバイス110にコンテンツを配信することができる任意のシステムまたは方法を含むコンテンツ配信プラットフォームを含むことができる。コンテンツは、図示の実施形態のデータベース140など、サーバ130と通信する1つまたは複数のデータベースに記憶され得る。データベース140はサーバ130に記憶されてよく、またはサーバ130に通信可能に結合された1つもしくは複数のサーバに記憶されてもよい。データベース140のコンテンツは、様々な形式のデータ、たとえば、ビデオ、オーディオ、ストリーミングテキスト、ならびにサーバ130によってある時間期間にわたってクライアントデバイス110に転送され得る任意の他のコンテンツ、たとえば、ライブウェブキャストコンテンツおよび記憶されたメディアコンテンツを含むことができる。
【００３１】
データベース140は、複数の異なるソースもしくはコンテンツファイルおよび/または特定のコンテンツの複数の異なる表現(たとえば、高解像度表現、中解像度表現、低解像度表現など)を含むことができる。たとえば、コンテンツファイル141は、特定のマルチメディア編集物(multimedia compilation)の高解像度表現、したがって転送されたときに高ビットレート表現を含むことができ、コンテンツファイル142は、その同じ特定のマルチメディア編集物の低解像度表現、したがって転送されたときに低ビットレート表現を含むことができる。追加または代替として、特定のコンテンツの異なる表現は、コンテンツファイル143によって提供され得るような、前方誤り訂正(FEC)表現(たとえば、コンテンツデータの冗長な符号化を含む表現)を含むことができる。ユニフォームリソースロケータ(URL)、ユニフォームリソース識別子(URI)、および/またはユニフォームリソースネーム(URN)が、本明細書における実施形態に従ってこれらのコンテンツファイルのすべてに関連付けられ、したがって、そのようなURL、URIおよび/またはURNは、場合によりバイト範囲などの他の情報とともに、要求されたデータを識別し、要求されたデータにアクセスするために、利用され得る。
【００３２】
ネットワーク150は、ワイヤレスネットワーク、ワイヤードネットワーク、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、または本明細書で説明するようなコンテンツの転送に適した任意の他のネットワークであり得る。一実施形態では、ネットワーク150は、インターネットの少なくともいくつかの部分を含むことができる。クライアントデバイス110は、ネットワーク接続151によって表されるような双方向接続を介してネットワーク150に接続され得る。代替的に、クライアントデバイス110は、マルチメディアブロードキャストマルチメディアシステム(MBMS)対応ネットワークによって提供されるような単方向接続を介して接続され得る(たとえば、接続151、152およびネットワーク150は、MBMSネットワークを含むことができ、サーバ130はブロードキャストマルチキャストサービスセンター(BM-SC)サーバを含むことができる)。接続はワイヤード接続であってよく、またはワイヤレス接続であってもよい。一実施形態では、接続151は、セルラー4G接続、ワイヤレスフィデリティー(WiFi)接続、Bluetooth（登録商標）接続、または別のワイヤレス接続などのワイヤレス接続であり得る。サーバ130は、ネットワーク接続152によって表されるような双方向接続を介してネットワーク150に接続され得る。サーバ130は、単方向接続(たとえば、3GPP TS.26.346において説明されるプロトコルおよびサービスを使用するMBMSネットワークまたはATSC 3.0ネットワーク)を介してネットワーク150に接続され得る。接続はワイヤード接続であってよく、またはワイヤレス接続であってもよい。
【００３３】
図1Aに示す実施形態のクライアントデバイス110は、本明細書における概念に従って所望のコンテンツのフラグメントまたは一連のフラグメントの向上した配信をもたらすように動作可能なTA120を含む。上記で説明したように、図示の実施形態のTA120は、様々な向上したフラグメント配信機能を提供するために協調するRM121およびCM122を含む。実施形態のUA129とRM121との間のインターフェース124およびRM121とCM122との間のインターフェース123は、HTTP様の接続を提供する。たとえば、上記のインターフェースは、標準HTTPプロトコルを採用すること、ならびに本明細書における実施形態に従って向上したフラグメント配信のいくつかの機能的態様をサポートするための(たとえば、HTTPの場合と同様のシグナリング技法を使用して提供される)追加のシグナリングを含むことができる。
【００３４】
図1Bは、図1Aに示すようなTA120の構成に関して実装され得るようなRM121およびCM122の実施形態に関する詳細を示す。特に、RM121は、要求キュー(RQ)191a〜191c、要求スケジューラ192(要求チャンキングアルゴリズム193を含む)、および並べ替え層194を含むものとして示されている。CM122は、Tvalueマネージャ195、準備計算機196、および要求受信機/モニタ197を含むものとして示されている。図1Bに示すRM121およびCM122の実施形態に関して特定の機能ブロックが示されているが、本明細書で説明する実施形態に従って機能を実行するために、追加または代替の機能ブロックが実装されてよいことを諒解されたい。
【００３５】
RQ191a〜191cは、1つまたは複数のUA(たとえば、UA129)によって、TA120によって受信される要求のキューイングをもたらすために、図1Bに示すRM121の実施形態において提供される。図示の実施形態に示す複数のRQの異なるRQは、様々な要求に関してキューイングをもたらすために利用され得る。たとえば、RQのうちの異なるものはそれぞれ、異なるレベルの要求優先度に関連付けられ得る(たとえば、ライブストリーミングメディア要求が最高優先度を受け取ることがある一方、ストリーミングメディアはより低い優先度を受け取り、ウェブページコンテンツはさらに低い優先度を受け取る)。同様に、RQのうちの異なるものはそれぞれ、異なるUA、異なるタイプのUAなどに関連付けられ得る。3つのそのようなキューが図示の実施形態において表されているが、本明細書における実施形態は任意の数のそのようなRQを含み得ることを諒解されたい。
【００３６】
実施形態の要求スケジューラ192は、本明細書における概念に従ってフラグメント要求および/またはチャンク要求をスケジュールするための1つまたは複数のスケジューリングアルゴリズムを実装する。たとえば、要求スケジューラ192の論理は、RMによって現在要求されているフラグメントについて受信されたか、または要求されたがまだ受信されていないデータの量が何らかのしきい値量を割り込むとき、RMが別のチャンク要求を行うことができる受信済みのフラグメント要求をRMが有していないときなどに基づいて、RMがUAからのフラグメント要求に対する準備ができているかどうかを判断するように動作することができる。追加または代替として、要求スケジューラ192の論理は、現在のネットワーク状態を踏まえて可能な最大ダウンロードレートに近い接続の総ダウンロードレートをもたらすこと、ネットワークにバッファリングされるデータの量ができるだけ小さくなるようにすること、などのためにチャンク要求が行われるべきかどうかを判断するように動作することができる。要求スケジューラ192は、たとえば、RMがUAから新しいデータダウンロード要求を受信したときはいつでも、同じまたは異なるオリジンサーバ向けのさらなる要求を発信する継続的準備についてチェックするためにRMがCMにチャンク要求を無事発信したときはいつでも、すでに発信されたチャンク要求についてデータダウンロードが完了したときはいつでも、などのように、チャンク要求準備についてCMに問い合わせるように動作することができる。
【００３７】
実施形態による動作中、要求スケジューラ192は、次のチャンク要求を発信する次のRQを選択するためのクレジットシステムを(たとえば、RQ191a〜191cの各要求キューに関連する論理クレジットを維持するために)使用することができる。新しいチャンク要求が発信されるごとに、要求スケジューラは、各RQに関連する既存のクレジットに一定量のクレジットを加算すること、ならびに新しいチャンク要求が生成されるRQに関連する既存のクレジットから一定量のクレジットを減算することができる。追加または代替として、実施形態の要求スケジューラ192は、各RQの優先度を、次のチャンク要求が発信される次のRQを選択するときに、考慮することができる。同様に、要求スケジューラ192は、並べ替えバッファのサイズ(たとえば、RQ191a〜191cの各要求キューに関連するチャンク要求への一部または全部の応答からバッファリングされるデータの量)を監視することができ、それによって要求スケジューラは、所与のRQからチャンク要求を発信するのを、並べ替えバッファにおけるそのRQに関連するバッファリングされたデータの量が一定のしきい値を上回るときに、減速または停止するように動作することができる。実施形態の要求スケジューラ192は、バッファリングされたデータの量がしきい値を割り込んだときに、そのRQから通常の要求を発信するのを再開するように動作することができる。
【００３８】
図示の実施形態の要求スケジューラ192は、要求チャンキングアルゴリズム193の形式にフラグメント要求チャンキング機能を含むように示されている。実施形態の要求チャンキングアルゴリズム193は、要求されたフラグメントを、複数の対応するより小さいデータ要求を提供するために再分割するために利用される論理を提供する。「TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY」と題する上記の特許出願は、要求チャンキングアルゴリズム193によって実装され得るような実施形態に従って適切なチャンクサイズを計算することに関するさらなる詳細を提示している。
【００３９】
実施形態の並べ替え層194は、前述のチャンク要求に応答して提供されたチャンクから、要求されたフラグメントを再構成するための論理を提供する。チャンク要求に応答して提供されたデータのチャンクは、順が狂った形でTA120によって受信されることがあり、したがって並べ替え層194の論理は、データを並べ替え、場合によっては欠落データについての要求を行い、それによって、要求側TAに提供するための要求されたデータフラグメントを提供するように動作することができることを諒解されたい。
【００４０】
CM122の図示の実施形態のTvalueマネージャ195は、チャンク要求に関する制御を行う(たとえば、いつチャンク要求が行われるべきかを判断する)ための1つまたは複数のパラメータ(たとえば、しきい値パラメータなど)を決定し、かつ/または管理するための論理を提供する。同様に、CM122の図示の実施形態の準備計算機196は、チャンク要求に関する制御を行う(たとえば、CM122とRM121との間で次のチャンク要求に対する準備をシグナリングする)ための1つまたは複数のパラメータ(たとえば、ダウンロードレートパラメータ)を決定し、かつ/または管理するための論理を提供する。実施形態に従ったそのようなパラメータの計算およびそれらの使用に関する詳細は、「TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY」と題する上記の特許出願において提示されている。
【００４１】
実施形態の要求受信機/モニタ197は、チャンク要求を管理するように動作可能な論理を提供する。たとえば、要求受信機/モニタ197は、RM121からチャンク要求を受信し、1つまたは複数のコンテンツサーバに対して行われたチャンク要求のステータスを監視し、チャンク要求に応答して提供されたデータチャンクを受信するように動作することができる。
【００４２】
実施形態による動作中、図2のフロー200によって示されるように、RM121はUA129からフラグメントについての要求を受信する(ブロック201)。本明細書における実施形態によれば、RM121は、一般的UAまたはレガシーUA(すなわち、RMと対話するように事前設計されていないUA)からフラグメント要求を受信し、フラグメント要求に応答し、それによってそのようなレガシーUAとの互換性をもたらすように適合される。したがって、RM121は、TA120の拡張型伝送プロトコル動作からUA129を隔離するように動作することができる。ただし、以下の記述からより十分に理解されるように、UA129は、拡張型伝送プロトコル動作に適合されてよく、それによってRM121およびUA129は協調して、拡張型伝送プロトコル動作の1つまたは複数の特徴を、そのような特徴を実施するためのRM121とUA129との間のシグナリングの使用などにより実施する。
【００４３】
実施形態による動作中、要求受信機/モニタ197は、各チャンク要求に関連するダウンロード時間および/またはダウンロードレートに関する統計を収集し、そのような統計を使用して、ダウンロードされているチャンク要求があまりにも遅いかどうかを判断することができる。チャンク要求のダウンロードが遅い(たとえば、一定のしきい値よりも遅い)と見なされたとき、要求受信機/モニタ197は、進行が遅いチャンク要求の受信されていない部分についての1つまたは複数のチャンク要求を発信することができる。さらに、要求受信機/モニタ197は、進行が遅いチャンク要求を取り消すことができ、随意に、進行が遅いチャンク要求に使用されている(たとえば、伝送制御プロトコルまたは拡張型伝送プロトコルのいずれかを使用する)下部トランスポート接続を閉じて、新しい接続を開くことができる。
【００４４】
図1Cは、実施形態のトランスポートアクセラレータ構成に関するさらなる詳細を示す。図1Cの例示的な実施形態は、クライアントデバイス110に関するトランスポートアクセラレータのプロキシ動作を容易にするように適合されたTA120の構成を含む。図1Cに示すTA120の実施形態は、本明細書で説明するように、所望のコンテンツについての1つまたは複数のサーバに対して行われるチャンク要求を生成し、要求を管理するように動作可能なRM121およびCM122を含む。その上、図示の実施形態のTA120は、本明細書における概念に従って1つまたは複数のUAに代わるプロキシされたトランスポートアクセラレータ動作を容易にする追加の機能を含む。たとえば、TA120は、UA129a〜129cに対するプロキシサーバインターフェースを提供するプロキシサーバ1021を含むように示されている。図示の実施形態のTA120はまた、UA129dに対するウェブサーバインターフェースを提供するブラウザアダプタ1022を含むように示されており、UA129dは、ブラウザタイプのユーザエージェント(たとえば、ウェブコンテンツにアクセスしてウェブコンテンツを見るための、またウェブサーバとの間でHTTPを介して通信するためのHTTPウェブブラウザ)として示されている。UAに対するプロキシインターフェースを提供する前述の機能ブロックに加えて、図1Cに示すTA120の実施形態は、本明細書における概念に従ってコンテンツのトランスポートの加速を容易にする際に有用な追加の機能ブロックを含むように示されている。特に、TA120は、スタック処理1023、TA要求ディスパッチャ1024、スタック処理1025、およびソケット層1026を含むものとして示されている。TAプロキシ構成の実施形態に関するさらなる詳細が、「TRANSPORT ACCELERATOR IMPLEMENTING A MULTIPLE INTERFACE ARCHITECTURE」と題する上記の特許出願において提示されている。
【００４５】
実施形態のTA120は、UAによって要求されたコンテンツフラグメントよりも通常小さいコンテンツの部分を要求するデータ転送を実施する。したがって、実施形態のRM121は、要求されたフラグメントを、複数の対応するより小さいデータ要求(本明細書では「チャンク要求」と呼び、要求されたデータは「チャンク」を含む)を提供するために再分割する(ブロック202)ように動作する。実施形態のTA120によって要求されるチャンクのサイズは、UA129によって要求されるフラグメントのサイズよりも通常小さい。したがって、UA129からの各フラグメント要求は、そのフラグメントを回復するためにCM122に対する複数のチャンク要求を生成して行うようにRM121をトリガすることができる。そのようなチャンク要求は、フラグメントコンテンツまたはそれのある部分を含むデータオブジェクトの何らかの形式のコンテンツ識別子(たとえば、URL、URI、URNなど)を含み、場合により所望のコンテンツチャンクを含むバイト範囲などの他の情報を伴うことがあり、それによってチャンクが集まって、要求されたフラグメントが提供される。
【００４６】
TA120によって要求されるチャンクのサイズは、いくつかの考慮事項のいずれかに基づき得る。一般に、CM122は、ターゲットチャンクサイズまたはチャンクサイズ選択に関係する情報を決定し、これらをRM121に提供することができ、RM121は、提供されたターゲットチャンクサイズまたはチャンクサイズ選択に関係する情報を使用して、フラグメントが区分される実際のチャンクサイズを決定する。CM122は、ターゲットチャンクサイズまたはチャンクサイズ選択に関係する情報を、CM122が別のチャンク要求に対する準備ができていることをシグナリングするときに、RM121に提供する。したがって、フロー200の図示の実施形態は、CM122によってRM121に提供されたターゲットチャンクサイズまたはチャンクサイズ選択に関係する情報に基づくなどして、ブロック209においてRM121がチャンクサイズを決定することを示している。実施形態のCM122は、要求されるべきチャンクのターゲットサイズを決定し、チャンクサイズ選択に関係する情報を決定するための1つまたは複数のアルゴリズムを実装することができる。そのような実施形態による動作中、CM122は、CMが提供しているトランスポートに適しているチャンク要求のターゲットサイズをRM121にシグナリングすることができ、RMは、UAから受信されたフラグメント要求に基づいてCMに対して行う要求を形成しているときに、その実際のチャンクサイズを決定するために、供給されたターゲットサイズを使用することができる。
【００４７】
チャンクサイズを決定するための動作の一例として、次のチャンク要求が行われ得る所与の接続に関して、CMは、その接続を介してサーバ130が即時に送ることができるデータの量の正確なサイズまたはおおよそのサイズであるWを有し得る(この例におけるチャンクサイズは、フラグメントサイズとは無関係であり、さらにはRMによって使用され得るフラグメント組立アルゴリズムとも無関係であることが諒解されている)。CM122は、たとえば、WおよびCmaxのうちの小さい方によるターゲットチャンク要求サイズなど、次のチャンク要求にとって適切なターゲットチャンクサイズを決定することができ、Cmaxは、所望のチャンクサイズ要求の上限である(たとえば、Cmaxは、チャンク要求のコンテンツチャンクの所定の最大サイズであり得、フラグメントが、最大サイズ以下のサイズを有するチャンク要求に区分される)。このようにして所望のターゲットチャンク要求サイズを設定するための理由は、サーバがその接続を介してこのサイズの要求を受信するとすぐに、サーバがその接続を介して応答全体を即時に送ることができることである。このようにして、サーバに対する要求を行うときにすべてのチャンク要求サイズが選択される場合、およびサーバからCMに送られるすべてのパケットが受信され、順序どおりに受信される場合、CMによって要求されたすべてのデータは、CMが要求を行ったときの、さらにはCMが複数の接続を介してデータを要求しているときの順序で到着する。
【００４８】
しかしながら、特定の状況におけるチャンクサイズの選択は、システムの様々な態様に依存し得るが、それでもチャンクサイズは、要求を行うアップリンクトラフィックの割合が、要求に応答して提供されるダウンリンクトラフィックの量に対して許容できるものとなるように設定され得ることを諒解されたい。CMが要求をパイプライン化する(たとえば、単一のTCP接続でいくつかのHTTP要求をパイプライン化する)場合、比較的小さいチャンクサイズで満足できることがある。そのような場合、CM122の論理は、比較的小さいターゲットチャンクサイズを選択するように動作することができ、それでもターゲットチャンクサイズは、チャンクごとの要求および応答ヘッダオーバーヘッドが法外にならないように十分に大きい。パイプライン化がサポートもしくは許容されていないとき、または限られた量のパイプライン化のみがサポートもしくは許容されるとき、CM122の論理は、より大きいターゲットチャンクサイズを選択するように動作することができ、その理由は、さもなければ、全リンク容量を利用することが可能ではない場合があることである(たとえば、ターゲットチャンクサイズは、使用される接続の数とチャンクサイズとの積が帯域幅遅延積(BDP:bandwidth-delay product)を上回るように選択され得る)。
【００４９】
実施形態によって実装されるチャンクサイズは、データチャンクをトランスポートする際に使用される接続(たとえば、TCP接続)の輻輳ウィンドウに比例して、または輻輳ウィンドウよりも少なくとも小さくなるように選択されるのが理想であり得る。しかしながら、実施形態のTA120は、受信側(たとえば、クライアントデバイス110)において実装され、したがって一般的には、輻輳ウィンドウ情報を有しない。それでもTA120の論理は、特定の接続に関して輻輳ウィンドウの近似値を決定するように動作し得る。たとえば、実施形態のTA120は、サーバ130が直面する接続の輻輳ウィンドウを推定するために、受信側において、TCP送信側行為をシミュレートするように動作し得る。
【００５０】
以下では、本明細書における実施形態の、CM122およびRM121の論理によって実装され得るような、チャンクサイズを計算するための例示的な技法を提供する。CM122は、本技法に従って、RM121にチャンクサイズ選択に関係する以下の情報を提供することができる。
【００５１】
【表１】
2017516188.tif 000003
【００５２】
チャンクサイズ選択に関係するこの情報に基づいて、RM121は、サイズFのフラグメントを区分するために、チャンクの数Pを決定することができ、それによってフラグメントは、(たとえば、IETF RFC 5053またはIETF RFC 6330に指定された区分関数を使用して)できるだけ等しいサイズのP個のチャンクに区分され、次いで計算され得る。たとえば、RM121は、以下に示すように上記のパラメータを使用してチャンクサイズを計算することができる。
Pmax=max{1,floor(F/Cmin)}
Pmin=max{1,floor(F/Cmax)}
P=max{Pmin,min{Pmax,N}}(すなわち、P=min{Pmax,max{Pmin,N}})
【００５３】
チャンクサイズを決定するための上記の技法は、FがP個の等しいサイズのチャンクに分割されるときに、最小チャンクサイズが少なくともmin{F,Cmin}になるようにする。そのような技法を使用して計算されたチャンクサイズは、CMがパイプライン化(たとえば、HTTPパイプライン化)を最大限使用し得る状況において使用するのに特に好適である。
【００５４】
CMがパイプライン化を使用することができないとき、実施形態に従って、チャンクサイズを計算する異なる方法が利用され得る。たとえば、CM122は、たとえばCM122がRM121に、CMが別のチャンク要求に対する準備ができていることをシグナリングするときに、ターゲットチャンクサイズTを動的に決定し、TをRM121に提供することができる。各時点のTの値は、現在のネットワーク状態、現在のダウンロード速度、および本明細書の他の箇所で説明する他のメトリクスを含む、いくつかの要素に基づき得る。
【００５５】
RM121は、実施形態のCM122から受信されたTの値を使用して、下に示すように次の要求のチャンクサイズを計算することができ、Nは、RM121が次のチャンク要求を生成すべきフラグメントにおける要求されていないバイトの数である。
ChunkSize:=min(N,T)
【００５６】
実施形態による動作中、すべてのチャンクを同じサイズにすることが望まれてはいないことがある。たとえば、実施形態は、サーバに要求を最初に送るときに、より小さいチャンクサイズを利用し、経時的に、チャンク要求のサイズを拡大することができる(たとえば、接続の輻輳ウィンドウは通常、経時的に拡大するので、チャンクサイズはこの予想に従って拡大され得る)。より小さいチャンクサイズを最初に使用することによって、TA120は、ストリーミングセッションの最初にデータ転送に対する所望の応答性を経験し、その後、チャンクサイズを拡大することによって、アップリンク帯域幅利用とダウンリンク帯域幅利用との間のより良いトレードオフを得ることができる。
【００５７】
すべて同じサイズのチャンクの使用も同様に望ましくないことがあり、その理由は、そのような均一のチャンクサイズの使用により、TAとサーバとの間のすべての接続が同時にアイドル状態になり、それによって非効率的なチャネル使用が生じ得ることである。その上、(たとえば、Nが小さいことに起因して)極めて小さいチャンクが要求される状況では、以前のチャンク要求がより大きいことが望まれ得る。以下の技法は、RM122によってチャンクサイズを計算するために以下のパラメータを使用して上記の考慮事項に対処するように適合されている。
【００５８】
【表２】
2017516188.tif 000004
【００５９】
チャンクサイズはRM122によって、以下に示すように上記パラメータを使用して計算され得る。
P=T*(1+A*revbits(I)/232)
P*X>Nの場合、ChunkSize:=Pを設定する
それ以外の場合、ChunkSize:=Nを設定する
I=(I+1)mod232
【００６０】
上記の計算において、revbits(I)は、Iが32ビット値として表されるときに生成される値であり、Iの32ビットは逆順で記載され、次いで、反転された32ビットが整数値として扱われる。たとえば、I=7の場合、32ビット値として表されるIは00000000000000000000000000000111であり、したがってrevbits(I)は11100000000000000000000000000000の整数値であり、これは3,758,096,384であるので、revbits(7)/232=0.875である。本明細書における実施形態に従って行われ得るようなチャンクサイズ決定は、1つまたは複数のコンテンツ転送セッション(たとえば、ストリーミングメディアセッション)に対して事前に、コンテンツ転送セッションの開始と同時に、1つまたは複数のコンテンツ転送セッション中に動的になど、およびそれらの組合せで実行され得ることを諒解されたい。したがって、図2のブロック209において実行されるようにチャンクサイズを決定することは、フロー200に表される他の動作に関する様々な時間に、上記の技法のうちの1つまたは複数を実施することなどによって、実行され得る。
【００６１】
その上、実施形態について、本明細書ではチャンクサイズ決定を行うためのCM122およびRM121の論理の相互運用性に関して説明しているが、実施形態は、チャンクサイズ決定のための他の論理を利用してもよい。たとえば、実施形態は、CM122内でのみ、もしくはRM121内でのみチャンクサイズを決定すること、またはチャンクサイズを決定するために他のモジュールもしくは論理もしくは情報を使用することがある。たとえば、RM121は、様々なチャンク要求のチャンクサイズを動的に決定するために、CM122によって提供され得るようなダウンロード統計を利用し得る。
【００６２】
チャンクサイズ決定のタイミングおよび決定を行うための論理が配置され得る場所に関係なく、実施形態のRM121は、要求されたフラグメントを確実に受信し回復するために、CM122にどのデータを要求すべきかを決定するように動作する。したがって、実施形態のRM121は随時、UA129によって行われた1つまたは複数のフラグメント要求に関連し得るような1つまたは複数の選択されたチャンク要求をCM122に提供する(図2のブロック203)。
【００６３】
実施形態による動作中、RM121は、CM122からの、CMが次のチャンク要求を行う準備ができていることを示すチャンク準備シグナリングを受信し得る。たとえば、TA120(たとえば、CM122)は、図示の実施形態のブロック210によって示されるように、チャンク要求に関する制御を行う(たとえば、いつチャンク要求が行われるべきかを判断する、および/またはCM122とRM121との間で次のチャンク要求に対する準備をシグナリングする)ための1つまたは複数のパラメータ(たとえば、ダウンロードレートパラメータ、しきい値パラメータなど)を決定するための論理を実装することができる。実施形態に従ったそのようなパラメータの計算およびそれらの使用に関する詳細は、以下で提示する。
【００６４】
RM121によってCM122に対して行われたチャンク要求の一部は、すでに要求されたがまだ到着していないデータ、および決して到着しない可能性またはあまりにも遅く到着する可能性があるとRM121が判断したデータについてのものであり得る。追加または代替として、RM121によってCM122に対して行われたチャンク要求の一部は、元のフラグメントから生成されたFEC符号化されたデータについてのものであることがあり、それによってRM121は、CM122から受信されたデータをFEC復号して、フラグメントまたはそれのある部分を回復することができる。RM121は、回復されたフラグメントをUA129に配信する。したがって、FECデータを使用せず、したがって元のソースフラグメントからのデータのいくつかの部分を要求するだけである基本RM構成(RM-基本)、および元のソースフラグメントからのデータのいくつかの部分を要求することのほか、ソースフラグメントから生成されたFECフラグメントをマッチングすることもできるFEC RM構成(RM-FEC)を含み得るような、本発明の実施形態によるRMの様々な構成があり得る。
【００６５】
実施形態のRM121は、タイミングおよび/または帯域幅利用可能性の制約を認識していないことがあり、それによって、RM121とCM122との間の比較的単純なインターフェースを円滑にすることができ、したがってRM121は、RM121によるそのような制約の考慮なしに、チャンク要求を行うように動作し得る。代替的に、RM121は、CM122またはクライアントデバイス110内の他のモジュールによってRM121にもたらされ得るような、タイミングおよび/または帯域幅利用可能性の制約を認識するように適合され得、したがってRM121は、そのような制約に基づいてチャンク要求を行うように動作し得る。
【００６６】
実施形態のRM121は、複数の異なるCM構成による動作に適合される。その上、いくつかの実施形態のRM121は、複数のCMに同じフラグメントまたは一連のフラグメントのデータチャンクを要求するなどのために、2つ以上のCMと同時にインターフェースすることができる。そのような各CMは、たとえば、異なるネットワークインターフェースをサポートすることができる(たとえば、第1のCMは、オンデバイスキャッシュへのローカルインターフェースを有することができ、第2のCMは、3GネットワークインターフェースへのHTTP/TCP接続を使用することができ、第3のCMは、4G/LTEネットワークインターフェースへのHTTP/TCP接続を使用することができ、第4のCMは、WiFiネットワークインターフェースへのHTTP/TCP接続を使用することができる、など)。
【００６７】
実施形態による動作中、CM122は、RM121とインターフェースしてチャンク要求を受信し、それらの要求をネットワーク150を介して送る(図2のブロック204)。CM122は、チャンク要求への応答を受信し(ブロック205)、応答をRM121に戻し(ブロック206)、ここにおいて、UA129によって要求されたフラグメントは、RM121によって受信されたチャンクから解決され(ブロック207)、UA129に提供される(ブロック208)。CM122の機能は、RM121によって行われたチャンク要求のデータをいつ要求するかを決定するように動作する。本明細書における実施形態によれば、CM122は、チャンクを一般的サーバまたはレガシーサーバ(すなわち、CMと対話するように事前設計されていないサーバ)に要求し、当該サーバから受信するように適合される。たとえば、CM122がデータを要求する際の要求先のサーバは、標準HTTPウェブサーバを含むことがある。代替的に、CM122がデータを受信する際の送信元のサーバは、MBMSサービス展開において使用されるBM-SCサーバを含むことがある。
【００６８】
上記で説明したRM121の場合と同様に、本発明の実施形態によるCMの様々な構成があり得る。たとえば、複数接続CM構成(たとえば、CM-mHTTP)が提供されることがあり、それによってCMが、複数のTCP接続を介してHTTPを使用するように適合される。複数接続CM構成は、たとえば、ネットワーク状態、データに対する需要、輻輳ウィンドウなどに応じて、接続(たとえば、TCP接続)の数を動的に変えるように動作することができる。別の例として、拡張型伝送プロトコルCM構成(たとえば、CM-xTCP)が提供されることがあり、ここにおいてCMは、(本明細書ではxTCPと呼ばれる)TCP接続の拡張された形式の上にHTTPを使用する。そのような拡張型伝送プロトコルは、本明細書における概念に従ってTA120によるフラグメントの向上した配信を促進するように適合された動作をもたらすことができる。たとえば、xTCPの実施形態は、(パケットが失われているときのTCPの重複確認応答方式とは対照的に)送られたパケットが失われているときでも、サーバに確認応答を戻す。そのようなxTCPデータパケット確認応答方式は、TA120によって、データパケットが欠落していると判断したことに応答してデータパケットが送信されるレートをサーバが低下させるのを回避するために利用され得る。さらに別の例として、専有プロトコルCM構成(たとえば、CM-rUDP)では、CMは、専有ユーザデータグラムプロトコル(UDP)プロトコルを使用し、サーバから応答データを送るレートは、一定の事前設定されたレートであってよく、またはネットワークを望ましくない形で輻輳させることなく送信レートができるだけ高くなるようにするレート管理がプロトコル内にあり得る。そのような専有プロトコルCMは、専有プロトコルをサポートする専有サーバと協調して動作することができる。
【００６９】
図示の実施形態について、サーバ130にソースファイルからのデータを要求しているCM122に関して述べてきたが、データにアクセスするためにCMが有するインターフェースのタイプに応じて、ソースファイルがサーバ上で入手可能であり得るか、またはクライアントデバイス上でローカルに記憶され得ることを諒解されたい。いくつかの実施形態では、マッチするソースファイルからFEC符号化を使用して生成された修復シンボルを含むFECファイルが、サーバ上で入手可能なこともある。そのような実施形態では、たとえば、ソースファイルごとに1つのFECファイルがあり得、各FECファイルは、データを要求するために使用されるCMの特定の実施形態とは無関係に、当技術分野で知られているFEC符号化技法を使用してソースファイルから生成される。
【００７０】
さらに、実施形態によれば、クライアントデバイス110は、(たとえば、WiFiまたはBluetooth（登録商標）インターフェースを介して)本明細書ではヘルパーデバイスと呼ばれる1つまたは複数の他のデバイス(たとえば、近くに配置された様々な構成のデバイス)に接続することが可能であり得、そのようなヘルパーデバイスは、3GまたはLTE接続を介した、場合によってはヘルパーデバイスごとに異なるキャリアを介した、サーバ130などの1つまたは複数のサーバへの接続を有し得る。したがって、クライアントデバイス110は、サーバ130などの1つまたは複数のサーバにチャンク要求を送るために、ヘルパーデバイスの接続を使用することが可能であり得る。この場合、ヘルパーデバイスの各々に接続し、チャンク要求を送り、応答を受信するCMがTA120内にあり得る。そのような実施形態では、ヘルパーデバイスは、同じフラグメントについての異なるチャンク要求を同じまたは異なるサーバに送ることができる(たとえば、同じフラグメントは、複数のサーバ上でヘルパーデバイスが入手可能であり得、その場合に、たとえば、異なるサーバが、同じまたは異なるコンテンツ配信ネットワーク事業者によって提供される)。
【００７１】
複数のチャンクとしてコンテンツの所望のフラグメントを転送するために、データオブジェクト識別子(たとえば、URL、URI、URNなど)およびチャンクコンテンツについてのデータオブジェクト内のバイト範囲を使用するなどして、複数のチャンク要求が行われる実施形態について上記で説明した。しかしながら、コンテンツサーバ(たとえば、サーバ130)構成によっては、そのようなバイト範囲要求をサポートしないものもあり、したがって、バイト範囲のコンテンツのチャンクではなくデータオブジェクト全体を、チャンク要求に応答して戻すように動作することがある。したがって、それでも複数のチャンク要求が行われた場合、データオブジェクト全体の複数のインスタンスがクライアントデバイスに転送される。本明細書におけるトランスポートアクセラレータの実施形態は、コンテンツのソースとして動作しているサーバによってバイト範囲要求がサポートされるかどうかを検出するように動作する。たとえば、実施形態のTA120は、最初にHTTPバイト範囲要求を発信し、応答コードを分析して、バイト範囲要求がサポートされるかどうかを判断することができる(たとえば、206応答コードを受信することが、バイト範囲要求がサポートされると判断するために利用され得、200応答コードを受信することが、バイト範囲要求がサポートされないと判断するために利用され得る)。バイト範囲要求がサポートされると判断された(たとえば、ホスト(オリジン)サーバに送られた1つまたは複数のチャンク要求に応答してHTTP206が受信された)場合、TA120はそれの論理を続行して、フラグメント要求を、そのホストサーバに送るためにチャンク要求に区分することができる。一方、バイト範囲要求がホストサーバによってサポートされないと判断された(たとえば、ホスト(オリジン)サーバに送られた1つまたは複数のチャンク要求に応答してHTTP200が受信された)場合、TA120は、そのホストサーバに送られたバイト範囲を指定したすべての残存要求を取り消すことができる。サーバがバイト範囲要求をサポートしない(たとえば、サーバはHTTP 1.1準拠ではない)と判断された場合、TA120は、同じデータオブジェクトの複数のインスタンスが転送されることになる複数のチャンク要求の使用を回避するために、それの動作を変更するように動作することができる。たとえば、RM121は、CM122にデータオブジェクト全体(たとえば、コンテンツファイル)についての要求を行い、それによってCM122は相応して、サーバ130にファイル全体を要求する。そのような動作は、チャンク要求がサポートされるトランスポートアクセラレータ動作と比較して最適なパフォーマンスをもたらさないことがあるが、コンテンツサーバがバイト範囲要求をサポートしない状況では、そのような動作は、コンテンツの二重の転送を回避する。
【００７２】
バイト範囲要求がサポートされる場合でも、様々なクライアントデバイスおよび/またはサーバの構成に起因して最適なパフォーマンスが生じないことがあることを諒解されたい。たとえば、CM122によってサーバ130に対して行われるチャンク要求のサイズは、極めて小さいことがあり、そのようなチャンク要求が行われる接続に関して実装される通信プロトコルは、ネットワークを介して送られるパケットの数を減らすことによってネットワーク効率を改善するためのいくつかの技法を実装し得る。そのような技法は、本明細書におけるチャンク要求に、望ましくない形で影響(たとえば、遅延)をもたらすことがある。たとえば、Nagleアルゴリズムは、いくつかの小さい発信メッセージを組み合わせ、それらをすべて一度に送るようにTCP接続に関して実装され得る(たとえば、送信側が確認応答を受信していない送信済みパケットがある限り、送信側は、出力が一緒に送られ得るように、パケット全体分の出力を有するまで、それの出力をバッファリングし続けることがある)。Nagleアルゴリズムの動作は、一般にネットワーク効率を改善するが、チャンク要求を遅延させることがある。チャンク要求のそのような遅延は、たとえば、ストリーミングコンテンツの失速、ライブストリーミングの許されない遅延などをもたらすことによって、許容できないユーザエクスペリエンスを生じさせることがある。したがって、実施形態は、ネットワークを介して送られるパケットの数を減らすように動作するNagleアルゴリズムなどのネットワーク効率技法を無効化するように動作する。
【００７３】
バイト範囲要求がコンテンツサーバによってサポートされる場合でも、クライアントデバイスは、コンテンツファイルのサイズおよび/または要求されるべきフラグメントのサイズに関する情報を有しないことがある。しかしながら、本明細書における実施形態によるトランスポート加速の利点を提供するために、実施形態のTA120の動作は、上記で説明したようにコンテンツのチャンクについての要求を行う。コンテンツファイル、ひいてはそれのフラグメントのサイズに関する情報を取得するために、TA120は、最初に1つまたは複数の小さいチャンク要求(たとえば、16KBの要求)を行うように動作することができ、それによって、それらの要求に対する応答は、サーバからの実際のコンテンツサイズを含むことになる。TA120の論理(たとえば、RM121および/またはCM122の論理)は、その後、その情報を使用して、フラグメントをチャンクに分割する方法および残存要求をスケジュールする方法を決定することができる。実施形態のTA120は、コンテンツファイルのサイズが知られていないときに、上記の方法と同様の代替方法で動作することができる。たとえば、TA120が既知のサイズのコンテンツファイルの場合に複数のチャンク要求を行うのであれば、TA120は、第1のチャンク要求の時点でコンテンツファイルのサイズが知られていないときに、同様の数のチャンク要求を同様の要求タイミングで行うことができる。フラグメントサイズが知られていない場合、RM121は、サイズが含まれるチャンク要求からの応答を受信するまで、フラグメントサイズが無限大(または無限)であると仮定することができる。この実施形態により、フラグメントの終わりを越えるフラグメントのバイト範囲についてのチャンク要求が生じる可能性がある。したがって、実施形態によれば、バイト範囲要求をサポートするサーバからのチャンク要求に対する応答は、以下のとおりであり得る。(a)要求されたバイト範囲とフラグメントの実際のバイト範囲との間に完全な重複がある場合、HTTP206OK応答であり、したがって、応答してサーバからチャンク要求のバイト範囲が返される、(b)チャンク要求における要求されたバイト範囲とフラグメントの実際のバイト範囲との間に重複がない場合、HTTP404エラー応答であり、応答してサーバによってフラグメントのバイトが提供されることはない。(c)チャンク要求におけるバイト範囲とフラグメントのバイト範囲との間に部分的重複があることを示すHTTP応答であり、応答してサーバから、チャンク要求のバイト範囲とフラグメントのバイト範囲との間の重複が返される。これらの場合の一部または全部では、応答は、フラグメントのサイズも含む。応答のいずれかにおいて受信されたこの情報に基づいて、RM121は、さらなる応答または処理のために、フラグメントの実際のサイズを設定することができる。
【００７４】
上記のことから、実施形態のRM121は、未知のサイズのフラグメントのチャンク要求に対する考えられる応答を適切に処理するように適合されることが諒解され得る。たとえば、エラーコードまたは警告を伴うHTTP応答は、RM121によってシームレスに処理されるべきであり、その理由は、応答して実際のフラグメントサイズをRMが取得したときにRMが判断し得るように、これらの応答は当然ながらフラグメントの無効または部分的に無効なバイト範囲を要求したためだとRMが判断し得ることにある。
【００７５】
未知のサイズのフラグメントを処理するための上記の技法は、たいていの状況において良好に機能し得る。たとえば、フラグメントは、HTTPプログレッシブダウンロードストリーミングの場合に単一のRTTにおいて要求されるものよりもはるかに長くなる可能性が高く、したがって、フラグメントのサイズは、チャンク要求においてフラグメント全体が要求される前に応答して取得されることになるので、一般に、フラグメントサイズが知られる前に行われたチャンク要求におけるバイト範囲のすべては、有効なバイト範囲となる。同様に、DASHストリーミングの場合、フラグメントの再生時間は、持続時間においていくつかのRTTとなる可能性が高く、したがって、ダウンロードレートが現在の再生レートを大幅に上回る場合を除いて同じ分析が有効であり、前記の場合には、フラグメントの重複のないバイト範囲を伴って送られたいくつかのチャンク要求があり得るが、これは通常、選択された再生がダウンロードレートを大幅に下回るときに発生し、その場合にフラグメントの重複のないバイト範囲を伴ってチャンク要求を行うことの影響は、大幅に低減される。
【００７６】
したがって、トランスポートアクセラレータは、チャンク要求を最適に実施するには不十分な情報が利用可能な場合でも、コンテンツを即時に要求し、後で、チャンクサイズを決定し、適切なチャンク要求をスケジュールするために利用可能な情報を使用するように動作可能であり得る。
【００７７】
上記で説明したように、複数接続CM構成(たとえば、CM-mHTTP)が提供され得、それによってCMが、本明細書における概念に従ってコンテンツを1つまたは複数のコンテンツサーバに要求し、当該コンテンツサーバから受信するために複数の接続を使用するように適合される。複数の接続が使用中である場合、互いに公平になるように(たとえば、接続のダウンロードレートが、2倍以内など、互いに合理的に近いところにとどまるようにするために)異なる接続をCMが強制する方法に関する公平性の側面が生じる。
【００７８】
複数の接続に関して公平性のレベルを提供するための比較的単純な技法は、CMが接続の各々の受信ウィンドウサイズを制御する実装を含む。たとえば、CM122は、すべてのTCP接続の受信ウィンドウサイズを等しく、かつ、利用可能帯域幅がTCP接続によってほぼ完全に利用され得るほど十分に大きく、ただし、一部のTCP接続が時には他のTCP接続よりもはるかに速くダウンロードするほど大きくならないように、設定することができる。そのような実装形態は、そのような各TCP接続について、ほぼ等しいダウンロードレートを達成することができる。
【００７９】
受信ウィンドウサイズを制御することを回避する、複数の接続に関して公平性をもたらすための代替技法は、各接続を介して要求されたがまだ配信されていないデータの量を制御するように適合された実装を含む。この技法の目的は、接続がほぼ同じレートでダウンロードするように、またネットワークにおいてバッファリングされるデータの量を減らすように、接続の総ダウンロードレートを上げることである。この技法を実装する実施形態は、複数の接続のうちの特定の接続においてデータの別のチャンクがいつ要求されるべきかを決定するために、1つまたは複数のしきい値パラメータを利用する。実施形態に従って、複数の接続の各接続に関して、上記のしきい値パラメータの同じ値が利用され得る。代替実施形態は、所望される場合、1つまたは複数の接続に関して、上記のしきい値パラメータの異なる値を利用することができる。
【００８０】
各接続を介して要求されたがまだ配信されていないデータの量を制御する接続公平性実装の実施形態に従って、しきい値パラメータThreshが、いくつかのオクテットとなるように定義され、その値をCMが制御し、Threshは、接続においてデータの別のチャンクが要求され得るときを判断するために使用される。たとえば、TCP接続において要求されたがまだ受信されていないデータの量がThreshを下回るとき、その接続において別のデータチャンク要求が行われ得る。一方、TCP接続において要求されたがまだ受信されていないデータの量がThresh以上であるとき、そのTCP接続において別のデータチャンク要求は行われない。
【００８１】
図3は、接続においてデータの別のチャンクが要求され得るときを判断するためのしきい値パラメータThreshを採用する実施形態による動作を示す。図示の例では、現在の要求すべてについての受信予定の残されたデータの量がThreshを割り込んだときに、CMが特定の接続において別のチャンク要求に対する準備ができていると仮定される。たとえば、CM122は、上記のCM-mHTTP構成を含むことができ、図3に示すように3つのTCP接続を利用していることがあり、ここにおいて、CMは、3つの接続すべてにおいてデータについてのHTTPチャンク要求をすでに行っており、その結果、3つのTCP接続の各々において受信される予定の残存データの量が、依然としてしきい値量Threshを上回っている。このシナリオでは、CMは現在、これら3つの接続のいずれにおいてもそれ以上のHTTP要求を行うことができない。したがって、CMがRMから別のチャンク要求を受信したとしても、CMはそのチャンクについての要求を即時に行うことができないので、CMは、RMからの別のチャンク要求に対する準備ができていない。
【００８２】
図4は、CMがチャンク要求を即時に行うことが現在可能であるときを判断するためのしきい値パラメータThreshを採用する実施形態による動作を示す。この例でも、現在の要求すべてについての受信予定の残されたデータの量がしきい値量Threshを割り込んだときに、CM122が特定の接続において別のチャンク要求に対する準備ができていると仮定される。図4の例では、接続のうちの少なくとも1つ(たとえば、TCP接続2およびTCP接続3)において十分なデータが受信されており、その結果、別の要求を行うことができる。
【００８３】
しきい値パラメータThreshの値の選択の目的は、接続の総ダウンロードレートが現在のネットワーク状態で可能な最大ダウンロードレートの近くになるほど値を十分に大きくする一方で、同時に、異なる接続がほぼ同じレートでデータをダウンロードするように値をできるだけ小さくし、ネットワークにバッファリングされるデータの量ができるだけ小さくなるように、値を選択することである。Threshの値は、個々のTCP接続においてHTTPパイプライン化が使用されるときに、本明細書で説明する方法に基づいて動的に決定され得る。チャンクサイズCをできるだけ小さくなるように選択することは、上記を容易にする。しかしながら、前に説明したように、チャンクサイズは、チャンクを要求するオーバーヘッドが、チャンク応答を受信するために使用されるダウンロード帯域幅のごく一部になるほど十分に大きいものであるべきである。たとえば、Cが8KBに設定され、HTTP要求が200バイトのサイズを有する場合、Cのこの値に対するチャンク要求の相対オーバーヘッドは約2.5%である。これは、TCP確認応答トラフィックが通常はTCPダウンロードトラフィックの数パーセントであることを踏まえると、妥当なトレードオフである。
【００８４】
パイプライン化が実施されていないとき、上で説明したような上記のしきい値パラメータの直接使用は問題となるが、それでも、本明細書における接続公平性をもたらすために、しきい値ベースのアルゴリズムが実施され得ることを諒解されたい。たとえば、固定数N個のTCP接続が使用されている場合に、各チャンク要求がサイズThreshを有する場合、ネットワーク上の残存バイトの総量は、せいぜいN*Threshとなる。したがって、サーバへのリンクの帯域幅遅延積が大きい場合に、Threshの大きい値が望ましいことがある一方、帯域幅遅延積が大きくない場合に、Threshの小さい値が好ましいことがある。そのような実装形態では、トレードオフは概して、上述したパイプライン化される場合と同じである(すなわち、しきい値パラメータThreshの値は、できるだけ最大に近いレートでデータを受信することを可能にするほど十分に大きく、一方でネットワーク上での不要なバッファリングを回避するほど十分に小さいものであるべきである)ことを諒解されたい。ただし、パイプライン化される場合と比較して、パイプライン化されない例におけるしきい値パラメータThreshの値は、約N/2〜N倍だけ小さくなるべきである。
【００８５】
本明細書における実施形態のトランスポートアクセラレータによって利用される複数の接続に関する公平性を実施するためのしきい値パラメータの使用について概して説明してきたが、そのようなしきい値パラメータの適切な値を計算することに関する詳細を以下で提示する。以下に記載する技法は、しきい値パラメータThreshの値を反復的に計算し、パイプライン化される場合およびパイプライン化されない場合に適用され得ることを理解されたい。
【００８６】
実施形態による動作中、Threshの最適な値はネットワーク状態により変わり得るので、CM122は、現在のネットワーク状態に基づいてThreshの値を動的かつ継続的に調整する。本明細書における実施形態に従って、Threshの値を決定する(たとえば、図2のブロック210における動作)ための技法を実施する際に、複数のダウンロードレートパラメータ(たとえば、DR、DFRおよびDCR)が利用され得る。そのようなダウンロードレートパラメータは、サーバからクライアントにダウンロードされているデータ、データのフラグメント、および/またはデータのチャンクの速度の測定値を提供し、時間ウィンドウに受信されているバイトの数によって決定され得る。たとえば、接続(たとえば、TCP接続)の(たとえば、適切な時間ウィンドウにおいて測定された、または加重移動平均を使用して平均化された)総平均ダウンロードレートとしてDR(ダウンロードレート)が定義される。接続の総平均ダウンロードレートとしてDFR(ダウンロードフラグメントレート)が同様に定義されるが、異なる点として、DFRの場合には、各フラグメントの第1のパケット、およびフラグメントの第1のパケットの受信と(TCP接続のいずれかを介した、任意のフラグメントからの)先行パケットの受信との間の時間が平均に含まれない(すなわち、「ディスカウントされる」)。同様に、接続の総平均ダウンロードレートとしてDCR(ダウンロードチャンクレート)が定義されるが、異なる点として、DCRの場合には、各チャンクの第1のパケット、およびチャンクの第1のパケットの受信と(TCP接続のいずれかを介した、任意のチャンクからの)先行パケットの受信との間の時間が平均に含まれない(すなわち、「ディスカウントされる」)。
【００８７】
DCRは通常、比較的高く(すなわち、第1のパケットチャンクのバイトを含み、第1のパケットと以前のパケットとの間の時間を含む、時間ウィンドウ全体でダウンロードレートが平均化される場合よりも高く)なり、ある意味でそれは、例としてネットワーク状態、使用されるTCP接続の数および他の要素に応じたインターフェースでの真の利用可能帯域幅を表し得る。一般に、DCRはDFR以上となるが、常にそうなるとは限らず、DFRがDCRよりも大きいときもある。一般に、DCR計算の目的は、サーバまたは他の外部ネットワーク要素からの明示的なフィードバックを必要とすることなく、データのパイプライン化を制御する方法を示す値を与えることである。
【００８８】
しきい値パラメータThreshは、以下に従うなどして、そのようなダウンロードレートパラメータを使用して決定および/または調整され得る。
DCR>DFR*1.05の場合、Threshの値を増やす。
そうではなくDCR≦DFR*1.05の場合、Threshの値を減らす。
ここにおいて、Threshの増減値は、所定の値(たとえば、2KB)であり得、DCR対DFRの相対比率などに依存し得る。
【００８９】
しきい値パラメータThreshを決定するためのそのような技法は、随時採用され得る。たとえば、Threshの値は、所定の時間期間経過後(たとえば、2秒ごとに)、事象が発生したとき(たとえば、10などのいくつかのRTTの後、またはCMによってチャンク要求が受信されるたびに)などに調整され得る。
【００９０】
実施形態は、追加または代替として、ダウンロードレートパラメータのうちの1つまたは複数を動的に測定し、それに応じてしきい値パラメータを決定/調整するように動作することができる。たとえば、Threshを決定/調整した後、実施形態は、Threshの調整が発生した後に発信されたチャンクに基づいてDCRおよびDFRを測定することができる。その後、Threshの値は、これらの更新されたダウンロードレートパラメータを使用して調整され得る。DCRおよびDFRの上記の動的に更新された測定値は、たとえば、発信された固定数T個のチャンク要求に基づき得る。そのような技法は、DFRおよびDCRの測定の期間がRTTに依存する(これは望ましい)が、明示的にRTTを測定することを必要としないという利点を有する。別の利点として、それは、前回Threshが調整される前に発生し、そのため現在のネットワーク状態をもはや反映していないDCRおよびDFRの測定に基づいて後続の調製が行われる可能性を回避する。
【００９１】
本発明の実施形態は、前述のダウンロードレートパラメータ(すなわち、DR、DFRおよびDCR)の追加または代替としてのダウンロードレートパラメータを利用することができる。たとえば、上記のThresh決定においてDFRを使用することの代替として、実施形態のCM122は、接続の総平均ダウンロードレートとして定義されるDDDR(ダウンロードディスカウント遅延レート)を使用することができるが、異なる点として、DDDRの場合には、以下で詳述するように、DDDRを計算するときに、遅延している各チャンク要求の第1のパケットのバイト、および遅延している各チャンク要求の第1のパケットと以前受信されたパケットとの間の時間がカウントされない(すなわち、「ディスカウントされる」)。
【００９２】
DDDRダウンロードレートパラメータを利用する実施形態を実施しているとき、CM122は、次のチャンク要求に対する準備ができていることをCMがシグナリングしたときにチャンク要求がRM121によってCMに即時に提供された場合に、チャンク要求を「遅延していない」に分類するように動作することができる。同様に、CM122は、次のチャンク要求に対する準備ができていることをCMがシグナリングしたときにチャンク要求がRM121によってCMに即時に提供されなかった(たとえば、次のチャンク要求に対する準備ができていることをCMがシグナリングしたときに、RMが行うことのできるチャンク要求を有していないことに起因するなどして、ある程度の遅延がある)場合、チャンク要求を「遅延している」に分類することができる。したがって、CM122は、ダウンロードレートとしてDDDRを計算することができるが、異なる点として、CMは、DDDRの分子を計算するときに、遅延している各チャンク要求の第1のパケットのバイトをカウントせず、DDDRの分母を計算するときに、遅延している各チャンク要求の第1のパケットと以前受信されたパケットとの間の時間をカウントしない。実施形態のCMは、一貫性のために、遅延しているチャンク要求として真っ先に受信する第1のチャンク要求を考えるように動作することができる。
【００９３】
上記のことから、DDDRを使用する実装形態は、CM122とRM121との間に、他の実装形態(たとえば、DFRが使用される実装形態)とは多少異なるAPIを採用することができることが諒解される。たとえば、チャンク要求に対する準備ができていることをCMがRMに対しシグナリングしたとき、RMは、(RMが行うことのできるチャンク要求を有すると仮定した場合)チャンク要求により即時に応答することができ、その場合にチャンク要求はCMによって、DDDRの計算において遅延していないチャンク要求に分類される。代替的に、RMが、チャンク要求に対する準備ができていることのCMからの信号に応答したものではないチャンク要求をCMに提供した場合、CMはチャンク要求を、DDDRの計算において「遅延している」に分類する。RMとUAとの間に同様のAPIが定義され得る。
【００９４】
実施形態のDDDRダウンロードレートパラメータは、以下に記載するように計算され得る。
【００９５】
【表３】
2017516188.tif 000005
【００９６】
Z=0
Tr=0
パケットPが(Bバイトのサイズで、壁時計時間Twに)受信されるたびに:
Pが、遅延しているチャンクの第1のパケットである場合、{S=Tw}
そうではなく、Pが、遅延しているチャンクの第1のパケットではない場合、
{Tr=Tr+(Tw-S);
Z=Z+B;
S=Tw
}
DDDR=Z/Tr
【００９７】
実施形態による動作中、DDDRは、ダウンロードの時間全体ではない時間ウィンドウにおいて計算または平均化され得る。たとえば、DDDRが最後の持続時間ウィンドウW秒において計算される場合、分子Z_Wおよび分母Tr_Wが最後のW秒において計算され得、それによってDDDR=Z_W/Tr_Wとなる。Wの半減期(half-life)に指数加重移動平均(EWMA:exponential weighted moving average)を使用するなどして、DDDRの他の変形形態を計算するために同様の技法が使用され得ることを、当業者は認識しよう。
【００９８】
DFRの代わりにDDDRを使用する利点は、DDDRを計算することが、RMからCMに渡されるいかなる特別な知識も利用しないことであることを諒解されたい。特に、どのチャンクが新しいフラグメントに属するかについてRMがCMにシグナリングすることなく、CMはDDDR値を計算することができる。その上、DDDRの使用は、特別な場合でなくてもCMが実際にダウンロードしている時間をCMが正確に測定することを可能にする。対照的に、DFRの使用は、フラグメントごとに1つのチャンクしかないときに、DFRとDCRとの間に差がないことに関する問題を提起する。DDDRの使用はこの問題を有しないので、DDDRを利用する実施形態は、フラグメントごとに1つのチャンクしかないときの特別な例外なしに使用され得る。さらなる利点として、DDDRは、フラグメントがまだ入手できないためにRMが必ずしもフラグメントの第1のチャンク要求をCMに供給できるとは限らないライブの場合の適切な測定値であるが、次のチャンク要求に対する準備をCMがシグナリングしたときに次のフラグメントの第1のチャンクが作られ得る場合に、より適切に対処する。対照的に、DFRを利用する実施形態は、この新しいフラグメントの第1のパケットをディスカウントするが、CMが次のチャンク要求に対する準備ができている場合に、この第1のパケットをディスカウントする理由はない。同様に、DDDRは、上記の同じ理由で低/高ウォーターマーク戦略を使用するダウンロードの場合の適切な測定値である(すなわち、低ウォーターマークと高ウォーターマークとの間のバッファフィルとしてダウンロードするときに即時に要求されたフラグメントの最初のパケットはディスカウントされるべきではないが、高ウォーターマークに到達し、低ウォーターマークへの排出(drain)まで待った後に要求されたフラグメントの最初のパケットは、DDDRとDFRの両方でディスカウントされるべきである)。
【００９９】
実施形態は、ダウンロードレートパラメータDFRに関して上記で説明したすべての方法においてダウンロードレートパラメータDDDRを使用する。たとえば、実施形態のCM122は、しきい値Threshの調整方法に関する決定を行うためにDDDRを利用することができ、Threshは、それを下回ると新しい要求が行われるTCP接続のバッファレベルである。すなわち、Bが、TCP接続において要求されたがまだ受信されていないデータの量である場合、B<Threshのとき、CMによって新しいチャンク要求が行われ得る。
【０１００】
ダウンロードレートパラメータDPR(ダウンロードパイプラインレート)は、上記のダウンロードレートパラメータ(すなわち、DR、DFR、DCRおよびDDDR)の追加または代替として使用され得るダウンロードレートパラメータの別の例である。DPRは、たとえば、上記のThresh決定においてDFRまたはDDDRを使用することの代替として使用され得る。DPRは、DFR、DCRおよびDDDRと同様の実施形態に従って利用されるが、以下で説明するように相違がある。
【０１０１】
DPRは、接続(たとえば、TCP接続)の総平均ダウンロードレートとして定義されるが、異なる点として、DPRの計算は、チャンク要求が行われたときに残存データを有しない接続において行われたチャンク要求の第1のパケットをディスカウントする。DPRの計算において、チャンク要求が遅延している場合、チャンクのいくつかの最初のパケットはディスカウントされる(たとえば、CMが次のチャンク要求に対する準備ができていることをRMが通知されたとき、チャンク要求は行われない)。したがって、DPRは、真のダウンロードレートとほぼ同じであり、最初の時間期間に、DPRとDCRとの間に差はないことがある。たとえば、セッションの真っ先に異なる接続において行われた最初の数個のチャンク要求は、以下でさらに詳細に説明するように、「パイプライン化されていない」に分類され(したがって、これらのチャンクの最初のパケットは、DPRまたはDCRによってカウントされない)、同様に、ライブシナリオにおけるフラグメント要求に関する最初のチャンク要求は、そのようなフラグメントが所与のタイムラインでのみ入手可能であり、次のフラグメントが入手可能になる前に以前のフラグメントが完全にダウンロードされた場合に、「パイプライン化されていない」に分類され得る。同様に、高-低ウォーターマークダウンロード方法を使用するときに、低ウォーターマークにメディアバッファを排出した直後にオンデマンドコンテンツについて行われたチャンク要求は、これらのチャンク要求が行われたときにすべてのTCP接続が使用中ではないので、「パイプライン化されていない」に分類され得る。
【０１０２】
DPRを利用する実施形態の場合、接続において次のチャンク要求が行われたときに、その接続に関して要求されたがまだ受信されていないデータの量は、ネットワークバッファリング済みデータBuffと呼ばれ得る。しきい値パラメータThreshは、その接続の現在のパイプラインしきい値を表す。したがって、上記で説明したように、Buff<Threshのときに接続において新しいチャンク要求が発信され得る。
【０１０３】
CMがすべての接続においてパイプライン化を使用すると仮定する。実施形態による動作中、CMは、Buff≧alpha*Threshのときにチャンク要求が受信された場合にDPRを決定するために特定の接続についてのチャンク要求を「パイプライン化されている」(遅延していない/時間どおり)に分類することができ、CMは、Buff<alpha*Threshのときにチャンク要求が受信された場合にDPRを決定するためにチャンク要求を「パイプライン化されていない」(遅延している/時間どおりではない)に分類することができ、ここにおいて、alphaは定数<1(たとえば、alpha=1/2またはalpha=2/3)である。
【０１０４】
パイプライン化が使用されない場合、DPRを決定するためのチャンク要求の遅延分類のための技法は、上記とは異なり得る。実施形態の遅延分類技法では、当該チャンク要求に対する応答の第1の部分が返された時点に部分応答をすでに受信している、発信された不完全なチャンク要求の数Rが計算される。Rが固定定数fminよりも大きい場合に、実施形態のCMは要求を「時間どおり」に分類し、そうでない場合にそれを「遅延している」に分類することができる。
【０１０５】
追加または代替として、パイプライン化が使用されない場合にDPRを決定するためのチャンク要求の遅延分類のための技法は、コンテンツサーバへのアイドル接続を分析することを含む。たとえば、要求が発信された時点に、CM122の論理は、サーバ130へのアイドルTCP接続の数をカウントすることができる。アイドル接続の数が所与のしきい値(たとえば、利用可能な接続の半分)を上回る場合、要求は「遅延している」に分類され得る。そうでない場合、要求は「時間どおり」に分類され得る。
【０１０６】
要求を「パイプライン化されている」または「遅延している」に分類する際に利用される特定の技法に関係なく、DPRは、「パイプライン化されている」/「遅延している」分類を利用して計算され得る。実施形態によるDPRの計算では、チャンク要求が「パイプライン化されている」に分類される場合にチャンク要求の第1のパケットはディスカウントされず、チャンク要求が「パイプライン化されていない」に分類される場合にチャンク要求の第1のパケットはディスカウントされる。上記において使用される「ディスカウントされる」は、その第1のパケットにおいて受信されたバイトがカウントされず、その第1のパケットの受信と以前受信されたパケットの受信との間の時間がカウントされないことを意味し、「ディスカウントされない」は、その第1のパケットにおいて受信されたバイトがカウントされ、その第1のパケットの受信と以前受信されたパケットの受信との間の時間がカウントされることを意味する。
【０１０７】
実施形態のDPRダウンロードレートパラメータが、以下に記載するように計算され得る(以下の例は、「パイプライン化されている」(遅延していない/時間どおり)および「パイプライン化されていない」(遅延している、または時間どおりではない)分類を決定する際に前述のネットワークバッファリング済みデータBuffおよびしきい値パラメータThreshの分析技法を利用するが、他の実施形態は、これらの分類のために上述したような代替技法を利用し得ることが諒解される)。
【０１０８】
【表４】
2017516188.tif 000006
【０１０９】
要求されたがまだ受信されていないデータのBuffオクテットを伴うTCP接続においてチャンク要求が行われ、ThreshはこのTCP接続のオクテットによる現在のパイプラインしきい値である。
(Buff≧alpha*Thresh)の場合、このチャンク要求を「パイプライン化されている」に分類する。
そうではなく(Buff<alpha*Thresh)の場合、このチャンク要求を「パイプライン化されていない」に分類する。
チャンク要求に応答してTCP接続においてチャンクが受信される。
Z=0
Tr=0
パケットPが(Bバイトのサイズで、壁時計時間Twに)受信されるたびに:
Pが、「パイプライン化されていない」に分類されるチャンクの第1のパケットである場合、{S=Tw}
そうでない場合
{Tr=Tr+(Tw-S);
Z=Z+B;
S=Tw
}
DPR=Z/Tr
【０１１０】
実施形態による動作中、DPRは、ダウンロードの時間全体ではない時間ウィンドウにおいて計算または平均化され得る。たとえば、DPRが最後の持続時間ウィンドウW秒において計算される場合、分子Z_Wおよび分母Tr_Wが最後のW秒において計算され得、それによってDPR=Z_W/Tr_Wとなる。Wの半減期にEWMAを使用するなどして、DCRまたはDPRの他の変形形態を計算するために同様の技法が使用され得ることを、当業者は認識しよう。
【０１１１】
本明細書における実施形態によるEWMAを使用するDCRおよびDPRの計算の例として、ディスカウントされるべきではない(チャンクの第1のパケットではない)パケットが受信されると仮定すると、パケットは、Bビットのデータを含み、パケットの到着と(任意のタイプの)以前のパケットの到着との間の時間はdtである。DCRは、次のように更新され得る。
DCR=DCR*exp(-alpha*dt)
DCR=TDCR+B/alpha
【０１１２】
上記のalphaの値は、たとえば、1/alphaに比例する時間期間にわたって平均化が減衰するように選択され得る。alphaの時間単位は、実施形態のdtの時間単位と整合される。たとえば、dtが上記においてミリ秒で表され、ターゲットが1秒に1/eの減衰である場合、実施形態に従って、alpha=1/1000である。別の例として、dtが秒で表され、ターゲットが1秒に1/eの減衰である場合、実施形態に従って、alpha=1である。上記の例示的な実施形態をさらに進めると、場合によっては数秒、たとえば5秒に1/eのターゲット減衰では、本明細書における実施形態によれば、dtがミリ秒で表される場合にalpha=1/5000であり、dtが秒で表される場合にalpha=1/5である。
【０１１３】
EWMAを使用してDCRを計算するための上記の概念は、(十分にパイプライン化されていないチャンクの最初のパケットをディスカウントする)EWMAを使用するDPRの計算に適用され得る。たとえば、EWMAを使用してDCRを計算するための実施形態は、DCRとDPRの両方に同じ値のalphaを使用することができる。ただし、代替実施形態は、DCRおよびDPRに異なる平均化定数(たとえば、DCRにalphaCおよびDPRにalphaP)を使用することができる。
【０１１４】
ダウンロードレートパラメータのDCRおよびDPRを計算するための技法について説明してきたが、以下では、しきい値Thresh(すなわち、それを下回ると、新しいチャンク要求が行われる、接続のバッファレベル)を調整する際のそれらの使用の例を提示する。本明細書における概念に従って、DCRおよびDPRを使用してThreshの値が取得され得る多くの技法があることを諒解されたい。
【０１１５】
しきい値パラメータThreshの値を調整するためのDCRおよびDPRの使用の例示的な一例として、Rを、HTTPチャンク要求がCMによって行われたときと要求に対する第1の応答がCMによって受信されたときとの間の平均応答時間とする。チャンク要求ごとに、RTTを、要求が行われた時間と第1の応答が受信された時間との間の応答時間とする。上記を使用すると、R=(1-a1)*R+a1*RTTとなる。測定済みRTTを、EWMAを使用して時間ウィンドウにおいて、またはいくつかのRTT測定値において平均化するような、固定された以前の時間ウィンドウにおいて、または固定された以前の数のRTT測定値において平均化することなどによって、Rを計算するための多くの方法があることが諒解され得る。
【０１１６】
実施形態に従ってThreshを調整するためにDCRおよびDPRを利用する際に、Threshを、しきい値に割り振られるすべての接続にわたるバイトの総量とする。Threshの値は周期的に、たとえば2*R秒ごとに、次のように更新され得る。
(DCR*a3>DPR)の場合、Thresh=min{Thmax,Thresh(1+a4)}
そうではなく(DCR*a5>DPR≧DCR*a3)の場合、Thresh=min{Thmax,Thresh*(1+a6)}
そうではなく(DCR*a5≦DPR)の場合、Thresh=max{Thmin,Thresh*(1-a7)}
ここにおいて、定数a1、a2、a3、a4、a5、a6およびa7の例示的な値、ならびにしきい値の最低Thminおよび最高Thmaxは次のとおりである。
a1=0.05
a2=2
a3=0.7
a4=0.5
a5=0.95
a6=0.1
a7=0.05
Thmin=32KB
Thmax=1MB
【０１１７】
上記のことから、DCRがDPR以上になることが諒解され得る。DPRがDCRよりも著しく小さい場合、それは、チャンクの第1のパケットと以前のパケットとの間に大きいギャップがある(たとえば、チャンク要求が十分に早く行われていない)ことの表れである。DCRとDPRとが同じまたはほぼ同じ値である場合、実施形態は、しきい値パラメータThreshをそれの現在の値に維持するか、または場合によっては値をゆっくりと上昇させるように動作することができる。
【０１１８】
本明細書における実施形態に従ってしきい値パラメータThreshを調整する際、目標は、チャンク内の任意の他のパケット間の間隔とほぼ同じである、チャンクの第1のパケットと以前のチャンクのパケットとの間のパケット間の間隔(すなわち、パケット間の間隔≒パケット内の間隔)を取得することである。そのような条件が達成されたとき、十分なデータがパイプライン化されており、要求が十分に前もって行われていて、帯域幅効率が最適化されている。したがって、異なる接続がほぼ同じレートでデータをダウンロードし、結果的に、ネットワークにバッファリングされるデータの量ができるだけ小さくなるように、小さいしきい値パラメータを実装することが望まれ得るが、実施形態は、パケット間の間隔の著しいギャップを回避するほど十分に大きいしきい値を実装するように動作する。
【０１１９】
本明細書における概念に従って、上記に関して様々な代替が利用され得ることを諒解されたい。たとえば、DCRおよびDPRの値によっては、Threshの値を調整する決定が行われたときにThreshの値は変化しないことがある(たとえば、DPR/DCRの値が間隔(0.9,0.95)の範囲内にあるときなど、DPRがDCRの値よりも小さいがDCRの値に実質的に等しいとき)。したがって、代替実施形態は、Thresh=Thresh*(DCR/DPR)を設定することによって、Threshの値を調整するように動作することができる。本技法は上記で説明した手法に類似しているが、適用され得る調整の量に関してより柔軟であり、そのため、構成パラメータの数を減らすことができる。代替実施形態の別の例として、Threshの値は、Thresh=Thresh+delta*(1-DPR/DCR)を設定することによって調整され得、delta=32KBである。この代替技法は、付加的増加(additive increase)に基づいており、よりゆっくりと収束し得る。しきい値パラメータThreshを調整するための上記の代替技法のいずれかを実装する実施形態は、しきい値の最低Thminおよび最高Thmaxの制約を適用し続けることができることを諒解されたい。
【０１２０】
要求されたがまだ受信されていないデータをどれほどの量、考慮に入れるべきか判断するために、また各接続における要求されたがまだ受信されていないデータの量の管理のために、様々なダウンロードレートパラメータ(たとえば、DPR、DCRおよびDFR)が使用され得ることが諒解され得る。その上、本明細書において提示するダウンロードレートパラメータ(たとえば、DPRおよびDFR)は、いつおよび/またはどのフラグメントを要求すべきかを判断するためなどのダウンロード統計をUAに提供するために利用され得る。
【０１２１】
しきい値パラメータ値Threshを計算するためにDPRおよびDFRを使用する様々な利点は、上記のことから諒解され得る。たとえば、DPRの値は、パイプライン化値Threshが、ダウンロードレートDCRを達成するために十分なパイプライン化をもたらすかどうかを見分けるものであり、DPRとDCRとの間の差異は、DPRがダウンロードレートの一部として、パイプライ化されているチャンクの最初のパケットを含み、DCRが含まないことである。したがって、Threshが十分に大きい場合、DCRの値とDPRの値との間には小さい差のみがあるべきであり、Threshが十分に大きくはない場合、DPRの値とDCRの値との間にはより大きい差があるべきであり、一般にDCRの値はDPRの値よりも大きい。さらなる利点として、CMは、RMからのシグナリングまたは入力なしにDPRを計算することができる。
【０１２２】
前述のように、上記のダウンロードレートパラメータおよびしきい値パラメータは、複数接続CM構成(たとえば、CM-mHTTP)の接続に関してチャンク要求が行われるべきときを判断する際に利用され得、複数接続CM構成によってCMが、本明細書における概念に従ってコンテンツを1つまたは複数のコンテンツサーバに要求し、当該コンテンツサーバから受信するために複数の接続を使用するように適合される。たとえば、Bが、すべての接続において要求されたが受信されていないバイトの数である場合、新しいチャンク要求が発信され得るかどうかに関する判断が、BとThreshとの比較に基づいて行われ得る(たとえば、B<Threshの場合、新しいチャンク要求が発信され得る)。
【０１２３】
複数接続(たとえば、CM-mHTTP)構成において新しい要求が発信される場合、複数の接続のうちで新しい要求に適した接続が選択され得る。たとえば、実施形態に従って新しい要求のために、最も少ない数の残存バイト(たとえば、要求されたがまだ受信されていないバイト)を有する接続が選択され得る。一方、代替実施形態は、接続ごとに個別に、新しい要求に関する決定を行うことができる。実施形態は、たとえば、負荷分散をもたらすようにチャンク要求のための接続を選択することができ、それによって、特定の接続についてのチャンク要求は、それの1つまたは複数のダウンロードレートパラメータに基づいて重み付けされ得る。1つの接続においてコンテンツサーバによって完全には対応されていないチャンク要求が再送される場合、チャンク要求は、チャンク要求の完了時間があまりにも遅くなる可能性を低下させるために、全体的か部分的かを問わず、1つまたは複数の異なる接続を介して再送され得る。
【０１２４】
新しいチャンク要求を行うかどうかについての決定は、たとえば、以下に従って、N個のアクティブ接続の各々に関して行われ得る。
(B<Thresh/N)の場合、この接続は別のチャンク要求を受け取ることができる。
上式でBは、接続において要求されたが受信されていないバイトの数である。
【０１２５】
使用される接続(たとえば、TCP接続)の数Nは、複数接続構成(たとえば、CM-mHTTP)を提供するCMによって動的に調整され得る。たとえば、CMの場合の接続の最小数および最大数(たとえば最小接続=2および最大数=8)が事前選択され得、それによって、特定の時間に使用される接続の特定の数が、1つまたは複数の動作メトリクスに基づいて動的に調整され得る。接続の追加は、たとえば、パケット誤り率がRTTに関係し、そのため追加の接続がサポートされ得る場合などに、追加のスループットをもたらすために使用され得る。
【０１２６】
一般に、実施形態は、特定の接続に関する要求されたがまだ受信されていないデータを、その特定の接続の輻輳ウィンドウ未満の量で有するように動作する。輻輳ウィンドウが小さい場合、輻輳ウィンドウが大きい場合よりも多くの接続が勧められ得る。残念ながら、クライアントデバイス110などのクライアントデバイスは、一般に輻輳ウィンドウ情報にアクセスできない。したがって、本明細書における実施形態は、CMによって使用される接続の数を動的に調整する際に、上記で説明したように、ダウンロードパラメータおよび/またはしきい値パラメータを利用するように動作することができる。
【０１２７】
実施形態に従って接続の数を動的に調整するにあたり、X_i=min{CWND_i,RWIN_i,SWIN_i}とし、CWND_iは送信側の現在の輻輳ウィンドウサイズであり、RWIN_iは受信側ウィンドウサイズであり、SWIN_iは送信側ウィンドウサイズであり、それぞれ、接続iの場合である。さらにRTTを、たとえば、その接続を介して、チャンク要求が行われたときと、そのチャンク要求への第1の応答が受信されたときとの間の平均時間として測定された、平均RTTとする。DPRは一般に、せいぜいX_i/RTTのiにおける合計であり、同様にDPRは一般に、せいぜいBuffAvg/RTTであり、BuffAvgは、すべての接続の範囲内における要求されたがまだ受信されていないデータの平均量である。実施形態のCMは、RTTおよびDPRの測定値を有しており、しきい値パラメータThreshおよび(上記で説明したように)チャンク要求サイズを制御するように動作可能であり、したがってBuffAvgを制御する。そのようなCMは、X_iのiごとの値を直接知ってはいないことがあるが、CMはそれでも、以下に従って接続の数Nを調整することができる。
DPRがBuffAvg/RTTよりも小さい場合、接続の数Nは増やされ得る。
DPRがBuffAvg/RTTにほぼ等しい場合、接続の数Nは減らされ得る。
【０１２８】
実施形態について、クライアントデバイスのためのコンテンツの転送に複数の接続を利用するCM構成に関して上記で説明してきた。そのような接続は、1つまたは複数のコンテンツサーバ(たとえば、図1Aに示すようなコンテンツサーバ130または図5に示すようなコンテンツサーバ130aおよび130b)に関して行われ得る。したがって、本明細書における概念は、実施形態のトランスポートアクセラレータを使用してコンテンツの転送をもたらす1つまたは複数のコンテンツサーバに対して適用され得ることを諒解されたい。
【０１２９】
実施形態による動作中、CMは、1つまたは複数のインターフェース(たとえば、LTEインターフェース、Wifiインターフェースなど)による1つまたは複数のコンテンツサーバへのすべての接続を確立および管理し、CMが接続のうちの1つにおいて行われる別のチャンク要求に対する準備ができていることをRMに示すことを担う。Threshを、CMによって管理されるインターフェースのオクテット(バイト)によるしきい値とし、DPRの定義が以下のように変更されることを除いて、上記で説明したように、DCRおよびDPRに基づいて、Threshの値は増減調整される。Bを、CMによって管理されるインターフェースのすべての接続にわたる、CMによって要求されたがまだ受信されていないオクテット(バイト)の総数とする。チャンク要求がCMによって行われたとき、B<alpha*Threshの場合には、チャンク要求は、DPR計算において遅延していると見なされ、B≧alpha*Threshの場合には、チャンク要求は、DPR計算において遅延していないと見なされる。NDを、アクティブな各コンテンツサーバへの1つの接続に加えてCMが使用することができる接続のターゲット総数とする。NDの値は、CMによって動的に決定され得るか、または定数値(たとえば、ND=8)に設定され得る。NOは、CMがチャンク要求に現在対処しているコンテンツサーバ(オリジンサーバ)の数とする。その場合、CMが維持する接続の総ターゲット数は、おおよそN=ND+NOであり、これは以下に基づく。
B_Iを、CMによって管理されるインターフェースのオリジンサーバIへのすべての接続にわたる、CMによって要求されたがまだ受信されていないオクテット(バイト)の総数とする。
N_I=ND*(floor(sum_J≦I{B_J}/sum_I{B_I})-floor(sum_J<I{B_J}/sum_I{B_I}))+1を、CMによって管理されるインターフェースを介したオリジンサーバIへの接続のターゲット数とし、したがって、sum_I{N_I}=ND+NOとなる。
B<Threshのとき、CMは、チャンク要求に対する準備ができていることをRMにシグナリングする。
CMがRMからチャンク要求を受信したとき、
チャンク要求がどのオリジンサーバI向けかを判断する
上記で説明したようにN_Iを決定する
A_I=Iへのアクティブ*接続の数を決定する
A_I≧N_Iの場合、要求されたがまだ受信されていないデータの最小量を有するIへのアクティブ接続において、チャンクについてのHTTP要求を行う
A_I<N_Iの場合、Iへの新しい接続を開始し、その接続においてチャンクについてのHTTP要求を行う
チャンク要求を、チャンクについてのHTTP要求が行われたときにB<alpha*Threshの場合に「遅延している」に分類する(DPRを計算するときに、チャンクの第1のパケットおよびチャンクの第1のパケットと以前のパケットとの間の時間をカウントしない)。
【０１３０】
上記の例示的な実施形態による動作中、接続が、要求されたがまだ配信されていないデータを有する場合、接続が、要求されたデータを有しないが、クライアントによる測定によりタイムアウトになっていない場合、または接続が、サーバによってシグナリングされタイムアウトになった場合、接続はアクティブと見なされる。
【０１３１】
前に説明したように、図1Bは、TA120のRM121およびCM122の構成要素の高レベルアーキテクチャを提供する。TA120のそのような実施形態を実装する構成要素のコンテキストを提供するために、図1Cのトランスポートアクセラレータ構成を参照して、TA120の例示的な実施形態に関するさらなる詳細を以下に提示する。
【０１３２】
この例示的な実施形態のRM121は、好ましくは、TA120内に以下の機能を提供するように構成される。RM121はTA要求ディスパッチャ1024から、加速されるべき、データダウンロードについてのUA129からの要求を受け取る。実施形態による動作中、RM121はTA要求ディスパッチャ1024に、加速されるべき別のデータ要求を受け取る準備をシグナリングすることができる。RM121は、データ要求をチャンク要求に分割する。実施形態による動作中、オリジンサーバI向けの各チャンク要求の好ましいサイズCTarget(I)が、CM122によって示される。実施形態のRM121は、チャンク要求サイズを、好ましいサイズの付近で均等に拡散する。RM121は、CM122にチャンク要求を発信する。実施形態による動作中、CM122が新しい要求に対する準備ができていることを示したときに、チャンク要求が発信される。RM121は、異なるUA129からの要求キューの間で公平性を確保しつつ、適切な要求優先度付けを確保するために、スケジューリングアルゴリズムの制約内でチャンク要求をスケジュールすることができる。RM121は、チャンク要求に対する応答を、UA129からの要求に対する応答に組み立てる。次いでRM121は、データが順序どおりに、かつ連続的に上位層に配信されるように、これらの応答をUA129に戻すことができる。
【０１３３】
この例示的な実施形態のCM122は、好ましくは、TA120内に以下の機能を提供するように構成される。CM122は、各オリジンサーバへのHTTPチャンク要求の数を管理する。実施形態のCM122は、複数のオリジンサーバ向けのチャンク要求を発信する。実施形態による動作中、チャンク要求の数は、定義された構成パラメータの間で変わる。たとえば、実施形態のCM122は、DCRおよびDPRを計算し、DCRおよびDPRは、RM121による要求チャンキングのための好ましいチャンクサイズCTarget(I)を計算するために使用される総合値Tを計算するために使用される。実施形態によるそのような動作の目標は、チャンクを、良好なレートを得るほど十分に大きくする一方で、要求されるデータの全体量をできるだけ小さくしておくことである。実施形態のCM122は、スタック処理1025に新しいチャンク要求を発信する準備ができていると判断する。実施形態による動作中、CM122は、RM121にチャンク要求準備を通信する。実施形態によるそのような動作の目標は、スタック処理1025において接続を使用中に保つ一方で、チャンク要求をあまりにも早くキューイングしないようにすることである。CM122は、スタック処理1025に対するチャンクについての要求(たとえば、HTTP要求)を行い、データ応答をRM121に提供することができる。
【０１３４】
この例示的な実施形態のTA120ならびにそれのRM121およびCM122の一般的機能について説明してきたが、例示的な実施形態に従ってTA120のRMおよびCMの構成要素内に実装され得るアルゴリズムを、以下で提示する。
【０１３５】
実施形態による動作中、CM122は、DCRおよび/または平均DCRの測定を維持する。CM122はそれを、たとえば、ダウンロードレートを測定する一方でチャンク応答間のギャップをディスカウントすることによって行う。チャンク間のギャップをディスカウントするために、実施形態のCM122は、各チャンクの受信された第1のデータのバイトをディスカウントし、チャンクの第1のデータの到着と受信された先行チャンクの受信された最後のデータとの間の時間もディスカウントする。DCRディスカウントの一例が図7に示されており、ここにおいて、ディスカウントされた時間およびデータがXで指定されている。通常、図7に示すように、HTTP要求に対して受信された応答データのブロックは、TCPネットワークパケットのペイロードである。ただし、送信エラーおよび他の不完全性に起因して、単一のTCPセグメントはすべて、別個にではなくより大きいブロックで(たとえば、特に、小さいRTTを伴う高速リンクを介してダウンロードしているとき)受信されることがある。したがって、一度に受信される個別のデータブロックは、CM122によって一度に受信されるデータの複数TCPパケットを含む格段に大きいブロックであるので、一度に受信される個別のデータブロックは、TCPパケットの良好な概算をもたらさないことがある。以下で説明するCM122によるDCR計算は、一度にデータの大きいブロックを受信する可能性を考慮し、同様に、以下で説明するCM122によるDPR計算は、一度にデータの大きいブロックを受信する可能性を考慮する。
【０１３６】
DCRは、チャンク要求が恣意的に大きかった場合に所与の条件において達成され得るダウンロードレートの推定値である。チャンク要求が小さい場合、各チャンク要求を送り出してから応答を受信し始めるまでの間のアイドル時間は、全体的なダウンロードレートに悪影響を与えることに留意されたい。したがって、チャンクサイズを拡大すると、実効ダウンロードレートがある程度上昇する。DCR推定値は、この点で訂正され、したがって、選択されたチャンクサイズとは実質的に無関係である。
【０１３７】
DCRを計算するために、データの受信に費やされた時間の累積量および各チャンクの第1の受信されたブロックが処分されたときに受信されたデータの量に対応する連続変数(running variable)TDCRおよびZDCRが、実施形態に従って計算される。チャンクIDを含み、要求が送り出されているがデータがまだ受信されていないチャンクIDを追跡する、ヘルパーデータ構造unseen_chunk_idsも、実施形態に従って利用される。
【０１３８】
実施形態による上記の変数およびデータ構造の初期化は、以下に示すとおりであり、ここにおいて、MSSは、TCPパケットの最大サイズに近くなるように設定されるのが好ましい定数(たとえば、MSS=1500バイト)であり、Cmultは、1未満の定数(たとえば、Cmult=2/3)である。
TDCR=0を設定する
ZDCR=0を設定する
unseen_chunk_ids=empty_set()を設定する
Tlast_data_recv=現在(ms単位)を設定する
【０１３９】
実施形態による動作中、新しいチャンク要求CがRMから来たとき、それのIDが、以下に示すように未発見チャンクID(unseen chunk ID)のセットに加えられる。
unseen_chunk_ids.add(chunk_idC)
【０１４０】
次いで、実施形態に従ってスタック処理1025にチャンク要求Cが発信される。
【０１４１】
チャンク要求Cのデータが到着したとき、実施形態に従ってTDCR、ZDCRおよびunseen_chunk_idsを更新するために以下のステップが実行される。
current_timeを現在時間(ms単位)とする
deltaT=current_time-Tlast_data_recv(任意のチャンクの任意のデータが最後に受信されてからの時間)とする
Tlast_data_recv=current_time
deltaZ=(HTTPヘッダオーバーヘッドを含む)受信されたデータの量とする
unseen_chunk_idsにおけるchunk_idCが以下の場合、
deltaZ>MSSの場合、
TDCR=TDCR+deltaT*Cmult*(deltaZ-MSS)/deltaZ
ZDCR=ZDCR+deltaZ-MSS
unseen_chunk_idsからchunk_idCを除去する
それ以外の場合、
TDCR=TDCR+deltaT
ZDCR=ZDCR+deltaZ
【０１４２】
上記のことから、deltaZ≦MSSが、以前のデータが受信されていないチャンクについて受信されたデータの量である場合、deltaTおよびdeltaZのすべてがディスカウントされる(すなわち、TDCRおよびZDCRに何も加えられない)ことが諒解され得る。一方、deltaZ>MSSが、以前のデータが受信されていないチャンクについて受信されたデータの量である場合、deltaTおよびdeltaZのすべてをディスカウントする代わりに、上記による動作は、deltaTをCmult*(deltaZ-MSS)/deltaZ倍だけディスカウントし、ディスカウントされた値をTDCRに加算し、さらにdeltaZを(deltaZ-MSS)/deltaZ倍だけディスカウントし、ディスカウントされた値をZDCRに加算する。したがって、基本的に、受信されたデータの第1のMSSのみがディスカウントされ、残りはDCRパラメータのZDCRおよびTDCRにカウントされる。Cmult倍だけdeltaTをさらにディスカウントすることで、ディスカウントされたdeltaZ値をディスカウントされたdeltaT値で割った比率が、deltaZをdeltaTで割った比率よりも大きくなり、ひいては、Cmult<1のため、deltaZ>MSSのときに以前のデータが受信されていないチャンクについて受信されたデータの受信に起因して、DCRに対する全体的影響が総じて、DPRに対する影響よりも好ましくなる。
【０１４３】
TDCRおよびZDCRは単調に増加する数である。実施形態のCM122はさらに、DCRの何らかの履歴を追跡するように動作し、したがって、CMは、時間的順序で記憶され得るような、(TDCR,ZDCR)ペアのアレイを維持する。このアレイは、本明細書ではマップTDCRZDCRと呼ばれる。マップTDCRZDCRの更新は、新しいデータが受信されたときはいつでも、実施形態に従って発生する。実際には、履歴が無制限に増えないようにマップTDCRZDCRから古いエントリを除去することが望まれ得、したがって、マップTDCRZDCRは、本明細書の実施形態に従って巡回キューに記憶される。
【０１４４】
例示的な実施形態の説明の残りでは、DCR(dcr_dpr_estimate_win)は、以前の持続時間ウィンドウdcr_dpr_estimate_winにおいて推定されたDCRを示し、dcr_dpr_estimate_winは、構成パラメータである。
【０１４５】
HTTPクライアントの達成されるダウンロードレートは、クライアントがデータをどのくらい積極的に要求するかに依存する。たとえば、大きいファイルがダウンロードされている場合には、要求される必要のあるものが前もって明らかであるので、高いダウンロードレートが達成され得、したがって、TA120は、発信すべきチャンク要求が不足することのないように動作し得る。一方、クライアントが、たとえば、ライブコンテンツを再生しているDASHクライアントである場合、(かなり先のビデオを入手することはできないので)事前にデータの小さい断片を要求することが可能なだけであり得、したがって、非常に高いダウンロードレートを達成するのは不可能なことがある。
【０１４６】
実施形態に従って利用されるダウンロードパイプラインレート(DPR)は、現在の状態(たとえば、チャンクサイズ、並行処理)において達成可能な飽和ダウンロードレートの推定値である。言い換えれば、DPRは、現在のTA120設定で大型ファイルダウンロードの場合に達成されるレートを推定する。
【０１４７】
本明細書における実施形態に従ってDPRを計算するために、チャンク要求がエポックにグループ化される。たとえば、チャンク要求が遅延しているときはいつでも(たとえば、TA120がチャンク要求を送る準備ができてからかなりの時間が経過し、次のチャンク要求が発信されたとき)、新しいエポックが開始され得る。ダウンロードレートを測定する一方で、チャンクについてダウンロードされた第1のデータまたは新しいエポックからのサブ要求の間のギャップをディスカウントすることによって、DPRは計算され得る。
【０１４８】
CM122においてRM121から受信されたチャンク要求は、エポックに分類される。実施形態による動作中、「遅延している」チャンク要求ごとに新しいエポックが開始される。チャンク要求のエポックへの分類の図が図8に示されており、ここにおいて、チャンク要求は通常、以下の条件のうちの1つまたは複数に基づいて「遅い」または「遅延している」と指定される。ダウンロードセッションの第1の発信されたチャンク要求、UA129からRM121への要求が遅いとき、バッファの高/低ウォーターマーク排出を伴うオンデマンドストリーミングの際、および固定タイムラインにおいてフラグメントが入手可能なときのライブストリーミングの際。エポックの第1のデータが到着したとき、それは「遅延している」としてカウントされ、DPR計算からディスカウントされる。DPRディスカウントの一例が図9に示されており、ここにおいて、Xで指定された時間およびデータがディスカウントされる。通常、図9に示すように、HTTP要求に対して受信された応答データのブロックは、TCPネットワークパケットのペイロードである。しかしながら、上記で説明したDCR技法と同様に、以下で説明するDPR技法は、2つ以上のTCPネットワークパケットが一度に受信される可能性を考慮する。
【０１４９】
DPRは、以下で説明するアルゴリズムに従って計算され得る。DPRの計算に関して採用される手法は、上記で説明したDCRの計算と同様であることを諒解されたい。前述のように、MSSを、TCPパケットの最大サイズに近くなるように設定されるのが好ましい定数(たとえば、MSS=1500バイト)とする。上記で使用されたCmultと同様に、Pmultを1未満の定数(たとえば、Pmult=2/3)とする。CmultおよびPmultの値は、実施形態によれば、同じ値または異なる値に設定され得る。実施形態に従って利用されるDPR計算アルゴリズムは、構成パラメータepoch_time_thresholdに依存し、これは、新しいエポックをトリガする要求準備と要求発信との間の最小時間量(ミリ秒単位)である(たとえば、epoch_time_threshold=20が、このパラメータの妥当な設定である)。実施形態のDPRアルゴリズムは、TDPRおよびZDPRの変数を追跡することができ、ここにおいて、タイマーTDPRは、エポック間のギャップをディスカウントして、TAがデータのダウンロードに費やした時間の累積量をカウントし、カウンターZDPRは、エポック開始時に受信された最初のバーストをディスカウントして、受信されたバイトの累積数をカウントする。アルゴリズムは、current_epoch_id(すなわち、新しいチャンク要求に割り当てられる現在のエポック番号)、awaited_epoch_id(すなわち、第1の受信されたデータペイロードがまだディスカウントされていない次のエポックID)、ready_flag(すなわち、CMが新しい要求を受け取る準備ができているかどうかを示すフラグ)、およびlast_ready_time(すなわち、ready_flagが設定された場合に、CMが新しいチャンク要求を受け取る準備ができた時点を示す(ready_flagが設定されない場合、値は使用されない))など、いくつかの他の変数も追跡することができる。
【０１５０】
実施形態によるDPR計算アルゴリズムの開始時に、上記の変数が次のように設定され得る。
TDPR=0を設定する
ZDPR=0を設定する
current_epoch_id=0を設定する
awaited_epoch_id=0を設定する
ready_flag=真を設定する
last_ready_time=現在(ms単位)-epoch_time_threshold-1を設定する
Tlast_data_recv=現在(ms単位)を設定する
【０１５１】
チャンク要求CがRM121から来たとき、実施形態のDPR計算アルゴリズムが次のように演算する。
delta=現在(ms単位)-last_ready_timeを設定する
ready_flag==真およびdelta>epoch_time_thresholdの場合、
current_epoch_id=current_epoch_id+1を設定する
C.epoch_id=current_epoch_id
ready_flag=偽
内部準備更新アルゴリズムを呼び出す
【０１５２】
次いで、スタック処理1025にチャンク要求Cが発信され得る。
【０１５３】
チャンク要求Dのデータが到着したとき、実施形態のDPR計算アルゴリズムが次のように演算する。
current_time=現在(ms単位)とする
deltaT=current_time-Tlast_data_recv(任意のチャンクの任意のデータが最後に受信されてからの時間)とする
Tlast_data_recv=current_time
deltaZ=HTTPヘッダオーバーヘッドを含む、受信されたデータの量とする
D.epoch_id≧awaited_epoch_idの場合、
//データは新しいエポックを開始する、ディスカウント。
deltaZ>MSSの場合、
TDPR=TDPR+deltaT*Pmult*(deltaZ-MSS)/deltaZ
ZDPR=ZDPR+deltaZ-MSS
awaited_epoch_id=D.epoch_id+1を設定する
それ以外の場合、
TDPR=TDPR+deltaT
ZDPR=ZDPR+deltaZ
【０１５４】
実施形態による動作中、deltaZは、HTTPヘッダオーバーヘッドを含み、DCR計算における対応する断片も同様である。(たとえば、チャンクサイズが小さい場合に)ヘッダがアルゴリズムに影響を与えるほど十分に大きいことがあるので、ヘッダオーバーヘッドを含まないことは、重要であることが多い。
【０１５５】
上記の説明では、DCRに使用される変数Tlast_data_recvは、DPRに使用される変数とは別個のものである。同じ時点に両方のアルゴリズムが呼び出されるので、共通の変数が、DPRおよびDCRの呼出しごとに2回更新されないという条件で使用されることもある。
【０１５６】
TDPRおよびZDPRは単調に増加する数である。CMは、それらの値の何らかの履歴を追跡することができ、そのため、実施形態のCM122は、本明細書ではマップTDPRZDPRと呼ばれる巡回キューにこれらの変数を記憶する。その巡回キューのサイズは、DCRの場合とほとんど同じように選択され得る。
【０１５７】
例示的な実施形態の説明の残りでは、DPR(dcr_dpr_estimate_win)は、以前の持続時間ウィンドウdcr_dpr_estimate_winにおいて推定されたDPRを示し、dcr_dpr_estimate_winは一般に、DCRの場合と同じ持続時間となる。
【０１５８】
実施形態のCM122は、アクティブなチャンク要求のサイズ全体の近似値であるT値の測定を維持する。実施形態による動作中、要求がチャンクされ、CM122は、T値に関するそれの現在の測定に基づいて新しいチャンク要求を発信する準備を示す。実施形態によるT値調整アルゴリズムの目標は、Tができるだけ最大ダウンロードレートに近くなるよう十分に大きくなるべきである一方で、上記に従い、Tができるだけ小さくなるべきであることである。T値があまりにも小さい場合、CM122は、現在のHTTPチャンク要求が完了したときと次のHTTPチャンク要求からの第1の応答が始まったときとの間の、平均を上回る「ギャップ」に直面する。これは図10Aに示されている。T値が適性である場合、次のHTTPチャンク要求に対する第1の応答が、現在のHTTPチャンク要求が完了した後、チャンクのすべての他のパケットと同じペースで来る。これは図10Bに示されている。T値があまりにも大きい場合、多くのHTTPチャンク要求が必要以上に早く行われる。これは図10Cに示されている。
【０１５９】
実施形態のCM122は、T値の測定を周期的に調整するために、以前の持続時間ウィンドウdcr_dpr_estimate_winにおいて平均化されたDPRおよびDCRの現在の値を使用する。DCRとDPRとの間の以下の関係が一般に成り立つ。DCRは一般に、少なくともDPRと同じくらいの大きさである、チャンクの第1のデータブロックと以前受信されたデータブロックとの間に平均を上回るギャップがあるときに、DCRは一般に、DPRよりも大きい(これは、リンク上でさらなるデータが要求されるべきであるため、Tは増やされるべきであることを示唆する)、チャンクの第1のデータブロックと以前受信されたデータブロックとの間に平均的なギャップがあるときに、DCRは一般に、DPRにほぼ等しい(これは、要求が早く、かつ十分に大きかったため、Tは十分に大きく、減らされ得ることを示唆する)。DCR=DPRのときの平均的ギャップおよびDCR>DPRのときの平均を上回るギャップの概念が図11に示されている。
【０１６０】
実施形態による動作中、T値調整アルゴリズムが上記の観測を使用して、T値を周期的に調整し、所与のリンク状態に最適なTを維持する。実施形態のCM122によって使用される構成パラメータおよびT値調整アルゴリズムを以下に記載する。
【０１６１】
【表５】
2017516188.tif 000007
【０１６２】
実施形態のT値調整アルゴリズムの開始時に、変数が次のように初期化され得る。
TInit=CInit*sminTotalを設定する(またはそれを、入手可能な場合に履歴ファイルからロードする)
last_tvalue_update_time=現在(ms単位)
Tmin=Cmin*sminTotalを設定する
w=dcr_dpr_estimate_winを設定する
【０１６３】
実施形態による動作中、データが受信されたか、またはアクティブなCMに関して100msのタイムアウトが発生した(すなわち、要求された残存データをCMが有する)ときはいつでも、
DCR(w)が無効であるか、またはDPR(w)が無効である場合、
戻る
current_time=現在(ms単位)
current_time-last_tvalue_update_time>tMinTAdjIntervalの場合、
DCR(w)>DPR(w)*cm_cp_ratio_maxの場合、
ratio=cm_cp_ratio_max
そうではなくDCR(w)<DPR(w)*cm_cp_ratio_minの場合、
ratio=cm_cp_ratio_min
それ以外の場合、
ratio=DCR(w)/DPR(w)
z=1+cm_step_alpha*(cm_target_delta*ratio-1)
T=min(Tmax,max(T*z,Tmin))を設定する
last_tvalue_update_time=current_time
【０１６４】
上記の関数の計算は、浮動小数点演算の実施形態に従って実行される。終了時に、実施形態のCM122は、構成を通じてTAhistory_filenameが設定されている場合に、履歴ファイルにTの最終値を書き込むように動作する。
【０１６５】
実施形態による動作中、RM121はCM122に、オリジンサーバI向けの新しいチャンク要求を発信する準備について問い合わせる。そしてCM122は、準備アルゴリズムを使用して、オリジンサーバIに新しいチャンク要求を発信する準備ができているかどうかを判断することができる。内部的に、実施形態のCM122は、ネットワークスタックに対して異なるオリジンサーバ向けにすでに発信されたチャンク要求を追跡する。CMは、この情報を、ネットワークスタックによってオリジンサーバごとに許された接続の最大数に関する構成情報とともに使用して、スタックへのチャンク要求を調節しスケジュールする。CMは、T値のそれの測定も使用して、必要以上に早く要求を過剰に行うことなく、リンクが最大限使用されるようにする。
【０１６６】
実施形態のCM122によって使用される構成パラメータおよび準備アルゴリズムを以下に記載する。
【０１６７】
【表６】
2017516188.tif 000008
【０１６８】
実施形態のCM122は、CMがRM121によって特定のオリジンサーバ向けの準備について問合せを受けたときに、以下を実行する。
QI=オリジンサーバIへのアクティブなチャンク要求の現在の数
Q=すべてのオリジンサーバへのアクティブなチャンク要求の現在の数=sumI(QI)
RAvg=すべてのオリジンサーバからの受信チャンク要求の現在の数の平均(Ravg計算アルゴリズムを使用する)。
//以下であるQallowを発見する
//   max{Z: T≧Cmin*(Z+1)
//                 および(ready_threshold*Z≦1000*RAvgまたはZ<sminTotal)
//                 およびZ-Q+QI<smaxOrg
//                 およびZ<smaxTotal}
bound1=floor(T/Cmin)-1
bound2=max(floor(1000*Ravg/ready_threshold),sminTotal-1)
bound3=smaxOrg+Q-QI-1
bound4=smaxTotal-1
QallowI=min{bound1,bound2,bound3,bound4}
QallowI≧Qにおいて、CMは、任意のオリジンサーバIに対するチャンク要求の準備ができている。
【０１６９】
実施形態によって実装される準備アルゴリズムを理解するために、deltaIを、特定のオリジンサーバI向けに発信される可能性のある追加のチャンク要求とする。その場合、QallowI(準備に関して計算される)は、deltaIチャンク要求の発信に成功した場合のシステムにおけるアクティブなチャンク要求の総数である(すなわち、QallowI=deltaI+Q)。
【０１７０】
実施形態による動作中、CM122は、準備アルゴリズムにおいて使用するデータを受信するアクティブなチャンク要求(R)の平均数の測定を維持する。実施形態のCM122によってRAvgを計算するための構成パラメータおよびアルゴリズムを以下に記載する。
【０１７１】
【表７】
2017516188.tif 000009
【０１７２】
RAvgを計算するためのアルゴリズムの開始時に、実施形態に従って次のように変数が初期化され得る。
RAvg=0を設定する(またはそれを、入手可能な場合に履歴ファイルからロードする)
last_Ravg_value_update_time=現在(ms単位)
【０１７３】
実施形態による動作中、データが受信されたか、またはアクティブなCM122に関して100ミリ秒のタイムアウトが発生した(すなわち、いくつかの要求された残存データをCM122が有する)ときはいつでも、
current_time=現在(ms単位)
R=すべてのオリジンサーバにわたるデータを受信するアクティブなチャンク要求の現在の数
current_time-last_Ravg_value_update_time>tMinRAvgAdjIntervalの場合、
R>RAvgの場合、
RAvg=R
それ以外の場合、
RAvg=((1-receive_req_avg_const)*RAvg)+(receive_req_avg_const*R)
last_Ravg_value_update_time=current_time
【０１７４】
終了時に、実施形態のCM122は、構成を通じてTAhistory_filenameが設定されている場合に、履歴ファイルにRAvgを書き込むことができる。
【０１７５】
実施形態に従って実装される内部準備アルゴリズムの目的は、CM122内でready_flagおよびlast_ready_timeを更新することである。これらはCM122によって、DPR計算のために前述のエポックに着信要求を分類するために使用され得る。
【０１７６】
実施形態による動作中、内部準備アルゴリズムはCM122によって、RM121からチャンク要求が受信された直後、およびすでに発信されたチャンク要求のいずれかに関してスタックからデータが受信された後、実行される。以下では、本明細書における実施形態に従って利用される内部準備更新アルゴリズムを提示する。
ready_flag==真の場合、
戻る//準備がすでに完了している場合にはスキップする
Aを、アクティブなオリジンサーバ(少なくとも1つのアクティブなチャンク要求を有するサーバ)のリストとする
Aにおけるiに関して:
オリジンサーバi向けの準備を判断する
CMがオリジンサーバi向けに準備できている場合、
ready_flag=真
last_ready_time=現在(ms単位)
【０１７７】
特定のオリジン向けの要求準備について問い合わせた後、かつ要求をチャンクする前、実施形態のRM121はCM122に、特定のオリジンサーバ向けのチャンク要求の好ましいチャンクサイズについて問い合わせる。実施形態による動作中、CM122は、好ましいチャンクサイズ計算アルゴリズムを使用して、オリジンサーバ向け要求の好ましいチャンクサイズをRM121に通信する。以下のパラメータは、好ましいチャンクサイズを計算する際に利用され得る。
【０１７８】
【表８】
2017516188.tif 000010
【０１７９】
オリジンサーバI向けの好ましいチャンクサイズについて問合せを受けたとき、実施形態のCM122は、次のように演算する。
QallowIを計算する
T=現在のT値
CTarget(I)=max(T/(QallowI+1),Cmin)
【０１８０】
実施形態による動作中、RM121は、CM122からの好ましいチャンクサイズ(CTarget(I))値を使用して、CM122に発信するオリジンサーバI向けのUA129からの次のスケジュールされる要求をチャンクする。したがって、RMは、チャンキングアルゴリズムを使用して、要求のチャンキングを行うことができる。実施形態のRM121によって使用されるチャンキングアルゴリズムの目標は、以下を含む。チャンクサイズを、RM121がCM122から取り出すCTarget(I)値の近くにすること、要求完了時間の同期化を回避するために異なるチャンク要求のチャンクサイズを拡散すること(たとえば、チャンクサイズは、好ましいチャンクサイズ(CTarget(I))に比例して拡散され得る)、および/または非常に小さいチャンク要求を回避すること。実施形態のRM121によって使用されるチャンキングのための構成パラメータを以下に記載する。
【０１８１】
【表９】
2017516188.tif 000011
【０１８２】
実施形態による動作中、RM121はまた、開始時に0に初期化された持続的(たとえば、TA120の実行中)カウンターctrを使用する。カウンターctrは、最も便利に32ビットの符号なし整数として実装され得る。
N=チャンクされるべき要求における残りの要求されていないバイト
または無制限バイト範囲要求の場合、なし
p=ceil(CTarget(I)*(1+chunk_spread*(reverse_bits(ctr)/2**32)))を計算する
//注:reverse_bits()は、ワード中のビットを反転させる。
//下記参照。
if Nがなしではない
if chunk_hysteresis*p<N、
ChunkSize=pを設定する
else
ChunkSize=Nを設定する
else
ChunkSize=pを設定する
ctr=(ctr+1)%(2**32)
ChunkSizeを戻す
【０１８３】
reverse_bits()関数は、32ビットの符号なしint中のビットを反転させ、それによって、最上位ビットが最下位ビットとなり、2番目の最上位ビットが2番目の最下位ビットとなり、以下同様である。関数は、0から2^32-1の範囲内で整数を拡散する性質を有し、ランダム拡散の場合よりも大きい距離により、短いシーケンスを拡散する。参照のために、関数は次のように実装され得る。
uint32_t reverse_bits(uint32_t x)
{
#define flip(x,mask,shift)  ＼
((((x)&mask)<< shift)^(((x)&〜mask)>>shift))
x=flip(x,0x55555555,1);
x=flip(x,0x33333333,2);
x=flip(x,0x0f0f0f0f,4);
x=flip(x,0x00ff00ff,8);
x=flip(x,0x0000ffff,16);
return x;
#undef flip
}
【０１８４】
実施形態による動作中、ブラウザを含む、ユーザエージェントから受信されたHTTP要求がRM121において分割され、チャンク要求がCM122に送られる。実施形態のCM122は、いつ新しいチャンク要求が送られ得るか、またどのオリジンサーバが新しいチャンク要求を処理することができるかを判断する。実施形態のRM121は、以下の条件に基づいてCM122に発信するチャンク要求をスケジュールする機会を得る。RM121がUA129から新しいデータダウンロード要求を受信したときはいつでも、すでに発信されたチャンク要求に関してデータが受信されたときはいつでも、および、CM122が同じまたは異なるオリジンサーバ向けにさらなる要求を発信する準備ができている可能性がある中、RM121がCM122にチャンク要求を無事発信したときはいつでも。実施形態による動作中、RM121は、UA129からの次の要求を選択して、チャンク要求を分割し、CM122にハンドオーバし、それによってRMは、要求スケジューリングアルゴリズムを使用してこれを達成することができる。実施形態の要求スケジューリングアルゴリズムの目標は、以下のとおりである。TA120が存在しないときにUA129からの接続が不足しない場合に、TA120が存在するときにUA129からの接続が不足しないようにする、(UA129とプロキシサーバとの間の)接続にわたる、またはオリジンサーバにわたる公平性を達成する、および作業維持のため(たとえば、少なくとも1つのフローがスケジューリング機会に処理され得る場合、少なくとも1つの要求が対応される)。実施形態のRM121によって異なるキューにわたって単純なラウンドロビンスケジューリングが使用され得る。実施形態の要求スケジューラは、対応される最後のキューを追跡し、別のチャンク要求をスケジュールする機会を与えられたとき、次のキューからヘッド要求を取り出し、その要求に対するオリジンサーバ向けの準備についてCM122をテストする。所望される場合、RM121によって採用されるより精巧なスケジューリングアルゴリズムが使用されることもある。
【０１８５】
開始時に、要求スケジューラによって使用されるパラメータが、次のように初期化され得る。
current_queue_id=0を設定する。//対応される最後のキューを追跡する
【０１８６】
CM122により要求をスケジュールする機会を与えられたとき、実施形態のRM121は、偽が戻されるまで、ループ中で以下を実行する。
//***ステップ1:アクティブなキューの順序付きリストを取得する。
//以下を有するキューのキューidのリストを作成する
//スケジュールされる必要のある残存要求。
ordered_queues=sort(get_active_queues())
if len(ordered_queues)==0
偽を戻す//スケジュールすべき要求なし
//***ステップ2:キューリストを処理順にする
//       (すなわち、要求のために、その順序でキューをチェックする)
//以下になるように、ordered_queuesへの最小インデックスiを発見する
//ordered_queues[i]≧current_queue_id、または設定する
//そのようなiがない場合、i:=len(ordered_queues)
for i =0,...、len(ordered_queues):
if ordered_queues[i]≧current_queue_id、
中断する
//ordered_queuesを処理順に配列する
ordered_queues=ordered_queues[i:]+ordered_queues[:i]
//***ステップ3:発信すべき次の要求を発見する
//発信すべき要求のために、処理順にキューをチェックする
for ordered_queuesにおけるq
if CMがキューqのヘッドにおけるチャンク要求rを発信する準備ができている、
CMにチャンク要求rを発信する
current_queue_id=q+1
真を戻す
偽を戻す
【０１８７】
実施形態のRM121内の並べ替え層194の目的は、上の構成要素への連続的な順序どおりのデータの配信を行うことである。UA129からの着信データダウンロード要求は、オリジンサーバに複数の接続を通じて送られる複数のチャンク要求にチャンクされるので、RM121に返信されるデータは順序どおりではないことがある。実施形態による動作中、並べ替え層194は、RM121内で内部的に受信されたデータをバッファリングし、上の層/構成要素に連続的データのみを配信する。実施形態の並べ替え層194は、データが順序どおりに配信され得るように各キューをバッファリングする。ただし、本明細書における実施形態によれば、1つのキューにおける欠落データが別のキューをブロックすべきではない。並べ替え層194のための論理が図12に示されている。
【０１８８】
上記の例示的な実施形態によるRM121とCM122との間のアルゴリズム実行のための高レベル呼出しフローが、図13A、図13Bおよび図13Cに示されている。特に、図13Aは、本明細書における実施形態による、開始および終了の呼出しフローを示している。図13Bは、本明細書における実施形態による、トランスポートアクセラレータディスパッチャから加速された要求が受信されたときの呼出しフローを示している。図13Cは、本明細書における実施形態による、チャンクデータがスタックから受信されたとき、またはタイムアウトのときの呼出しフローを示している。
【０１８９】
図14A、図14Bおよび図14Cは、smin=4およびsmaxOrg=20を使用する本明細書における実施形態のTA120を使用して単一のオリジンサーバに接続する単一のUAに関して生成されたグラフを示している。図14Aに示すエミュレーションでは、利用可能帯域幅は6656キロビット毎秒であり、パケット損失率は0.1%であり、往復時間は50ミリ秒である。このエミュレーションでは、Tの平均値は約80キロバイトであり、使用されるTCP接続の平均数は約4であり、達成される提示レートは約5000キロビットであり、これは利用可能帯域幅未満で可能な最高提示レートである。図14Bに示すエミュレーションでは、利用可能帯域幅は6656キロビット毎秒であり、パケット損失率は1%であり、往復時間は50ミリ秒である。このエミュレーションでは、Tの平均値は約120キロバイトであり、使用されるTCP接続の平均数は約7または8であり、達成される提示レートは約5000キロビットであり、これは利用可能帯域幅未満で可能な最高提示レートである。したがって、図14Bのエミュレーションを図14Aのエミュレーションと比較すると、同じ利用可能帯域幅および往復時間を有するが、図14Bでは図14Aと比較して損失率が高く、使用される接続の平均数がより高く、Tの値がより高いが、依然として妥当であり、依然として最高提示レートが達成されている。図14Cに示すエミュレーションでは、利用可能帯域幅は12288キロビット毎秒であり、パケット損失率は1%であり、往復時間は200ミリ秒である。このエミュレーションでは、Tの平均値は約1メガバイトであり、使用されるTCP接続の平均数は約20であり、達成される提示レートは約9500キロビットであり、これは利用可能帯域幅未満で可能な最高提示レートである。したがって、図14Cのエミュレーションを図14Bのエミュレーションと比較すると、利用可能帯域幅は2倍、往復時間は4倍であり、損失率は同じであり、使用される接続の平均数はより高く、Tの値は、増加した往復時間と利用可能帯域幅の積に比例してより高く、依然として最高提示レートは達成されている。
【０１９０】
トランスポートアクセラレータの動作が、特定のインターフェースに関する使用のために変更または適合され得ることを諒解されたい。たとえば、本明細書における概念に従って実装されるCMの実施形態は、ネットワークインターフェースが3G/4G/LTEであるときに、ボトルネックが通常、ネットワークを使用する他のユーザ機器(UE)にとって有害とはならないPFAIR(Proportionate FAIRness)キューイングポリシーが適用される無線アクセスネットワークであることを知って、チャンク要求に関して非常に積極的になるように動作することができる。相応して、実施形態は、ネットワークインターフェースが、ネットワークを使用する他のさほど積極的ではないUEにとって有害となる可能性があるFIFOキューイングポリシーを使用する共有WiFiパブリックアクセスネットワークを介するときに、さほど積極的ではないCMを実装する。データが、コンテンツサーバへのネットワーク接続を通じて取得されるのではなく、ローカルストレージからアクセスされる場合(たとえば、以前のブロードキャストからキューイングされている場合)、トランスポートアクセラレータの実施形態は、ネットワーク接続に関して使用されるものとは非常に異なる設計であるローカルキャッシュからデータにアクセスするように適合されたCMを実装することができる。
【０１９１】
図1Aに示す実施形態のRM121は、CM122の単一のインスタンスとインターフェースされるものとして示されているが、いくつかの実施形態のRM121は、図6の実施形態に示すような2つ以上のCMとインターフェースすることができる。そのようなCMは、たとえば、異なるネットワークインターフェースをサポートすることができる(たとえば、CM122aは、オンデバイスキャッシュ622へのローカルインターフェースを有することができ、CM122bは、WiFiネットワークインターフェースへのHTTP/TCP接続を使用することができ、CM122cは、4G/LTEネットワークインターフェースへのHTTP/TCP接続を使用することができる、などである)。追加または代替として、そのようなCMは、本質的に類似するネットワークインターフェース(たとえば、異なるWiFiリンク)を提供することができる。したがって、RM121は、複数のCMと同時にインターフェースすることができ、それによりRM121は、たとえば、複数のCMに同じフラグメントまたは一連のフラグメントのデータチャンクを要求するように動作可能であり得る(たとえば、データ要求の一部は、4G/LTEインターフェースへのHTTP/TCP接続を使用する第1のCM-xTCPに送られ、データ要求の一部は、WiFiインターフェースへのHTTP/TCP接続を使用する第2のCM-mHTTPに送られる)。RMは、CMの各々から受信されたデータを集めて、UAによって要求されたフラグメントを再構成し、UAに応答を返信することができる。
【０１９２】
追加または代替として、図1Aに示す実施形態のCM122は、RM121の単一のインスタンスとインターフェースされるものとして示されているが、いくつかの実施形態のCM122は、2つ以上のそのようなRMと同時にインターフェースすることができる。たとえば、複数のRMは、各々がクライアントデバイス110の異なるUAのためのものであり、同じ1つまたは複数のCMを使用するように適合され得、それによってCMは、RMの同時動作から生じる接続の競合を解決するように適合され得る。代替的に、単一のRMは、複数のUAに関して使用するように適合され得、それによってRMは、UAの同時動作から生じる接続の競合を解決するように適合される。
【０１９３】
選択された態様が詳細に示され説明されてきたが、以下の特許請求の範囲によって定義されるような本発明の趣旨および範囲から逸脱することなく、本明細書において様々な置換および改変を実施できることが理解されよう。
【符号の説明】
【０１９４】
100  システム
110  クライアントデバイス、ユーザデバイス
111  プロセッサ
112  メモリ
113  入力/出力(I/O)要素
114  バス
120  トランスポートアクセラレータ(TA)
121  要求マネージャ(RM)
122  接続マネージャ(CM)
122a  CM
122b  CM
122c  CM
123  インターフェース
124  インターフェース
129  UA
129a  UA
129b  UA
129c  UA
129d  UA
130  サーバ
130a  コンテンツサーバ
130b  コンテンツサーバ
140  データベース
141  コンテンツファイル
142  コンテンツファイル
143  コンテンツファイル
150  ネットワーク
151  接続、リンク
152  接続、リンク、ネットワーク接続
191a  要求キュー(RQ)
191b  要求キュー(RQ)
191c  要求キュー(RQ)
192  要求スケジューラ
193  要求チャンキングアルゴリズム
194  並べ替え層
195  Tvalueマネージャ
196  準備計算機
197  要求受信機/モニタ
200  フロー
622  オンデバイスキャッシュ
1021  プロキシサーバ
1022  ブラウザアダプタ
1023  スタック処理
1024  TA要求ディスパッチャ
1025  スタック処理
1026  ソケット層
【図１Ａ】
2017516188.tif 000012
【図１Ｂ】
2017516188.tif 000013
【図１Ｃ】
2017516188.tif 000014
【図２】
2017516188.tif 000015
【図３】
2017516188.tif 000016
【図４】
2017516188.tif 000017
【図５】
2017516188.tif 000018
【図６】
2017516188.tif 000019
【図７】
2017516188.tif 000020
【図８】
2017516188.tif 000021
【図９】
2017516188.tif 000022
【図１０Ａ】
2017516188.tif 000023
【図１０Ｂ】
2017516188.tif 000024
【図１０Ｃ】
2017516188.tif 000025
【図１１】
2017516188.tif 000026
【図１２】
2017516188.tif 000027
【図１３Ａ】
2017516188.tif 000028
【図１３Ｂ】
2017516188.tif 000029
【図１３Ｃ】
2017516188.tif 000030
【図１４Ａ】
2017516188.tif 000031
【図１４Ｂ】
2017516188.tif 000032
【図１４Ｃ】
2017516188.tif 000033
【手続補正書】
【提出日】平成28年9月21日(2016.9.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するための方法であって、
前記TAの接続マネージャ(CM)によって、前記コンテンツサーバから前記CMへの前記コンテンツの配信に使用される前記コンテンツのチャンクに関するターゲットコンテンツチャンクサイズ情報を決定するステップと、
前記CMから前記TAの要求マネージャ(RM)に、前記決定されたターゲットコンテンツチャンクサイズ情報をシグナリングするステップであって、前記シグナリングは、前記CMが前記RMからの別のチャンク要求に対する準備ができていることをシグナリングすることに関連する、ステップと、
前記RMによって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割するステップであって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定され、前記チャンク要求の1つまたは複数のコンテンツチャンクの前記サイズが、前記RMによって、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定される、ステップと、
前記RMによって前記CMに、前記コンテンツのチャンクを要求するための前記複数のチャンク要求の前記チャンク要求のうちの1つのチャンク要求を提供するステップであって、前記1つのチャンク要求が、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定された前記サイズを有するコンテンツチャンクについてのチャンク要求を含む、ステップと、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求するステップであって、コンテンツの前記チャンクが前記1つまたは複数のコンテンツチャンクを含む、ステップと
を含む方法。
【請求項２】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、前記コンテンツサーバによって提供されたチャンク要求に対する応答に基づいて前記サイズを決定する、請求項1に記載の方法。
【請求項３】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、その接続を介して前記コンテンツサーバが即時に送ることができるデータの量に基づいて前記サイズを決定する、請求項1に記載の方法。
【請求項４】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、前記TAによって前記コンテンツサーバに提供されたアップストリームデータのオーバーヘッドに基づいて決定される、請求項1に記載の方法。
【請求項５】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、前記チャンク要求の前記コンテンツチャンクの最小サイズを決定するステップであって、前記最小サイズ未満のサイズのフラグメントが、1つのチャンク要求を使用して要求される、ステップを含む、請求項1に記載の方法。
【請求項６】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、
前記チャンク要求の前記コンテンツチャンクの最大サイズを決定するステップであって、フラグメントが、前記最大サイズ以下のサイズを有するチャンク要求に区分される、ステップ
を含む、請求項1に記載の方法。
【請求項７】
前記フラグメント要求の対応するフラグメントのサイズを取得する前に、少なくとも第1のチャンク要求を決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項８】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、前記フラグメント要求のフラグメントのサイズとは無関係に決定される、請求項1に記載の方法。
【請求項９】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、前記コンテンツサーバがハイパーテキスト転送プロトコル(HTTP)チャンク要求を受信するとすぐに、前記コンテンツサーバが前記CMと前記コンテンツサーバとの間の伝送制御プロトコル(TCP)接続を介してHTTP応答全体を即時に送るのを容易にするサイズとして決定される、請求項1に記載の方法。
【請求項１０】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、前記CMによって行われたチャンクについての前記要求の順序による前記TAにおけるコンテンツのチャンクの到着を容易にするように適合されたサイズとして決定される、請求項1に記載の方法。
【請求項１１】
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整するステップ
をさらに含む、請求項1に記載の方法。
【請求項１２】
複数の接続を介して前記コンテンツサーバに前記複数のチャンクの前記チャンクを前記要求するステップは、前記複数の接続を介して並行して前記複数のチャンクを要求するステップを含む、請求項1に記載の方法。
【請求項１３】
前記複数のチャンクの連続するチャンク要求のサイズは、チャンク要求が同時に完了する可能性を低下させるために異なるように選択される、請求項12に記載の方法。
【請求項１４】
前記複数の接続のうちの第1の接続において前記コンテンツサーバによって完全には対応されていないチャンク要求は、少なくとも部分的に、前記複数の接続のうちの1つまたは複数の異なる接続を使用して再送される、請求項12に記載の方法。
【請求項１５】
前記CMによって、前記複数の接続の各接続の受信ウィンドウサイズを、前記接続の各々にほぼ同じダウンロードレートをもたらすように制御するステップ
をさらに含む、請求項12に記載の方法。
【請求項１６】
前記CMによって、前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算するステップ
をさらに含む、請求項1に記載の方法。
【請求項１７】
要求されたがまだ受信されていないデータの前記最大量を前記計算するステップは、
要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するステップ
を含む、請求項16に記載の方法。
【請求項１８】
前記ターゲットコンテンツチャンクサイズを前記決定するステップは、
要求するチャンクのサイズを決定する際に使用されるターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するステップ
を含む、請求項1に記載の方法。
【請求項１９】
前記複数のチャンクの前記チャンクを前記要求するステップは、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を行うことを、その接続における以前の要求がすべて完了するまで控えるステップ
を含む、請求項1に記載の方法。
【請求項２０】
前記複数のチャンクの前記チャンクを前記要求するステップは、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を、その接続における1つまたは複数の以前の要求がまだ完了していないときに行うステップ
を含む、請求項1に記載の方法。
【請求項２１】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するように構成された装置であって、
前記TAの接続マネージャ(CM)によって、前記コンテンツサーバから前記CMへの前記コンテンツの配信に使用される前記コンテンツのチャンクに関するターゲットコンテンツチャンクサイズ情報を決定するための手段と、
前記CMから前記TAの要求マネージャ(RM)に、前記決定されたターゲットコンテンツチャンクサイズ情報をシグナリングするための手段であって、前記シグナリングは、前記CMが前記RMからの別のチャンク要求に対する準備ができていることをシグナリングすることに関連する、手段と、
前記RMによって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割するための手段であって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定され、前記チャンク要求の前記1つまたは複数のコンテンツチャンクの前記サイズが、前記RMによって、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定される、手段と、
前記RMによって前記CMに、前記コンテンツのチャンクを要求するための前記複数のチャンク要求の前記チャンク要求のうちの1つのチャンク要求を提供するための手段であって、前記1つのチャンク要求が、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定された前記サイズを有するコンテンツチャンクについてのチャンク要求を含む、手段と、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求するための手段であって、コンテンツの前記チャンクが前記1つまたは複数のコンテンツチャンクを含む、手段と
を含む装置。
【請求項２２】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、前記コンテンツサーバによって提供されたチャンク要求に対する応答に基づいて前記サイズを決定する、請求項21に記載の装置。
【請求項２３】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、その接続を介して前記コンテンツサーバが即時に送ることができるデータの量に基づいて前記サイズを決定する、請求項21に記載の装置。
【請求項２４】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、前記TAによって前記コンテンツサーバに提供されたアップストリームデータのオーバーヘッドに基づいて決定される、請求項21に記載の装置。
【請求項２５】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、
前記チャンク要求の前記コンテンツチャンクの最小サイズを決定するための手段であって、前記最小サイズ未満のサイズのフラグメントが、1つのチャンク要求を使用して要求される、手段
を含む、請求項21に記載の装置。
【請求項２６】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、
前記チャンク要求の前記コンテンツチャンクの最大サイズを決定するための手段であって、フラグメントが、前記最大サイズ以下のサイズを有するチャンク要求に区分される、手段
を含む、請求項21に記載の装置。
【請求項２７】
前記フラグメント要求の対応するフラグメントのサイズを取得する前に、少なくとも第1のチャンク要求を決定するための手段
をさらに含む、請求項21に記載の装置。
【請求項２８】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、前記フラグメント要求のフラグメントのサイズとは無関係に決定される、請求項21に記載の装置。
【請求項２９】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、前記コンテンツサーバがハイパーテキスト転送プロトコル(HTTP)チャンク要求を受信するとすぐに、前記コンテンツサーバが前記CMと前記コンテンツサーバとの間の伝送制御プロトコル(TCP)接続を介してHTTP応答全体を即時に送るのを容易にするサイズとして決定される、請求項21に記載の装置。
【請求項３０】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、前記CMによって行われたチャンクについての前記要求の順序による前記TAにおけるコンテンツのチャンクの到着を容易にするように適合されたサイズとして決定される、請求項21に記載の装置。
【請求項３１】
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整するための手段
をさらに含む、請求項21に記載の装置。
【請求項３２】
複数の接続を介して前記コンテンツサーバに前記複数のチャンクの前記チャンクを要求するための前記手段は、前記複数の接続を介して並行して前記複数のチャンクを要求するための手段を含む、請求項21に記載の装置。
【請求項３３】
前記複数のチャンクの連続するチャンク要求のサイズは、チャンク要求が同時に完了する可能性を低下させるために異なるように選択される、請求項32に記載の装置。
【請求項３４】
前記複数の接続のうちの第1の接続において前記コンテンツサーバによって完全には対応されていないチャンク要求は、少なくとも部分的に、前記複数の接続のうちの1つまたは複数の異なる接続を使用して再送される、請求項32に記載の装置。
【請求項３５】
前記CMによって、前記複数の接続の各接続の受信ウィンドウサイズを、前記接続の各々にほぼ同じダウンロードレートをもたらすように制御するための手段
をさらに含む、請求項32に記載の装置。
【請求項３６】
前記CMによって、前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算するための手段
をさらに含む、請求項21に記載の装置。
【請求項３７】
要求されたがまだ受信されていないデータの前記最大量を計算するための前記手段は、
要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するための手段
を含む、請求項36に記載の装置。
【請求項３８】
前記ターゲットコンテンツチャンクサイズを決定するための前記手段は、
要求するチャンクのサイズを決定する際に使用されるターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するための手段
を含む、請求項21に記載の装置。
【請求項３９】
前記複数のチャンクの前記チャンクを要求するための前記手段は、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を行うことを、その接続における以前の要求がすべて完了するまで控えるための手段
を含む、請求項21に記載の装置。
【請求項４０】
前記複数のチャンクの前記チャンクを要求するための前記手段は、
前記複数の接続のうちの特定の接続においてコンテンツのチャンクについての次の要求を、その接続における1つまたは複数の以前の要求がまだ完了していないときに行うための手段
を含む、請求項21に記載の装置。
【請求項４１】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するためのコンピュータプログラムであって、
前記TAの接続マネージャ(CM)によって、前記コンテンツサーバから前記CMへの前記コンテンツの配信に使用される前記コンテンツのチャンクに関するターゲットコンテンツチャンクサイズ情報を決定するためのプログラムコードと、
前記CMから前記TAの要求マネージャ(RM)に、前記決定されたターゲットコンテンツチャンクサイズをシグナリングするためのプログラムコードであって、前記シグナリングは、前記CMが前記RMからの別のチャンク要求に対する準備ができていることをシグナリングすることに関連する、プログラムコードと、
前記RMによって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割するためのプログラムコードであって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定され、前記チャンク要求の1つまたは複数のコンテンツチャンクの前記サイズが、前記RMによって、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定される、プログラムコードと、
前記RMによって前記CMに、前記コンテンツのチャンクを要求するための前記複数のチャンク要求の前記チャンク要求のうちの1つのチャンク要求を提供するためのプログラムコードであって、前記1つのチャンク要求が、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定された前記サイズを有するコンテンツチャンクについてのチャンク要求を含む、プログラムコードと、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求するためのプログラムコードであって、コンテンツの前記チャンクが前記1つまたは複数のコンテンツチャンクを含む、プログラムコードと
を含む、コンピュータプログラム。
【請求項４２】
前記ターゲットコンテンツチャンクサイズを決定するための前記プログラムコードは、前記コンテンツサーバによって提供されたチャンク要求に対する応答に基づいて前記サイズを決定する、請求項41に記載のコンピュータプログラム。
【請求項４３】
前記ターゲットコンテンツチャンクサイズを決定するための前記プログラムコードは、その接続を介して前記コンテンツサーバが即時に送ることができるデータの量に基づいて前記サイズを決定する、請求項41に記載のコンピュータプログラム。
【請求項４４】
前記フラグメント要求の対応するフラグメントのサイズを取得する前に、少なくとも第1のチャンク要求を決定するためのプログラムコード
をさらに含む、請求項41に記載のコンピュータプログラム。
【請求項４５】
前記ターゲットコンテンツチャンクサイズを決定するための前記プログラムコードは、前記フラグメント要求のフラグメントのサイズとは無関係に決定される、請求項41に記載のコンピュータプログラム。
【請求項４６】
前記ターゲットコンテンツチャンクサイズを決定するための前記プログラムコードは、前記コンテンツサーバがハイパーテキスト転送プロトコル(HTTP)チャンク要求を受信するとすぐに、前記コンテンツサーバが前記CMと前記コンテンツサーバとの間の伝送制御プロトコル(TCP)接続を介してHTTP応答全体を即時に送るのを容易にするサイズとして決定される、請求項41に記載のコンピュータプログラム。
【請求項４７】
前記ターゲットコンテンツチャンクサイズを決定するための前記プログラムコードは、前記CMによって行われたチャンクについての前記要求の順序による前記TAにおけるコンテンツのチャンクの到着を容易にするように適合されたサイズとして決定される、請求項41に記載のコンピュータプログラム。
【請求項４８】
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整するためのプログラムコード
をさらに含む、請求項41に記載のコンピュータプログラム。
【請求項４９】
複数の接続を介して前記コンテンツサーバに前記複数のチャンクの前記チャンクを要求するための前記プログラムコードは、前記複数の接続を介して並行して前記複数のチャンクを要求するためのプログラムコードを含み、前記複数のチャンクの連続するチャンク要求のサイズは、チャンク要求が同時に完了する可能性を低下させるために異なるように選択される、請求項41に記載のコンピュータプログラム。
【請求項５０】
前記CMによって、前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算するためのプログラムコード
をさらに含む、請求項41に記載のコンピュータプログラム。
【請求項５１】
要求されたがまだ受信されていないデータの前記最大量を計算するための前記プログラムコードは、
要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用するためのプログラムコード
を含む、請求項50に記載のコンピュータプログラム。
【請求項５２】
前記ターゲットコンテンツチャンクサイズを決定するための前記プログラムコードは、ターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを使用する、請求項41に記載のコンピュータプログラム。
【請求項５３】
クライアントデバイスのトランスポートアクセラレータ(TA)によって、コンテンツサーバから前記クライアントデバイスのユーザエージェント(UA)へのコンテンツの配信を加速するように構成された装置であって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに結合されたメモリと
を含み、
前記少なくとも1つのプロセッサは、
前記TAの接続マネージャ(CM)によって、前記コンテンツサーバから前記CMへの前記コンテンツの配信に使用される前記コンテンツのチャンクに関するターゲットコンテンツチャンクサイズ情報を決定することと、
前記CMから前記TAの要求マネージャ(RM)に、前記決定されたターゲットコンテンツチャンクサイズ情報をシグナリングすることであって、前記シグナリングは、前記CMが前記RMからの別のチャンク要求に対する準備ができていることをシグナリングすることに関連する、シグナリングすることと、
前記RMによって、それぞれ前記UAによって提供されたフラグメント要求を、前記コンテンツのチャンクを要求するための複数のチャンク要求に再分割することであって、前記チャンク要求のコンテンツチャンクのサイズが、前記コンテンツサーバのネットワーク輻輳回避動作に関係なくネットワーク転送レートを上昇させるように決定され、前記チャンク要求の前記コンテンツチャンクのうちの1つまたは複数の前記サイズが、前記RMによって、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定される、再分割することと、
前記RMによって前記CMに、前記コンテンツのチャンクを要求するための前記複数のチャンク要求の前記チャンク要求のうちの1つのチャンク要求を提供することであって、前記1つのチャンク要求が、前記ターゲットコンテンツチャンクサイズ情報に基づいて決定された前記サイズを有するコンテンツチャンクについてのチャンク要求を含む、提供することと、
前記CMによって、前記CMと前記コンテンツサーバとの間で確立された複数の接続を介して前記コンテンツサーバに前記コンテンツの前記チャンクを要求することであって、コンテンツの前記チャンクが前記1つまたは複数のコンテンツチャンクを含む、要求することと
を行うように構成される、装置。
【請求項５４】
前記少なくとも1つのプロセッサは、
前記CMと前記コンテンツサーバとの間で確立された前記複数の接続のうちのいくつかの接続を動的に調整すること
を行うようにさらに構成される、請求項53に記載の装置。
【請求項５５】
前記少なくとも1つのプロセッサは、
前記CMが別のチャンク要求を行う前に、前記1つまたは複数の接続において考慮に入れるべき、要求されたがまだ受信されていないデータの最大量を計算することであって、要求されたがまだ受信されていないデータの前記最大量の計算が、要求された残存データ(B)が残っているときに、さらなるデータを要求するためのしきい値(Thresh)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用する、計算することを行うようにさらに構成される、請求項53に記載の装置。
【請求項５６】
前記ターゲットコンテンツチャンクサイズ情報を決定するように構成された前記少なくとも1つのプロセッサは、要求するチャンクのサイズを決定する際に使用されるターゲットチャンクサイズ(T)を決定するために、ダウンロードパイプラインレート(DPR)メトリックおよびダウンロードチャンクレート(DCR)メトリックを利用する、請求項53に記載の装置。
【国際調査報告】
2017516188.tif 000034
2017516188.tif 000035