(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
本明細書において、1つ以上のデータネットワークを横断し、かつ大幅な量のネットワークリソースを使用していると決定された可能性があるデータフローを、管理のために選択するシステム及び方法が説明される。システム及び方法は、ネットワーク輻輳を検出すると、宛先(destination)に対するデータフローの配信レート(又は、ターゲットデータレート)を低減することによりデータフローの配信(delivery)を調整する(pace)ように設計することができる。いくつかの場合、システムはトランスポートマネージャ(transport manager)システムを含むことができ、他の場合、システムはトランスポートマネージャシステム及びフローディテクタ(flow detector)システムを含むことができる。いくつかの実施形態において、システム及び方法は、コンテンツサーバなどの第1のネットワーク機器とユーザ機器などの第2のネットワーク機器との間のデータフロー経路に沿ってどこかに実装することができる。いくつかの実施形態において、及び下記の説明を目的として、データフローは、メディアコンテンツファイルなどの特定のデータファイルに関連付けられたデータパケットのフローとして定義することができ、上記データファイルは、特定のネットワークソース(source)から特定のネットワーク宛先に送信される。
【0010】
いくつかの実施形態において、上記システム及び方法は、例えば、ボトルネックネットワーク輻輳の時間から余剰ネットワークキャパシティの後続の隣接した時機にトラフィックを移動することにより、集約的(aggregate)ユーザトラフィックをある時間にわたりより均等に分散する仕方で、共有アクセスネットワークにわたりパケットデータコンテンツを配信する(deliver)ことができる。トラフィックの上記再分散の正味の効果は、ピーク使用及び輻輳の間隔(ネットワークがすべてのユーザに十分なスループットキャパシティを供給することができないとき)を低減することができ、このことは、共有アクセスネットワークのエンドユーザに対してネットワークサービス品質が劣化する前に、より高い許容された集約的ネットワーク利用を結果としてもたらす可能性がある。
【0011】
下記の説明を目的として、用語「余剰ネットワークキャパシティ(surplus network capacity)」(例えば、アイドルのキャパシティ)は、例えば、トランスポートマネージャシステムが使用することができる共有ネットワークキャパシティ(例えば、ネットワーク帯域幅、ネットワークリソース)を意味するように理解され、上記トランスポートマネージャシステムは、ネットワークを通じてストリーミングコンテンツデータのうちいくらか又はすべてを転送し、しかし、こうした使用のない場合にはその他の方法で使用されない。換言すると、「余剰ネットワークキャパシティ」は、現在の集約的ネットワークトラフィックロード又は需要を超えている利用可能ネットワーク帯域幅(又は、ネットワークリソース)であるようにみなすことができる。例えば、ネットワークトラフィックキャパシティがXであり、現在の集約的ネットワークトラフィックロードがYである場合、利用可能な余剰キャパシティはX−Yであり、YはXより大きくないはずである。余剰ネットワークキャパシティを使用することのゴールの1つは、余剰キャパシティX−Yのうちいくらか又はすべてを使用して、ストリーミングコンテンツを含むコンテンツを転送することであり、このことは、余剰キャパシティ(X−Y)がゼロである場合、上記転送は遅くなり、あるいは停止し、同じネットワークを共有する他のユーザのトラフィックに対するチャネルを生み出すことを暗に示す。ネットワークの余剰キャパシティ(X−Y)がゼロであり、あるいはゼロに近づくとき、ネットワークは、「輻輳して」いる(すなわち、ネットワーク輻輳)と考えられる。
【0012】
いくつかの場合、共有のマルチユーザデータネットワークにおける余剰ネットワークキャパシティは一時的であり、瞬間ごとにランダムに変動する可能性がある。さらに、定義されたような余剰キャパシティの使用は、ネットワークキャパシティのフェアシェア又は同様に競争的な共有された使用(例えば、集約的トラフィックロードがネットワーク容量制限Xを超えているとき、ネットワークを共有するN人のユーザの各々はネットワークキャパシティのX/Nのシェアを受け取る)とは区別可能である。
【0013】
データネットワークが輻輳しているとき、ネットワークを横断するデータパケット(例えば、データフロー)のレートは典型的に劣化し、最適なデータスループットより小さいスループットが結果としてもたらされることになる。ネットワーク輻輳の原因の1つは、共有スループットキャパシティを含むネットワークリソースのその使用において比較的負担である「大フロー(elephant flows)」又は他タイプのフローのあること又は存在である。大フローの例には、例えば、ネットワーク帯域幅の大部分を使用するメディアコンテンツ(例えば、ビデオ及び/又はオーディオファイル)に関連付けられたパケットデータフローが含まれる。いくつかの場合、大フローは、何らかの閾レベルより大きい、合計ネットワーク帯域幅の一部分を消費するデータフローとして定義することができる。別の場合、大フローは、何らかの閾量を超えるデータレートを有するデータフローとして定義されてもよい。さらに別の場合、大フローは、閾継続時間より長い間存続するデータフローとして定義されてもよい。当然ながら、閾レベル及び閾量の値は、複数のファクタに基づく設計選択であってよく、上記ファクタには、例えば、関与するデータネットワークのタイプ、エンドユーザの数、合計ネットワーク帯域幅等が含まれる。
【0014】
図1Aは、一実施形態に従う一例示的なネットワーク環境100を示す。例示されるとおり、ネットワーク環境100は、トランスポートマネージャシステム102a
*、ユーザ機器104、コンテンツサーバ106、データネットワーク108、及びデータネットワーク110を含む。下記において、「
*」はワイルドカードを表すことに留意されたい。ゆえに、下記における、トランスポートマネージャシステム102a
*に対する参照は、例えば、
図1Aのトランスポートマネージャシステム102a
*を参照することがあり、
図2Aのトランスポートマネージャシステム102a’を又は
図2Bのトランスポートマネージャシステム102a’’を参照することもあり、これらは、
図1Aのトランスポートマネージャシステム102a
*の2つの異なる実装である。
図1Aに明示的に示されていないが、1つ以上のさらなるユーザ機器104及び1つ以上のさらなるコンテンツサーバ106が、データネットワーク108及び/又はデータネットワーク110とインターフェースしてもよい。
【0015】
一実施形態において、ユーザ機器104は、デスクトップコンピュータ、ワークステーション、セットトップボックス、作業ステーション、モバイルコンピューティング装置、例えばスマートフォン又はタブレットコンピュータなど、ウェアラブルコンピューティング装置、例えばスマートウォッチ又は拡張現実メガネなど、又は同様のものであり得る。
【0016】
一実施形態において、コンテンツサーバ106は、例えば、ビデオ及び/又はオーディオファイル及び/又はデータファイルなどのメディアコンテンツを他のネットワークノードに提供するサーバであり得、上記他のネットワークノードには、例えば、ユーザ機器104が含まれる。
【0017】
2つのデータネットワーク108及び110は、ユーザ機器104とトランスポートマネージャシステム102a
*とコンテンツサーバ106との間でデータパケットの形式でデータを交換する経路として使用することができる。例えば、ビデオ又はオーディオファイルなどメディアコンテンツファイルがコンテンツサーバ106からユーザ機器104にダウンロードされているとき、上記メディアコンテンツファイルは、トランスポートマネージャシステム102a
*をとおして、及びデータネットワーク108及び110を介して、コンテンツサーバ106からユーザ機器104にルーティングされることができる。例えば、コンテンツサーバ106は、宛先としてユーザ機器104のネットワークアドレス(例えば、インターネットプロトコルIPアドレス)を含むヘッダと共にデータパケットを送信することにより、データネットワーク108及び110を介してメディアコンテンツファイルをユーザ機器104に送信することができる。一実施形態において、2つのデータネットワーク108及び110は、2つの区別可能なネットワークであってもよく、あるいは単一の大きい機能ネットワークの一部であってもよい。
【0018】
いくつかの実施形態において、データネットワーク108は、トランスポートマネージャシステム102a
*をユーザ機器104に通信可能にリンクするアクセスネットワーク(AN)であり得る。例えば、いくつかの場合、データネットワーク108は、モバイルセルラーアクセスネットワーク、例えば、第2世代(2G)ネットワーク、第3世代(3G)ネットワーク、ロングタームエボリューション(LTE(登録商標))ネットワーク、第5世代(5G)ネットワーク、及び同様のものなどのうちの1つであり得る。いくつかの場合、データネットワーク108は、無線アクセスネットワーク(RAN)にリンクされるサブノードのコア集合を含むことができる。いくつかの場合、データネットワーク108、110、114の部分が、ローカルエリアネットワーク又はデータセンタ、例えば、モバイルネットワークの境界に位置するサービングゲートウェイインターフェース‐ローカルエリアネットワーク(SGi‐LAN)又はゲートウェイインターフェース‐ローカルエリアネットワーク(Gi‐LAN)であり得る。
【0019】
いくつかの実施形態において、コンテンツサーバ106をトランスポートマネージャシステム102a
*にリンクするデータネットワーク110は、ワイドエリアネットワーク(WAN)であり得、上記WANは、例示を目的として、インターネットであると考えることができる。
【0020】
いくつかの実施形態において、コンテンツサーバ106とユーザ機器104との間のパケットデータトラフィックのうち少なくとも選択された部分が、トランスポートマネージャシステム102a
*を通過し、あるいはトランスポートマネージャシステム102aのラインに沿う(in line with)ことを仮定することができる。トランスポートマネージャシステム102a
*をとおしてのトラフィックを容易にするために、一実施形態において、トランスポートマネージャシステム102a
*の物理的場所は、データネットワーク108(例えば、セルラー又はWi‐Fi(登録商標)ネットワークなどのアクセスネットワーク)をデータネットワーク110(例えば、WAN)と接続する境界トラフィック集約ポイントであり得る。例えば、第3世代パートナーシッププロジェクト(3GPP(登録商標))標準モバイルネットワークにおいて、上記集約的ポイントはSGi‐LANの一部であり得、これは、データネットワーク(PDN)‐ゲートウェイコア要素(又は、別法として、Gi‐LAN、及びゲートウェイGPRSサポートノード(GGSN)‐ゲートウェイ)に対して、及びインターネットに対して外部に接続する。しかしながら、他の実施形態において、トランスポートマネージャシステム102aは他の場所に位置してもよい。いくつかの実施形態において、トランスポートマネージャシステム102a
*は、1つ以上のANをサービスする(serving)コンテンツデリバリネットワーク(CDN)の一部であり得る。
【0021】
図2A及び
図2Bは、
図1Aのトランスポートマネージャシステム102a
*の2つの異なる実装を示し、
図2Aにおいてトランスポートマネージャシステム102a’として、
図2Bにおいてトランスポートマネージャシステム102a’’として示される。
図2Aに例示されるとおり、トランスポートマネージャシステム102a’は、ネットワークインターフェース202(例えば、ネットワークインターフェースカード又は「NIC」)、1つ以上のプロセッサ204、キュー206(例えば、バッファ)、フローディテクタ166、及び記憶装置208(例えば、揮発及び/又は不揮発メモリであり、例えば、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、フラッシュメモリ、ディスクメモリ、及び同様のものが含まれる)を含み、これらは、バス210を介して一緒にリンクされる。記憶装置208は、いずれのパケットデータフローが管理されるべきかを選択し、かつ/あるいは決定するための、1つ以上のアプリケーション214(例えば、コンピュータ読取可能命令)と1つ以上のポリシー216とを記憶することができる。
【0022】
フローディテクタ166は、他の特性の中でも、複数のデータフローを監視し、記憶装置208に記憶された又は他のソースからのポリシー216の1つ以上に基づいて、さらなる処理/管理のために上記データフローのうち1つ以上を選択するように設計されることができる。様々な実施形態において、フローディテクタは、カスタマイズされた回路(例えば、特定用途向け集積回路又はASIC)を用いて、あるいはカスタマイズされた回路と1つ以上のプロセッサなどのプログラマブル回路により実行されるソフトウェアとの組み合わせを採用することによって実装することができる。
【0023】
図2Aにさらに例示されるとおり、トランスポートマネージャシステム102a’はフローマネージャ212aをさらに含み、フローマネージャ212aは、他の機能の中でも、データフロー(すなわち、パケットデータフロー)の配信性能(例えば、配信スループット、又は他の配信パラメータのうちのいくつか)を測定するように設計されることができる。フローマネージャ212aは、データフローの測定された配信性能に少なくとも部分的に基づいてネットワークが輻輳しているかどうかを検出することができ、ネットワーク輻輳を検出することに応答して宛先(例えば、ユーザ機器104)に対するデータフローの配信を調節することによりデータフローを調整して、データフローの配信レートを低減することができる。
図2Aに例示される実施形態において、フローマネージャ212aは、1つ以上のコンピュータ読取可能プログラミング命令(例えば、アプリケーション214)を実行する1つ以上のプロセッサ204(又は、他のプログラマブル回路)により実装される。フローマネージャ212a、
図2Bのフローマネージャ212b、及び
図1Bのフローディテクタ166は、本明細書に説明される様々な機能性を実行するように各々設計された論理ユニットである。
【0024】
図2Bは、
図1Aのトランスポートマネージャシステム102a
*の別の実装を例示し、
図2Bにおいてトランスポートマネージャシステム102a’’として示される。
図2Bに例示されるトランスポートマネージャシステム102a’’は、
図2Aのトランスポートマネージャシステム102a’と同じコンポーネントのいくつかを含む。しかしながら、
図2Aのフローマネージャ212aとは異なり、
図2Bに例示されるフローマネージャ212bは、ソフトウェア(例えば、機械読取可能プログラミング命令)を実行する1つ以上のプロセッサ204を用いて実装されるのでなく、カスタマイズされた回路を用いて実装することができる。さらに別の実施形態において、
図2A又は
図2Bのフローマネージャ212
*は、カスタマイズされた回路とプログラマブル回路(例えば、プロセッサ204)により実行されるソフトウェアとの組み合わせを用いて実装されてもよい。
【0025】
図1Bは、一実施形態に従う別の例示的なネットワーク環境150を示す。例示されるとおり、ネットワーク環境150はトランスポートマネージャシステム102b
*を含み、トランスポートマネージャシステム102b
*は、
図1Aのトランスポートマネージャシステム102a
*と同様、2つのネットワーク機器(例えば、ユーザ機器104及びコンテンツサーバ106)間のデータフローを管理するように設計される。
図2C及び
図2Dは、
図1Bのトランスポートマネージャシステム102b
*の2つの異なる実装を例示し、
図2Cにおいてトランスポートマネージャシステム102b’として、
図2Dにおいてトランスポートマネージャシステム102b’’として示される。
【0026】
図1Bのトランスポートマネージャシステム102b
*(すなわち、
図2Cのトランスポートマネージャシステム102b’、又は
図2Dのトランスポートマネージャシステム102b’)は、
図1Aのトランスポートマネージャシステム102a
*(すなわち、
図2Aのトランスポートマネージャシステム102a’、又は
図2Bのトランスポートマネージャシステム102a’’)に含まれるコンポーネントと同様のコンポーネントを含む。しかしながら、
図1A、
図2A、及び
図2Bに例示されるトランスポートマネージャシステム102a
*とは異なり、
図1B、
図2C、及び
図2Dのトランスポートマネージャシステム102b
*は、フローディテクタ166を含まない。代わって、フローディテクタ166は別個のネットワーク装置の一部であり得、本明細書においてフローディテクタシステム112と呼ばれる。
【0027】
フローディテクタシステム112は、ネットワークインターフェース160、1つ以上のプロセッサ162(例えば、中央処理ユニット(CPU)、グラフィカル処理ユニット(GPU)、及び同様のもの)、記憶装置164(例えば、揮発及び/又は不揮発メモリ)、及びフローディテクタ166を含む。フローディテクタ112は、他の機能の中でも、
図2A及び
図2Bのフローディテクタと同様、データネットワーク108、110、及び114を介したコンテンツサーバ106とユーザ機器104との間のデータトラフィックを監視し、かつ/あるいはサンプリングするように設計されることができる。
図1Bのフローディテクタシステム112及びトランスポートマネージャシステム102b
*は、データネットワーク114にリンクされることができ、データネットワーク114は、いくつかの実施形態において、ローカルエリアネットワーク又はソフトウェアデファインドネットワーク(Software Defined Network)、例えば、ルータ、スイッチ、ゲートウェイ、及び同様のものの直接相互接続されたハードウェア集合を含む1つ又は複数のネットワークなどであり得る。いくつかの実施形態において、3つのデータネットワーク108、110、及び114は、単一機能ネットワークであり得る。
【0028】
一実施形態において、データネットワーク108、110、及び114を横断するデータフローを特徴付ける構成されたポリシー又はテンプレートに基づいて、フローディテクタシステム112によるさらなる処理のために、選択的パケットデータフローを識別することができる。例えば、フローディテクタシステム112は、フローディテクタ166を用いて平均スループット、配信されたデータボリューム、継続時間、及びデータフローの他の特徴を測定して、フローを大フローとして分類することができる。上記大フローは、その比較的大きい、共有スループットキャパシティを含むネットワークリソースの不均衡な使用に起因して、比較的負担となるタイプのデータフローである。
【0029】
データネットワーク108、110、及び114を流れるパケットの具体的なフロータイプ(例えば、大フロー)は、例えば、コンポーネントパケットネットワーク、及びパケットのトランスポートレイヤヘッダに基づいて決定することができ、上記には、例えば、IPのソース及び宛先アドレス、トランスポートコントロールプロトコル(TCP)又はユーザデータグラムプロトコル(UDP)のソース及び宛先ポート、プロトコル(例えば、IPv4)、フローラベル(例えば、IPv6)、フラグ、拡張ヘッダフィールド、及び同様のものの組み合わせを含むことができる。すなわち、例えば、パケットのヘッダを処理してパケットが例えば同じソース及び宛先ポート、プロトコル、フローラベル、拡張ヘッダフィールド、及び同様のものを有すると決定することにより、異なるパケットを同じデータフロー(又は、仮想フロー)に属しているとして識別することができる。データフロー(すなわち、パケットデータフロー)がいったん識別されると、識別されたデータフローにより運ばれるデータの量を確認して、データフローが大フローであるかどうかを決定することができる。
【0030】
いくつかの実施形態において、データフローは、1つ以上のフローの集約的組み合わせのパケットをサンプリングすることと、定義されたサンプリング継続時間内に測定された閾データレートを超えているフローを選択することとにより、大フローとして識別される。別の実施形態において、データフローは、連続的活動継続時間閾を超えているフローをサンプリングすること及び選択することにより、大フローとして識別される。上記連続的活動継続時間閾は、そのデータレートの各々が閾データレートを超える連続したデータレートの数又はデータレートのシーケンスを測定することにより、定義することができる。さらに別の実施形態において、データフローは、1つ以上のフローの集約的組み合わせのパケットのうちいくつかのみをランダムにサンプリングすることと、集約的トラフィック帯域幅の比較的不均衡な使用を示す相対検出確率を超えているフローを選択することとにより、大フローとして識別される。さらに別の実施形態において、上記方法は、組み合わせで又は他の同様の方法と共に用いられてもよい。
【0031】
いくつかの場合、ネットワーク又はトランスポートレイヤパケットデータペイロードが暗号化され、あるいは難読化されているとき、ペイロードヘッダを処理し/調べて、同じパケットデータフローに属するパケットを識別することができる。別の場合、パケットデータペイロードが可読である場合、ネットワーク又はトランスポートパケットペイロード内の情報を処理し/調べて、特定のデータフロー又はデータフローのタイプ(例えば、ストリーミングビデオ)に関連付けられたパケットを識別するのにさらに役立てることができる。
【0032】
いくつかの実施形態において、フローディテクタシステム112が大フロー、又は負担であり得る別のフローをいったん識別すると、フローディテクタシステム112は、データネットワーク114内のパケットフォワーディング論理の再構成をトリガすることができ、したがって、識別されたデータフロー内のパケットは、ソース(例えば、コンテンツサーバ106)と宛先(例えば、104)との間のエンドツーエンド経路においてトランスポートマネージャシステム102b
*を通過するように向けられる。例えば、フローディテクタシステム112は、負担のあるフローの特徴を、データネットワーク114を含む1つ以上のルータ及びスイッチに通信することができる。したがって、動的に構成されたフォワーディング又はスイッチングルールを使用して、同じデータフロー内の後続パケットを、パケットのエンドツーエンド経路内でトランスポートマネージャシステム102b
*を通過するように向けることができ、例えば、ソフトウェアデファインドネットワーキングの原理が使用される。しかしながら、他の実施形態において、トランスポートマネージャシステム102b
*が、デフォルトルールに従い、エンドツーエンド経路内に含まれてもよく、フローディテクタシステム112が、1つ以上の分類テンプレートにマッチする検出されたフローをトランスポートマネージャシステム102b
*に単に知らせてもよく、したがって、検出されたフローは処理される(例えば、フローレートを調整してフローの配信レートを低減させる)と同時に、他のトラフィックフローを処理なくフォワードすることができる。
【0033】
いくつかの場合、フローは、単方向であり得(例えば、アップリンクフロー又はダウンリンクフローのいずれか)、あるいは、接続エンドポイントの通信ペアに属する反対方向のフロー(例えば、入れ替えられた宛先及びソースネットワークアドレス、入れ替えられたポートアドレス、共通フローラベル等を有するパケット)とペアにされることにより双方向であり得る。いくつかの実施形態において、双方向フローペアの双方の方向を、トランスポートマネージャシステム102b
*に向けることができる。
【0034】
いくつかの実施形態において、フローディテクタシステム112及びトランスポートマネージャシステム102b
*は、
図1Bに示されるように区別可能な機能要素であり得、あるいは
図1Aに示されるように単一の機能ユニットに組み合わせられてもよい。
【0035】
図3は、一実施形態に従うユーザ機器104のブロック図である。ユーザ機器104は、いくつかの場合にモバイルコンピューティング装置又はデスクトップコンピュータであり得、ネットワークインターフェース302(例えば、NIC)、1つ以上のプロセッサ304、ユーザインターフェース306(例えば、ディスプレイ、スピーカ、キーボード、マウス、及び同様のものを含む)、及び記憶装置308(例えば、揮発及び/又は不揮発メモリ)を含むことができ、これらは、バス310を介して一緒に結合される。記憶装置308は、1つ以上のアプリケーション314及び1つ以上のファイル316(例えば、オーディオ及び/又はビデオファイルなどのメディアコンテンツファイル)を記憶することができる。いくつかの実施形態において、1つ以上のプロセッサ304は、1つ以上のコンピュータ読取可能命令(例えば、アプリケーション314)を実行してエージェント312を実施することができ、エージェント312は、
図1A、
図1B、
図2A、
図2B、
図2C、及び
図2Dのトランスポートマネージャシステム102
*により実行される様々な機能性を容易にするように設計されることができる。
【0036】
図4は、一実施形態に従う、データフローを選択及び管理する処理を例示する。いくつかの実装において、処理400は、例えば、フローマネージャ212
*(
図2A、
図2B、
図2C、及び
図2Dを参照)及びフローディテクタ166(
図1B、
図2A、及び
図2Bを参照)により実施することができる。処理400は、402において、例えばフローディテクタ166により、1つ以上のデータネットワークを横断する複数のデータフローからデータフローが管理のために選択されるとき、開始する。選択されるデータフローは、コンテンツサーバ106などのソースから、ユーザ機器104などの宛先に送信され得る。いくつかの場合、データフローは、データフローが大フロー(例えば、閾レベルより大きいか又は閾量を超えるデータレートを有するネットワーク帯域幅の部分を消費するデータフロー)であるとの決定に基づいて選択されることができる。一実施形態において、データフローは、さらに又は別法として、データフローのソースを決定することにより選択されてもよい。例えば、ビデオコンテンツプロバイダなどの特定コンテンツプロバイダと提携したソースアドレスから生じていると決定されたデータフローは、管理のために自動的に選択されてもよい。
【0037】
404において、例えばフローマネージャ212
*により、ネットワーク輻輳が検出される。ネットワーク輻輳を検出するために、様々な手法が採用されてよい。例えば、いくつかの実装において、ネットワーク輻輳は、選択されたデータフローの配信性能を決定することにより検出することができる。このことは、選択されたデータフローに関連付けられたパケットがネットワークが許容する限り速くネットワークを横断できるようにして、選択されたデータフローの現在の配信スループットを推定することにより、達成することができる。いくつかの実施形態において、選択されたデータフローの配信スループットを正確に推定するために、パケットを成功裏に受信したことに応答して宛先(例えば、ユーザ機器104)により送信される肯定応答(acknowledgements)(例えば、ACKパケット)を監視することができる。それから、推定された配信スループットが選択されたデータフローの「ピークスループット」より小さい場合、ネットワークは輻輳していると決定されることができ、上記ピークスループットは、いくつかの場合、選択されたデータフローについて事前に検出されている可能性がある。一実施形態において、配信スループットは、単位時間ごとに宛先に配信されるデータの推定された量であり、ピークスループットは、選択されたデータフローについての1つ以上の事前の配信スループット推定に基づく、最も高い(例えば、フィルタ又は平均された)推定された配信スループットであり得る。別の実施形態において、ピークスループットは、他のデータフローについての1つ以上の事前の配信スループット推定の、最も高い(例えば、又はフィルタされ、又は平均された)推定された配信スループットであり得る。いくつかの実施形態において、最も高い推定された配信スループットは、ピーク保持、パーセンタイルに基づく解析、フィルタされたデータスループット、及び/又は平均されたデータスループットに基づいて推定されている可能性がある。いくつかの場合、ピークスループットは、エージェント312が報告することができる。別の場合、ピークスループットは、フローマネージャ212
*が推定してもよい。さらに別の場合、ピークスループットは、他のネットワーク要素が推定してもよい。
【0038】
すなわち、メディアファイルのデータフローがネットワークを横断しているとき、データフローのスループットは、利用可能なネットワークキャパシティ/輻輳に依存して頻繁に変動することになる。余分のネットワークキャパシティがある(例えば、輻輳が無い)時点において、関連付けられたパケットは最適な又は最大のレートで宛先(例えば、ユーザ機器104)に配信され、これは本明細書においてピークスループットと呼ばれる。データフローがピークスループットレベルで宛先に配信されていないと検出される特定の時点において、ネットワークは、輻輳していると決定されることができる。いくつかの実施形態において、ネットワーク輻輳の検出は、例えば、選択されたデータフローの決定された配信性能に基づいてネットワーク輻輳のレベルを決定することを含むことができる。
【0039】
406において、検出されたネットワーク輻輳に基づいて、選択されたデータレートを例えばフローマネージャ212
*が調整して、宛先に対するデータフローの配信レートを低減することができる。いくつかの実施形態において、データフローの配信レートは、宛先に送信されるべきパケットとパケットとの間にレイテンシを追加することにより低減させることができる。例えば、配信レートを遅くするために、宛先に送信されるべきデータフローの2つ以上のパケットの送信の間に1つ以上のレイテンシを追加することができる。追加される1つ以上のレイテンシの量は、例えば、フローの決定された配信性能又はネットワーク輻輳のレベルに基づくことができる。一実施形態において、データフローに関連付けられたデータを、キュー(例えば、トランスポートマネージャシステム102
*のキュー306)にバッファリングすることができる。一実施形態において、配信レートは、ある時間間隔(time interval)にわたり平均ターゲットデータレートを達成するために選択された上記時間間隔内にフローのためにトランスポートシステム102
*により送られるデータの量として定義することができる。本明細書において用いられるとき、用語「調整する」又は「調整される」は、ネットワーク条件に従ってターゲットデータレートが動的に調節される、すなわち増加又は減少されるネットワーク動作を参照する。一実施形態において、ターゲットデータレートは、割り振られたTCPフェアシェアを超えないように動的に調節される。一実施形態において、ターゲットデータレートは、フローの現在の推定されたスループットとピークスループットとにおける数値的な差に比例して減少するレートとして定義することができる。上記数値的な差が変動するネットワーク条件に起因して断続的に変わるため、ターゲットデータレートもまた動的に(例えば、連続的に又は頻繁に)調節される。
【0040】
図5A及び
図5Bは、いくつかの実施形態に従う、
図4の処理400の2つの異なる実装である2つの処理500及び550を例示する。処理500及び550は、
図2A、
図2B、
図2C、又は
図2Dのフローマネージャ212
*及び
図1B、
図2A、又は
図2Bのフローディテクタ166により実施することができる。
【0041】
いくつかの場合、単一の論理フローを、エンドポイントとしてユーザ機器104を有する2つ以上のトランスポートレイヤフローに関連付けることができる。単一の論理フローからの集約的トラフィックを、
図5A又は
図5Bに例示される動作に従って、例えばフローマネージャ212
*が管理することができる。例えば、ユーザ機器104上で動作するアプリケーションは、データを送り及び受けるのに該アプリケーションが使用できる複数のトランスポートコントロールプロトコル/インターネットプロトコル(TCP/IP)フローを作成することができる。複数のTCP/IPフローのトラフィックを含む単一の論理フローを関連付け及び管理することにより、
図5A又は
図5Bに示される動作を、ユーザ機器ごと及び/又はユーザアプリごとに実行することができる。いくつかの実施形態において、各フローのTCP/IP 4タプル(ソースアドレス(SA)、宛先アドレス(DA)、ソースポート(SP)、宛先ポート(DP))及びプロトコルID、又は(SA、DA、フローラベル)を使用して、共通のユーザ機器IPアドレス、プロトコルID、又はこれらの組み合わせを共有するフローをグループ化することができる。他の実施形態において、IPアドレスに関連付けられていると分かっているユーザ機器104の一意IDを使用して、複数のTCP/IPフローを単一の論理フローにグループ化してもよい。
【0042】
図5Aは、一実施形態に従う、管理のためにデータフローを選択し、該データフローを調整する処理500を示す。処理500は、管理されるパケットのネットワーク又はトランスポートレイヤペイロードが暗号化されているか又は暗号化されていないかにかかわらず、実施することができる。処理500は、502において、1つ以上のネットワークを横断するデータフローが例えばフローディテクタ166により監視されるとき、開始する。いくつかの実装において、このことは、
図1A又は
図1Bのトランスポートマネージャシステム102
*(又は、
図1Bのフローディテクタシステム112)を通過するネットワークレイヤ(例えば、IP)及びトランスポートレイヤ(例えば、TCP、UDP)フロー(例えば、パケットのTCP/IP部分)を監視することにより達成することができる。いくつかの場合、監視動作502は、より高いレイヤ(例えば、HTTP又はアプリケーションレイヤ)の検査(inspection)を含むことができる。
【0043】
504において、フロー分類ポリシーのセットに基づいて、フローディテクタ166は、より綿密な検査及び管理のために特定のデータフローを選択することができる。例えば、フローディテクタ166は、フローが大フローのポリシー基準を満足していると決定することができる。別の例において、TCP/IPが採用されると仮定して、フローディテクタ166は、3ウェイTCPコネクションが確立されるときに実行されるハンドシェイクに基づいて、複数のフローパケットの宛先IPネットワークアドレスがオンラインビデオストリーミングコンテンツの主要商業プロバイダに関連付けられていると決定することができる。接続についての戻りのTCP/IP 4タプル(SA,DA,SP,DP)及びプロトコルIDは記録することができ、したがって、フローディテクタ166は、確立されたTCP/IPフローに属するイングレス(ingress)(WANからANへの)パケットを検出し、検査することができる。
【0044】
いくつかの場合、関心のある接続ネットワークレイヤは、検査されているパケットの1つ以上のカプセル化プロトコル内でトンネルされることがあり、このことは、フローディテクタ166が1つ以上のカプセル化プロトコルを解いて(unwrap)、ソース及び宛先、プロトコル、及び肯定応答ネットワーク情報のうち1つを検査することを必要とする可能性がある。暗号化によって妨げられないとき、いくつかの実施形態において、監視動作502は、より高いレイヤ(例えば、HTTP又はアプリケーションレイヤ)の検査をさらに含んでもよい。
【0045】
504において、フローディテクタ166は、さらに処理及び管理されるべきデータフローを識別し、あるいは選択することができる。フローディテクタ166がフローディテクタシステム122(
図1Bを参照)に位置するとき、フローディテクタ166は、フローのパケット(及び、関連付けられた戻りパケットフローパケット)をトランスポートマネージャシステム102
*に向けることができる。別法として、フローディテクタ166は、トラフィックリダイレクション(redirection)が必要とされない(例えば、データフローがトランスポートマネージャシステム102
*にすでに向けられている)とき、フローの管理を開始するようにトランスポートマネージャシステム102
*に信号伝達してもよい。フローディテクタ166がさらなる処理及び管理のためにデータフローを識別又は選択しない場合、処理500は502に戻る。
【0046】
506において、選択されたデータフローの配信性能を、例えば、トランスポートマネージャシステム102
*のフローマネージャ212
*が測定する。いくつかの実施形態において、フローマネージャ212
*は、測定フェーズの間、選択されたデータフローの配信性能を監視することにより、配信性能を測定することができる。測定フェーズの一実施形態において、フローのデータのボリュームと、トランスポートマネージャシステム102
*によりユーザ機器104に送られる上記データのボリュームの配信のタイミングとを使用して、平均配信スループットを決定することができる。
【0047】
いくつかの実施形態において、選択されたデータフロー(これは、ファイルセグメントのデータフローであり得る)の受信者(例えば、ユーザ機器104)に対するタイミング及び配信性能は、フローマネージャ212
*が1つ以上のデータパケットをフォワードするとき、推論されることができる。例えば、データフローの受信者に対する配信性能(例えば、スループット)は、トランスポートマネージャシステム102
*と受信者(例えば、ユーザ機器104)とを接続するネットワーク(例えば、データネットワーク108)内で定常状態条件を確立するのに十分であり得る既知の時間間隔中に受信者に送られるエグレス(egress)バイト数を数えることにより、確認されてもよい。上記実施形態において、エグレスデータパケット内の数バイトは、受信者に配信されることを裏付けられない可能性があり、このことは、決定される配信性能に誤差をもたらす可能性がある。しかし、こうした誤差は、多くの場合に小さくとどまる可能性があり、ゆえに、無視されてもよい。この方法は、例えば、フロー(例えば、UDP)の受信者からの戻り肯定応答(ACK)パケット情報のフローマネージャ212
*による検出をサポートしないか又は複雑化するトランスポートレイヤ又は他のプロトコルレイヤを用いて、使用することができる。
【0048】
いくつかの実施形態において、フレーズ「定常状態」は、本明細書において用いられるとき、初期立ち上げ(ramping)期間(例えば、フローのデータパケットの送信が増大する(ramps up)ときの最初の時間間隔)がいったん経過すると達成されるデータフロー及び/又は配信レートを参照することがある。例えば、フローの測定フェーズの間、フローのスループットは変動する可能性がある(例えば、比較的ゆっくり始まり、それから、いくらかの間隔の後、持続した平均レートを達成する)。測定フェーズが十分長くないか、あるいは、例えば初期立ち上げ間隔を除外しない場合、それは定常状態を確立するのに不十分であり得る。例えばモバイルネットワークをとおしての、データパケットの送信は、1つ又はいくつかのデータパケットを送信した後、定常状態条件に到達することがしばしばできない。実際、定常状態を確立することは1秒又は数秒実際かかることがあり、その間、多くのデータパケットが送られ、複数のラウンドトリップ時間(送信者から受信者へ、さらに送信者への)間隔が存続する。ゆえに、定常状態測定を定義する1つの方法は、特定間隔の時間(例えば、増大時間間隔)が経過すると行われるフロー測定として定義することができる。定常状態を達成した測定を定義する別の方法は、測定時間間隔が十分なレベルに増加され、したがって、上記測定はさらなる測定で大幅に変わりはしない方法である。
【0049】
いくつかの場合、選択されたデータフロー内のデータパケットのタイミング及び配信性能は、受信者により受信されるデータフローのトランスポートレイヤ(又は、他のプロトコルレイヤ)パケットを受信することに応答して受信者により送信される戻りACKパケット(例えば、TCP ACK)を検査することにより、確認し、かつ/あるいは裏付けることができる。例えば、いくつかの実施形態において、フローマネージャ212
*は、定義された時間間隔内の送られ及び肯定応答された(acknowledged)パケットの数のタイミング、又は送られ及び肯定応答されたデータバイトの固定又は閾ボリュームを用いることにより、配信性能測定動作506を開始することができる。いくつかの場合、受信したパケット肯定応答は、トンネルされたアップリンク、及び/又はファイルセグメントパケットのより高い/より低いレイヤのパケットペイロード又はヘッダ(例えば、物理レイヤ、データリンクレイヤ、ネットワークレイヤ、トランスポートレイヤ、セッションレイヤ、プレゼンテーションレイヤ、又はアプリケーションレイヤのヘッダ又はペイロード)の、フローマネージャ212
*による検査に関与してもよい。
【0050】
他の実施形態において、トランスポートマネージャシステム102
*に接続する同じネットワークを共有する1つ以上の他の受信者に対するデータフローの配信性能を使用して、トランスポートマネージャシステム102
*と対象の受信者(例えば、ユーザ機器104)との間の配信性能を推論することができる。例えば、フローマネージャ212
*は、第1の受信者(例えば、第1のユーザ機器)に対するデータフローの配信性能を決定することができ、第2の受信者(例えば、第2のユーザ機器)が同じ共有ネットワーク(例えば、同じサービング基地局無線リンク)上で動作していると分かっている場合、第2の受信者に対する同時的なフローの配信性能を、第2の受信者のデータフローに対して別個の測定動作を行う必要なく推論することができる。フローマネージャ212
*は、例えば、受信者の現在のID又はネットワークアドレスをサービング基地局IDにリンクするネットワーク情報に基づいて、第1の受信者と第2の受信者とが基地局を共有していると決定することができる。この方法は、例えば、第2の受信者のフロー(例えば、UDP)の正確な別個の測定フェーズをフローマネージャ212
*が行うことを困難にし得るトランスポートレイヤ又は他のプロトコルレイヤについて、使用することができる。
【0051】
ネットワークの複数のデータフローの、ピークの観察されたスループット性能の記録を維持することにより、フローマネージャ212
*は、510において、ピークスループットより遅いフローを検出することができ、これにより、例えばボトルネックネットワークリンクを共有する競争するトラフィックフローから、ネットワーク輻輳を推論してもよい。
【0052】
複数のデータフローの定常状態ネットワーク配信性能を決定する上記方法は、多くのラウンドトリップの配信時間間隔に及ぶのに十分な長さのものである測定され配信されたデータボリュームに依存して、ネットワークのスループットキャパシティの安定的な推定を達成することができる。上記が可能でないとき、フローマネージャ212
*は、いくつかの実施形態において、測定されたスループットの平均又はフィルタされた値を使用して輻輳を検出してもよい。
【0053】
例えば、いくつかの実施形態において、上記ピーク観察スループット性能は、複数のデータフローの、1つ以上の測定された値の統計的重み付け、例えば、パーセンタイル、平均、加重平均、移動平均、及び同様のものを決定することなどを介して決定することができる。他の実施形態において、ピークスループットは、トラフィックフローのコンテンツソースと宛先との間のネットワークセグメントのうち1つ以上に関する既知の情報、例えば、1つ以上のボトルネックネットワークセグメントの最大スループットに基づいて決定されてもよい。
【0054】
508において、ネットワーク輻輳があるかどうかについて決定が行われる。フローマネージャ212
*は、選択されたデータフローの現在のスループットをピークスループットと比較することにより、上記決定を行うことができる。現在のスループットがピークスループットに等しいか又は大きい場合、処理500は506に戻り、データの配信性能が測定されることを継続する。一方、現在のスループットがピークスループットより小さい場合、ネットワークは、輻輳していると決定される。ネットワーク輻輳が508において検出された後、フローマネージャ212
*は、いくつかの実施形態において、510において、識別されたデータフローが動的に調整される動作の調整モードに入る。
【0055】
いくつかの実施形態において、選択されたデータフローを動的に調整することは、例えば、受信者に対して送信されるデータパケットの配信レートを連続的又はインクリメンタルに減少又は増加することにより、達成することができる。例えば、フローマネージャ212
*は、例えば、少なくともターゲット平均スループットが調整間隔について達成されるまで、受信者に送信されるパケット間にレイテンシを追加することにより、受信者に対する選択されたデータフローの配信レートを低減することができる。データフローの配信レートが調節された後、処理500は506に戻り、データフローの配信性能が再度測定される。
【0056】
選択されたデータフローの配信レートを低減するために、いくつかの実施形態において、アップストリームコンテンツサーバ106からの入ってくるネットワークレイヤパケット(例えば、IP)は、ターゲットレートポリシーに従い、トランスポートマネージャシステム102
*においてエンキューされ(例えば、バッファリングされ)、それから、パケットネットワーク108(例えば、アクセスネットワーク)をとおして再送信される。いくつかの場合、ターゲットレートポリシーは、検出された輻輳の相反的機能(reciprocal function)(例えば、輻輳が増加するときにターゲットレートを減少し、輻輳が減少するときにターゲットレートを増加する)であり得る。上記ポリシー下で、調整すること(例えば、配信レートを遅くすること又は低減すること)は、輻輳が検出されない場合、又は検出された輻輳が何らかの閾値より低い場合、必要とされなくてもよい。いくつかの実施形態において、検出された輻輳のレベルに依存して、ターゲットレートは、1つ又は複数のファイルセグメントが追加の調整レイテンシなしに配信されたときにネットワーク(例えば、パケットネットワーク108)がサポートすることができると事前に観察されたレートよりターゲットレートスループットが低いように、算出される。
【0057】
いくつかの実施形態において、調整は、平均送信レートがターゲットレベルに一致するように単位データ(例えば、IPパケット)の送信を遅延することにより、実装することができる。例えば、トランスポートマネージャシステム102
*の物理インターフェーススループットキャパシティの、(アクセスネットワーク)ANに面する(例えば、モバイルネットワーク)エグレスインターフェースが100Mbpsであり、各データパケットサイズ(例えば、TCPペイロード)が1500バイトである場合、2つのエンキューされたパケットは、2*1500*8/100E6=240E−6 sで立て続けに送ることができる。例えば、600000bpsのターゲット調整レートが所望される場合、遅延が、39.76E−3 sのパケットペアを送信する(又は、いくつかの実施形態において、1つの1500Bパケットを平均で20msごとに送信する)間、挿入されることができる。いくつかの場合、ターゲット送信レート及びバースト特性を達成するように遅延を制御する標準アルゴリズムが採用されてもよい(例えば、トークンバケットレート制限)。いくつかの実施形態において、上記さらなる挿入遅延は、いくつかのトランスポートレイヤラウンドトリップ時間(RTT)期間にわたりゼロから立ち上げられて、送信トランスポートレイヤプロトコル(例えば、TCP)に、より徐々にレート調整に適合する機会を与えてもよい。
【0058】
いくつかの実施形態において、調整は、追加の調整レイテンシなく宛先(例えば、ユーザ機器104)に送信された、最も最近配信されたデータを考慮して実行されてもよく、したがって、調整レイテンシの有無にかかわらず配信された組み合わせられたデータを、送信レートターゲットレベルを達成する平均レートで配信することができる。調整間隔の継続時間、若しくは調整間隔の統制されたスループット、又は双方が変えられて、送信レートターゲットレベルを達成してもよいことが理解されるであろう。
【0059】
いくつかの実施形態において、調整間隔の統制されたスループットは一定であり得、したがって、少なくとも調整されたフローの最小スループットが調整間隔の間に配信されることを継続し、それから、可変の調整間隔が、追加の調整レイテンシなしに送信された最も最近配信されたデータを考慮して、送信レートターゲットレベルを達成するように算出され、設定される。別の実施形態において、調整間隔の長さは一定であり得、それから、可変の統制された調整スループットが、追加の調整レイテンシなしに送信された最も最近配信されたデータを考慮して、送信レートターゲットレベルを達成するように決定される。さらに別の実施形態において、調整間隔の統制されたスループット及び調整間隔の長さは双方、可変であり、ポリシーに従って決定されることができる。例えば、調整間隔について、固定の統制された調整スループットレート(例えば、250kビット/秒の一定のスループットレート)を設定し、調整間隔の調節された長さ(これは、ターゲット平均スループットレートに基づいて算出することができる)が閾最大値(例えば、5秒)を超えない限り、調整間隔の時間長さを調節する。さもなければ、調整間隔の長さは閾最大値で設定され、統制された調整スループットは送信レートターゲットレベルを達成するように設定される(例えば、調節される)。
【0060】
いくつかの実施形態において、識別されたデータフローの調整は、ユーザ機器104によりコンテンツサーバ106に送信されるコンテンツ要求をトランスポートマネージャシステム102
*で一時的に保留及び遅延することにより、達成することができる。調整の上記方法において、フローマネージャ212
*は、コンテンツ要求(例えば、HTTP GET)を調べ、要求元ユーザ機器104についての現在の測定された輻輳レベルに従って待ち間隔の間、コンテンツサーバ106に要求をフォワードすることを遅延することができる。
【0061】
いくつかの実施形態において、パケットキュー規律(例えば、先入れ先出し‐FIFO)がトランスポートマネージャシステム102
*で動作することができ、最大の許容されるキュー深さが強制されて、パケット損失が発生する(例えば、キューがフルであるときのイングレスパケットは破棄されることがある)前に最大の許容されるキューイングレイテンシを制限することができる。実際、調整モードのいくつかの実施形態において、トランスポートマネージャシステム102
*は、ネットワークレイヤパケットルータと同様に動作することができ、ただし、そのエグレスインターフェーススループットキャパシティは、ダウンストリームネットワークボトルネック内の輻輳レベルに従い、フローについて調節される。上記の仕方で、トランスポートマネージャシステム102
*は、配信するトラフィックボリュームを、輻輳が存在しないか又は低減されているときの時間間隔にシフトし、輻輳間隔の間にデータネットワーク108からトラフィックを除去することができる。いくつかの実施形態において、トランスポートマネージャシステム102
*は、パケットマーキング、例えば、ネットワークレイヤパケット(例えば、IP)の明示的輻輳通知(Explicit Congestion Notification)(ECN)を使用して、パケットドロップ又は挿入レイテンシでなく、又はこれらに追加で、送信者に輻輳を信号伝達することができる。
【0062】
調整モードのいくつかの実施形態において、ファイルセグメントの配信スループットは、トランスポートマネージャシステム102
*によるパケット送信の間にさらなるレイテンシが導入されなかった場合にデータネットワーク108がどれほど速くパケットを配信できたかを反映しない可能性がある。したがって、ダウンストリームネットワーク輻輳の実際のステートを推定するために、フローマネージャ212
*は、本明細書にさらに説明されるように、1つ以上のファイルセグメントがトランスポートマネージャシステム102
*を横断することを周期的に可能にしてもよい。
【0063】
図5Bは、一実施形態に従う、管理のためにデータフローを選択し、該データフローを調整する処理550を例示する。前に示されたとおり、処理550は、
図2A、
図2B、
図2C、又は
図2Dのフローマネージャ212
*、及び
図1B、
図2A、又は
図2Bのフローディテクタ166が実施することができる。いくつかの実施形態において、処理550は、ネットワーク又はトランスポートレイヤペイロードが暗号化されていないとき、特に適用可能であり得る。図示されるとおり、処理550は、
図5Aの処理500に含まれる動作のうちいくつかと同一又は類似の動作を含む。例えば、
図5Bの処理552、554、558、及び560は、
図5Aの動作502(例えば、データフローを監視すること)、504(データフローの配信を管理するかどうかを決定すること)、508(例えば、ネットワーク輻輳があるかどうかを決定すること)、及び510(例えば、データフローを調整すること)を実質的に反映する。
【0064】
処理550は、552において、
図1A又は
図1Bのトランスポートマネージャシステム102
*(又は、
図1Bのフローディテクタシステム112)を通過するネットワークレイヤ(例えば、IP)及びトランスポートレイヤ(例えば、TCP、UDP)フロー(例えば、パケットのTCP/IP部分)が例えばフローディテクタ166により監視されるとき、開始する。いくつかの場合、フローの監視は、より高いレイヤ(例えば、HTTP又はアプリケーションレイヤ)の検査を含んで、例えば、ソース(例えば、コンテンツサーバ106)から宛先(例えば、ユーザ機器104)に送信されるメディアコンテンツファイルのパケットフローを決定することができる。フローの監視は、データフローにより送信されるデータのボリューム、データフローのデータ送信レート、及び同様のことを測定することをさらに伴ってもよい。
【0065】
554において、フローディテクタ166は、さらに処理及び管理されるべきデータフローを識別し、あるいは選択することができる。フローディテクタ166がフローディテクタシステム112に位置するとき(
図1Bを参照)、フローディテクタ166は、フローのパケット(及び、関連付けられた戻りパケットフローパケット)をトランスポートマネージャシステム102
*に向けることができる。別法として、トラフィックリダイレクションが必要とされない(例えば、データフローがトランスポートマネージャシステム102
*にすでに向けられている)とき、フローディテクタ166は、フローを管理することを始めるようにトランスポートマネージャシステム102
*に信号伝達してもよい。さらなる処理及び管理のためにデータフローが識別又は選択されない場合、処理550は552に戻る。
【0066】
556において、フローマネージャ212
*は、宛先(例えば、ユーザ機器104)からのファイルセグメント要求(例えば、ファイルダウンロードの要求)を検出する。例えば、このことは、例えば、既知のコンテンツサーバネットワークアドレス及びトランスポートレイヤポート組み合わせ、プロトコルID、フローラベル、及び同様のものに対して、定義可能時間間隔内で、データバイトの固定若しくは閾ボリュームについて、又はこれらの区別できる組み合わせについて、アプリケーションレイヤペイロード(例えば、HTTP GET)を検査することにより直接的に、あるいはアップリンク及びダウンリンクパケットのヒューリスティックデータパケットパターン(例えば、「指紋」)を比較することにより間接的に達成することができる。ファイルセグメント要求を検出することにより、トランスポートマネージャシステム102
*は、ファイルダウンロードが始まろうとしていることを確認することができる。
【0067】
いくつかの場合、接続要求の信頼可能な検出(例えば、暗号化されたTCPペイロード)は、ダウンロードデータが要求に応答してフローすることを開始した後しばらくしてのみ発生する可能性がある(例えば、フローするダウンリンクデータのボリューム又はパターンが、ファイル要求が行われたことを裏付ける)。いくつかの実施形態が、ファイルダウンロードが進行中であることを検出する他の方法を採用してもよい。
【0068】
558において、ネットワーク輻輳があるかどうかに関して、例えばフローマネージャ212
*により、決定が行われる。一実施形態において、フローマネージャ212
*は、様々な手法を採用して、トランスポートマネージャシステム102
*とユーザ機器104との間のデータネットワーク108の輻輳状態を決定することができる。いくつかの場合、例えば、ダウンロードされるべきファイルセグメントのサイズ、及びファイルセグメントの配信のタイミングを使用して、平均配信スループットを決定することができる。
【0069】
いくつかの実施形態において、ファイルセグメントの受信者に対するタイミング及び配信性能は、例えば、ネットワークが許容する限り迅速なフローマネージャ212
*による1つ以上のファイルセグメントのフォワーディングにより推論することができる。他の実施形態において、ファイルセグメントのタイミング及び配信性能は、トランスポートマネージャシステム102
*により送られるファイルセグメントのトランスポートレイヤ(又は、他のプロトコルレイヤ)パケットに対応する戻りACKパケット(例えば、TCP ACK)を検査することによりさらに裏付けられてもよい。例えば、いくつかの実施形態において、フローマネージャ212
*は、定義された時間間隔内に送られ及び肯定応答されたパケットの数のタイミング、又は送られ及び肯定応答されたデータバイトの固定又は閾ボリュームを使用することにより、輻輳状態決定を開始することができる。いくつかの場合、受信パケット肯定応答は、ファイルセグメントパケットのトンネルされたアップリンク、及び/又はより高い/より低いレイヤパケットペイロード若しくはヘッダ(例えば、物理レイヤ、データリンクレイヤ、ネットワークレイヤ、トランスポートレイヤ、セッションレイヤ、プレゼンテーションレイヤ、又はアプリケーションレイヤのペイロード又はレイヤヘッダ)の、フローマネージャ212
*による検査に関与してもよい。
【0070】
特定のデータフローの間、ピーク観察スループット性能の記録を維持することにより、フローマネージャ212
*は、データフローの間、ピークスループットより遅いファイルセグメント転送を検出することができ、これにより、例えば、ボトルネックネットワークリンクを共有する競合トラフィックフローの結果としての、ネットワーク輻輳を推論することができる。
【0071】
ネットワーク輻輳を決定する上記方法は、ネットワークスループットキャパシティの安定的な推定を達成するために、配信されるファイルセグメントサイズが多くのラウンドトリップ時間の配信時間間隔に及ぶ十分な長さのものであることを必要とする。このことが当てはまらないとき、フローマネージャ212
*は、いくつかの実施形態において、複数のファイルセグメントの測定されたスループットの平均又はフィルタされた値を使用して輻輳を検出してもよい。
【0072】
例えば、いくつかの実施形態において、ピーク観察スループット性能は、パーセンタイル、平均、加重平均、移動平均、及び同様のものなどの、1つ以上の測定された値の統計により決定することができる。いくつかの実施形態において、ピークスループットは、トラフィックフローのソースと宛先との間のネットワークセグメントのうち1つ以上に関する既知の情報、例えば、1つ以上のボトルネックネットワークセグメントの最大スループットに基づいて決定することができる。現在のスループットをピークスループットと比較することにより、ネットワーク輻輳があるかどうかに対して決定を行うことができる。558において、ネットワーク輻輳が検出されない(例えば、現在のスループットがピークスループットに等しいか、あるいは実質的に等しい)場合、処理550は556に戻り、別のファイルセグメント要求を検出する。一方、558においてネットワーク輻輳が検出される場合、トランスポートマネージャシステム102
*は、いくつかの実施形態において、560において、識別又は選択されたデータフローが動的に調整される動作の調整モードに入ることができる。
【0073】
前に説明されたとおり、データフローの調整は、データフローの配信レートを下方に連続的又はインクリメンタルに調節することを伴うことができる。データフローの配信レートが調節された後、処理550は556に戻り、別のファイルセグメント要求を検出することができる。ファイルセグメント要求を検出し、ネットワーク輻輳を決定し、データフローを調整する上記処理(例えば、556、558、及び560)は、ファイル全体が宛先にダウンロードされるまで繰り返されることができる。
【0074】
図6Aは、一実施形態に従う、データフローの配信スループットを管理する処理を例示する。いくつかの場合、処理600は、一般に
図5Aの506、508、及び510に対応し得る。一実施形態において、処理600は、
図2A、
図2B、
図2C、又は
図2Dのフローマネージャ212
*が実施することができる。処理600は、トランスポートマネージャシステム102
*のフローマネージャ212
*がファイルセグメント配信要求と例えばコンテンツサーバからの対応する応答とを監視及び検査することができない(例えば、アプリケーションプロトコルレイヤ内に含まれる情報を読み出すことができない)場合でさえ、実施されてもよい。
【0075】
処理600は、602において、選択されたデータフロー(例えば、
図5Aの動作502及び504により選択される)の配信スループットが決定されるとき、開始する。本明細書においてさらに説明されるように、選択されたデータフローの配信スループットは、配信スループットを決定する1つ以上の利用可能な手法、例えば、ある時間間隔の間、トランスポートマネージャシステム102
*がユーザ機器104に送ることができ、かつアクセスネットワーク(例えば、データネットワーク108)が許容する選択されたデータフローのデータパケットの数を数えることなどを用いて、決定することができる。他の実施形態において、他の手法を採用して、選択されたデータフローの配信スループットを推定してもよい。
【0076】
604において、トランスポートマネージャシステム102
*とユーザ機器104との間にネットワーク輻輳があるかどうかについて、決定が行われる。一実施形態において、このことは、ユーザ機器104にダウンロードされるファイルセグメントに関連付けられた選択されたデータフローについて、現在決定された配信スループットを過去の(historic)ピークスループットと比較することを伴うことができる。ネットワーク輻輳が検出されない場合、処理600は602に戻り、そうでない場合、処理600は606に移る。602及び604に関連した具体的な詳細が、下記で
図6Bの処理650を参照して提供されることに留意されたい。
【0077】
604において決定されたネットワーク輻輳のレベルに基づいて、606において、ターゲット配信スループットが算出される。一実施形態において、推定されたターゲット配信スループットは、選択されたデータフローのピークスループットよりもより小さいスループットである。さらに、大抵の場合、ターゲット配信スループットは、602において決定されるスループットより小さい。一実施形態において、ターゲット配信スループットは、ネットワーク輻輳の決定されたレベルに少なくとも部分的に基づいて算出することができる。
【0078】
608において、宛先(例えば、ユーザ機器104)に対する選択されたデータフローの配信は、算出されたターゲット配信スループットレートにマッチする配信スループットレートを用いて宛先に対して選択されたデータフローを配信することにより、再開される。選択されたデータフローの配信は、少なくともデータフローが中止される(例えば、配信すべきさらなるデータがなくなるとき)まで継続することができ、このことは、いくつかの場合、データ配信が一時停止した後のタイムアウトに、あるいはフロー接続終了(tear-down)(例えば、TCP4ウェイハンドシェイク)、接続リセット、フロー活動タイムアウト、又はフローがもはやアクティブでないという同様の指標を観察することに基づくことができる。
【0079】
610において、トランスポートマネージャシステム102
*により受信される選択されたデータフローからのデータが、例えば、トランスポートマネージャシステム102
*のキュー206にバッファリングされる(例えば、キューイングされる)。
【0080】
612において、宛先に対する選択されたデータフローの配信は、ターゲット配信スループットを達成するように、宛先(例えば、ユーザ機器104)に対してのトランスポートマネージャシステム102
*に記憶されたバッファリングされたデータのフローを調節することにより、調整される。
【0081】
614において、(604において推定された)ネットワーク輻輳推定が更新される必要があるかどうかについて、決定が行われる。上記更新が必要とされない場合、処理600は608に戻る。一方、ネットワーク輻輳推定が更新される必要がある場合、処理600は602に戻る。602に戻ることにより、新しい又は更新されたネットワーク輻輳レベルについて決定を行うことができ、それから、上記ネットワーク輻輳レベルを使用して、宛先に対するデータフローの配信レートを調節することができる。
【0082】
すなわち、いくつかの実施形態において、処理600は、選択されたデータフローの調整モード配信から出ることを引き起こすことと処理600の始めにループバックすることとにより、トランスポートマネージャシステム102
*と宛先との間のデータネットワーク108の輻輳状態の更新(例えば、該輻輳状態を決定するための、調整されていないパケットのサンプリング)を周期的に(例えば、N個の配信ファイルセグメントごと、1つ又は複数の所定時間間隔の後、又は閾量のデータが配信された後に)トリガすることができる。
【0083】
いくつかの実施形態において、推定されたネットワーク輻輳に対する更新が必要とされるかどうかに影響し得る条件には、例えば、トランスポートマネージャシステム102
*と通信する他のユーザ機器端末からの他の接続が、同じデータネットワーク108の輻輳状態又はそのボトルネックスループット部分について最近報告したかどうかが含まれる。しかしながら、実施形態は、更新が必要とされるかどうかに影響する他の条件を使用してもよい。
【0084】
図6Bを参照すると、
図6Bは、一実施形態に従う、選択されたデータフローの配信スループットを決定し、かつネットワーク輻輳があるかどうかを決定する処理650を例示する。処理650は、
図6Aの動作602及び604に一般に対応する。いくつかの実施形態において、処理650は、
図2A、
図2B、
図2C、又は
図2Dのトランスポートマネージャ102
*が実施することができる。処理650は、652において、選択されたデータフロー(例えば、
図5Aの動作502及び504により選択される)が測定されるとき、開始する。いくつかの実施形態において、選択されたデータフローの測定は、トランスポートマネージャシステム102
*によりユーザ機器104に送られる選択されたデータフローに関連付けられたパケットを数えることを伴うことができる。
【0085】
654において、タイマが開始される。タイマがいったん開始すると、トランスポートマネージャシステム102
*(及び、より具体的にフローマネージャ212
*)は、トランスポートマネージャシステム102
*により送られている選択されたデータフローに関連付けられたパケットを数えることを継続する。上記数えることは、少なくとも、ダウンストリームネットワーク配信スループットの信頼可能な定常状態推定を達成するのに十分なデータが送られ及び/又は配信されるまで、継続することができる。この決定は、経過時間、配信レート、トランスポートレイヤACKサイクルの数、配信データのボリューム、及び同様のもの、又はこれらの任意の組み合わせに基づくことができる。
【0086】
658において、現在の配信スループットが算出され、記録される。一実施形態において、上記算出は、656において行われるデータフロー測定に基づくことができる。
【0087】
660において、選択されたデータフローのピークスループットが更新されるべきかどうかについて、決定が行われる。ピークスループットは、いくつかの場合、特定のデータフローに関連付けられることに留意されたい。例えば、メディアコンテンツファイルに関連付けられたデータフローがユーザ機器104にダウンロードされているとき、上記データフローの配信スループットは、ネットワーク輻輳及び他のネットワーク条件(例えば、信号対雑音比又はSNR、ネットワークノード位置、信号強度、及び同様のもの)に依存して広く揺れ動く可能性がある。データフローのスループットは、ネットワーク輻輳がない状況に対応し得るピークスループットから、例えばネットワークが実質的に輻輳しているときのかなりより低いスループットに揺れ動くことになる。ゆえに、ピークスループットは、データフローが宛先に配信されている間、新しいピークが検出される場合、任意の所与の時点で更新される必要があり得る。
【0088】
選択されたデータフローのピークスループットが更新される必要があるとの決定が行われる場合、662において、ピークスループットが更新される。一方、更新が必要とされない場合、処理650は664に移り、ネットワーク輻輳があるかどうかについて決定が行われる。一実施形態において、ネットワーク輻輳は、算出されたスループットがピークスループットを下回るときに識別されることができる(上記ピークスループットは、再度、連続的又は周期的にリセットされて、輻輳していない動作におけるネットワーク配信能力の古い推定を回避することができる)。
【0089】
ネットワーク輻輳が検出されない場合、処理650は、少なくともデータフローが中止される(例えば、配信すべきさらなるデータがなくなる)まで、654に戻る。一方、ネットワーク輻輳が検出される場合、トランスポートマネージャシステム102
*とユーザ機器104との間のデータネットワーク108が実際輻輳しているとの決定が、トランスポートマネージャシステム102
*(及び、より具体的にフローマネージャ212
*)により行われる。
【0090】
処理650の測定フェーズ(例えば、処理652、654、及び656)の間、監視及びサンプリングされるデータフローは、連続的であってもよく、あるいはそうでなくてもよい。コンテンツサーバ106及び/又はユーザ機器104が選択されたデータフローにおける中断を引き起こした状況があり得る。例えば、メディアプレーヤアプリケーションがその実行時再生バッファを満たし、ビデオストリーミングサーバからのデータのその要求を一時的に一時停止することがある。上記シナリオにおいて、測定フェーズは、データフローのネットワーク配信性能の、人工的に低い推定を決定する可能性がある。このことに応じて、測定フェーズは、測定を進める前にデータフローがアクティブであることを確保するように、増大フェーズが(例えば、602の一部として)前に来てもよい。増大フェーズは、いくつかの実施形態において、データの閾ボリューム、閾活動時間、又はこれらの組み合わせ若しくはフローに関する同様の基準が達せられるまで、存続し得る。増大フェーズは、データフローの不活動が検出されるときはいつでも、再び入ることができる。
【0091】
図7Aは、一実施形態に従う、データフローの配信スループットを管理する処理を例示する。いくつかの場合、処理700は、
図5Bの556、558、及び560に一般に対応し得る。一実施形態において、処理700は、
図2A、
図2B、
図2C、又は
図2Dのフローマネージャ212
*が実施することができる。いくつかの場合、処理700は、トランスポートマネージャシステム102
*のフローマネージャ212
*がファイルセグメント配信要求と例えばコンテンツサーバからの対応する応答とを検出及び検査することができる(例えば、アプリケーションプロトコルレイヤ内に含まれる暗号化されていない情報を読むことができる)とき、特に有用であり得る。
【0092】
処理700は、702において、宛先(例えば、ユーザ機器104)に対して配信され、かつ選択されたデータフロー(例えば、
図5Bの動作552及び554により選択される)に関連付けられたファイルセグメントの配信スループットが決定されるとき、開始する。いくつかの実施形態において、ファイルセグメントは、ユーザ機器104からコンテンツサーバ106に送られるファイルセグメント要求(例えば、HTTPバイト範囲要求(HTTP Byte-Range Request))に応答して、トランスポートマネージャシステム102
*を介してユーザ機器104にリレーされている。ファイルセグメント要求は、トランスポートマネージャシステム102
*が検出することができる。(調整の介入なしの)ファイルセグメントのその後の配信は、それがトランスポートマネージャシステム102
*を通過するとき、例えば
図7Bに例示される処理を用いて、ダウンストリームネットワークスループットを調査するのに用いることができる。
【0093】
704において、トランスポートマネージャシステム102
*とユーザ機器104との間にネットワーク輻輳があるかどうかについて、決定が行われる。一実施形態において、このことは、ユーザ機器104にダウンロードされるファイルセグメントに関連付けられた選択されたデータフローについて、現在決定された配信スループットを過去のピークスループットと比較することを伴うことができる。ネットワーク輻輳が検出されない場合、処理700は702に戻り、そうでない場合、処理700は706に移る。702及び704に関連した具体的な詳細が下記で
図7Bの処理750を参照して提供されることに留意されたい。
【0094】
704において決定されたネットワーク輻輳のレベルに基づいて、706において、ターゲット配信スループットが算出される。一実施形態において、推定されたターゲット配信スループットは、選択されたデータフローのピークスループットよりもより小さいスループットになる。さらに、大抵の場合、ターゲット配信スループットは、702において決定されるスループットより小さくなる。一実施形態において、ターゲット配信スループットは、ネットワーク輻輳の決定されたレベルに少なくとも部分的に基づいて算出することができる。
【0095】
708において、選択されたデータフローに関連付けられ、ユーザ機器104により送られるファイルセグメント要求が、検出される。
【0096】
710において、要求されたファイルセグメントに関連付けられ、トランスポートマネージャシステム102
*により受信されるデータが、例えば、トランスポートマネージャシステム102
*のキュー206にバッファリングされる(例えば、キューイングされる)。
【0097】
712において、要求されたファイルセグメントに関連付けられたデータの宛先(例えば、ユーザ機器104)に対する配信が、ターゲット配信スループットを達成するように、トランスポートマネージャシステム102
*に記憶されたバッファリングされたデータのフローを調節することにより、調整される。
【0098】
714において、ネットワーク輻輳推定が更新される必要があるかどうかについて、決定が行われる。上記更新が必要とされない場合、処理700は708に戻る。いくつかの場合、708において元々検出されたであろうファイルセグメント要求は、ファイル全体についてであり得、その場合、輻輳更新が必要とされない(例えば、動作702及び704が必要とされない)とき、処理700は710にループバックしてファイルの配信を継続する。一方、ネットワーク輻輳推定が更新される必要がある場合、処理700は702に戻る。702に戻ることにより、新しい又は更新されたネットワーク輻輳レベルについて決定を行うことができ、それから、上記ネットワーク輻輳レベルを使用して、宛先に対するデータフローの配信レートを調節することができる。
【0099】
図7Aの714を参照して説明されるとおり、ネットワーク輻輳推定をいつ更新するかを決定するとき、様々なファクタを考慮することができる。例えば、ネットワーク輻輳推定は、いくつかの場合、周期的に(例えば、N個の配信ファイルセグメントごと、1つ又は複数の所定時間間隔の後、又は閾量のデータが配信された後に)更新されてよい。
【0100】
いくつかの実施形態において、推定されたネットワーク輻輳に対する更新が必要とされるかどうかに影響し得る条件には、例えば、トランスポートマネージャシステム102
*と通信する他のユーザ機器端末からの他の接続が同じデータネットワーク108の輻輳状態又はそのボトルネックスループット部分について最近報告したかどうかが含まれる。しかしながら、実施形態は、更新が必要とされるかどうかに影響する他の条件を使用してもよい。
【0101】
図7Bは、一実施形態に従う、選択されたデータフローに関連付けられたファイルセグメントの配信スループットを決定し、かつネットワーク輻輳があるかどうかを決定する処理750を例示する。処理750は、
図7Aの動作702及び704に一般に対応する。いくつかの実施形態において、処理750は、
図2A、
図2B、
図2C、又は
図2Dのトランスポートマネージャ102
*が実施することができる。処理750は、752において、選択されたデータフロー(例えば、
図5Bの動作552及び554により選択されたデータフロー)に関連付けられたファイルセグメント要求(例えば、HTTPバイト範囲要求)が検出されるとき、開始する。
【0102】
754において、タイマが開始される。いったんタイマが開始すると、トランスポートマネージャシステム102
*(及び、具体的にフローマネージャ212
*)は、宛先(例えば、ユーザ機器104)により送信される後のファイルセグメント要求をトランスポートマネージャシステム102
*が756において検出するまで、選択されたデータフローを監視することができる。いくつかの実施形態において、選択されたデータフローの監視は、例えば、トランスポートマネージャシステム102
*からのファイルセグメントパケットの成功裏の配信/受信に対して宛先(例えば、ユーザ機器104)により送信される戻りACKパケットについて監視することを伴うことができる。
【0103】
758において、要求されたファイルセグメントのスループットが算出され、記録される。いくつかの場合、スループットは、タイマの開始と後のファイルセグメント要求が756において検出された時との間の時間間隔中にユーザ機器104に配信された、要求されたファイルセグメントに関連付けられたデータの量を確認することにより、算出することができる。配信されたデータ量を上記時間間隔で分割することにより、スループットが算出されてもよい。
【0104】
いくつかの実施形態において、トランスポートマネージャシステム102
*がファイルセグメント応答の開始パケット及び終了パケットを識別することができる場合、開始パケットと終了パケットとの受信の間に経過する時間の量を決定することが別法として用いられて、ファイルセグメント要求コマンドのタイミングを参照する必要なく、ファイルセグメントのダウンストリームスループットを直接測定することができる(例えば、file_segment_size/time_interval)。配信をファイルセグメントに区分する同様の方法が、ファイル全体に対して単一のファイル要求のみ発生し得るシナリオにおいて使用されてもよい。
【0105】
760において、選択されたデータフローのピークスループットが更新されるべきかどうかについて、決定が行われる。ピークスループットは、いくつかの場合、特定のデータフローに関連付けられることに留意されたい。例えば、メディアコンテンツファイルに関連付けられたデータフローがユーザ機器104にダウンロードされているとき、データフローの配信スループットは、ネットワーク輻輳と他のネットワーク条件(例えば、信号対雑音比又はSNR、ネットワークノード位置、信号強度、及び同様のもの)に依存して広く揺れ動く可能性がある。データフローのスループットは、ネットワーク輻輳がない状況に対応し得るピークスループットから、例えばネットワークが実質的に輻輳しているかなりより低いスループットに揺れ動くことになる。ゆえに、ピークスループットは、データフローが宛先に配信されている間、新しいピークが検出される場合、任意の所与の時点において更新される必要があり得る。
【0106】
選択されたデータフローのピークスループットが更新される必要があるとの決定が行われる場合、762において、ピークスループットが更新される。一方、更新が必要とされない場合、処理750は764に移り、ネットワーク輻輳があるかどうかについて決定が行われる。一実施形態において、ネットワーク輻輳は、算出されたスループットがピークスループットを下回るときに識別されることができる(上記ピークスループットは、再度、連続的又は周期的にリセットされて、輻輳していない動作におけるネットワーク配信能力の古い推定を回避することができる)。
【0107】
ネットワーク輻輳が検出されない場合、処理750は、少なくともデータフローが中止される(例えば、配信すべきさらなるデータがなくなる)まで、754に戻る。一方、ネットワーク輻輳が検出される場合、トランスポートマネージャシステム102
*とユーザ機器104との間のデータネットワーク108が実際輻輳しているとの決定が、トランスポートマネージャシステム102
*(及び、より具体的にフローマネージャ212
*)により行われる。
【0108】
いくつかの実施形態において、ネットワークタイプ、ネットワークアタッチ(attachment)情報(例えば、基地局ID、セルID)がトランスポートマネージャシステム102
*に利用可能である場合、輻輳決定は、こうした情報に影響されてもよい。
【0109】
いくつかの実施形態において、トランスポートマネージャシステム102
*は、輻輳を検出する別の方法、例えば、トランスポートレイヤセグメント/ACKのダウンストリームラウンドトリップ時間(RTT)を算出すること及びRTTの変化のレート(例えば、輻輳が増加するときに増加する)を観察することなどを用いてもよい。RTT及びACK処理は、トランスポートレイヤ(例えば、TCP又はUDP)以外のプロトコルレイヤを用いて実施されてもよい。
【0110】
いくつかの場合、ユーザ機器104に配信されるべき要求されたファイルセグメントは、758におけるダウンストリームネットワーク配信スループットの安定的な定常状態推定を可能にする十分大きいデータサイズを有する。この決定は、合計経過時間、順次的送信者/受信者トランスポートレイヤACKサイクルの数、配信データのボリューム、又は同様の基準に基づくことができる。しかしながら、上記要件は、他の場合において必要でないことがある。
【0111】
いくつかの例において、定常状態は、トランスポートレイヤプロトコル輻輳制御状態機械が多くのデータパケット送った後にのみ達成される可能性がある。一般に、単一のトランスポートレイヤセグメント又は少数のセグメントは十分でない可能性がある。配信セッションプロトコルに依存して、単一のファイルセグメント応答で十分である可能性があり、あるいは複数の順次的要求/応答サイクルが必要とされる可能性があり、その場合、応答配信スループット測定が平均され、あるいはフィルタされてもよい。例えば、現代のストリーミングメディアプロトコルにおいて、ファイル要求はしばしば、データのエンコードされたビデオ「チャンク」(例えば、128kバイト)に対して行われ、上記データは、常時ではないがしばしば、ネットワーク定常状態スループットキャパシティの安定的な推定を可能にするほど十分大きい。
【0112】
いったん定常状態が確立されると、測定されたスループットを758において算出することができ、必要な場合、ピークスループット推定を762において更新することができる。
【0113】
ダウンストリームネットワーク輻輳が764及び766において検出される場合、トランスポートマネージャシステム102
*は、選択されたデータフローに関して調整モードで動作することができる(例えば、
図7Aに示される動作710及び712)。
【0114】
上記で簡潔に説明されたように、いくつかの実施形態において、ユーザ機器104は、エージェント312を採用することができる。エージェント312は、1つ以上の機械読取可能命令を実行する1つ以上のプロセッサ304(又は、他タイプのプログラマブル回路)により実装されるソフトウェアエージェントであり得る。別の実施形態において、エージェント312は、ユーザ機器104とインターフェースするアクセスネットワーク(例えば、データネットワーク108)に関連付けられ得る他のネットワーク要素(例えば、基地局、基地局コントローラ、及び同様のもの)に常駐してもよい。
【0115】
いくつかの実施形態において、エージェント312は、特定の動作及びタスク、例えば、端末識別(例えば、ユーザ機器識別)及びネットワーク状態報告などで、トランスポートマネージャシステム102
*を支援することができる。さらに、エージェント312は、トランスポートマネージャシステム102
*を他の動作及びタスクで支援してもよい。
【0116】
図8は、一実施形態に従う、エージェントと対話する処理を例示する。いくつかの実施形態において、処理800は、トランスポートマネージャシステム102
*が実施することができる。
【0117】
処理800は、トランスポートマネージャシステム102
*がエージェント312を登録するとき、開始する。エージェント312の登録は、データフロー(例えば、ユーザ機器104とリモートコンテンツサーバとの間に存在し得る)の発見を支援するように、エージェント一意識別子(UI)(例えば、エージェントの国際移動局機器アイデンティティ(international mobile station equipment identity)(IMEI))とエージェントに関連付けられた対応するユーザ機器の現在のネットワークデータアドレス(例えば、IP)とに基づくことができる。登録は、ユーザ機器104とトランスポートマネージャシステム102
*との間の制御データ接続のセットアップをさらに可能にし、これにより、「プッシュ」メッセージ能力を容易にすることができる。登録は、ユーザ機器104がオンラインになる、そのネットワークデータアドレスを変更する、及びサービングネットワークタイプを変更するなどのときはいつでも、繰り返されることができる。
【0118】
804において、トランスポートマネージャシステム102
*(又は、フローディテクタシステム112)は、未知のファイル配信セッションの開始を検出することができる。登録の間、エージェントとトランスポートマネージャシステム102
*とは、特定の情報、例えば、エージェント312に関連付けられたユーザ機器104のIPアドレスなどを交換することができる。
【0119】
806において、未知のファイル配信セッションに関連付けられたエージェント312のアイデンティティが、上記ファイル配信セッションのパケットを検査することにより決定される。例えば、未知のファイルの配信に関連付けられたユーザ機器104(これは特定のエージェント312にさらに関連付けられ得る)は、いくつかの場合、(例えば、登録の間にエージェント312により報告される、ユーザ機器104のIPアドレスで識別される)TCP/IPパケットのアプリケーションペイロードを検査することにより、検出されることができる。
【0120】
808において、トランスポートマネージャシステム102
*は、ユーザ機器104に信号伝達して、ユーザ機器104に対するデータフローを管理することにおいてトランスポートマネージャシステム102
*に有用であり得る情報を報告することを開始するようにエージェント312に促すことができる。いくつかの実施形態において、報告され得る情報には、周期的に決定及び報告され得る(例えば、最大スループットキャパシティの観点での)現在の無線リンク品質、現在のネットワークタイプ(例えば、第3世代(3G)、高速パケットアクセス(HSPA)、ロングタームエボリューション(LTE)、ワイヤレスフィデリティ(Wi−Fi)、及び同様のもの)、現在のアタッチ位置(例えば、基地局識別(BSID)、Cell_ID、緯度/経度、グローバルポジショニングシステム(GPS)、サービスセット識別(SSID)、及び同様のもの)、現在のサービングオペレータ(例えば、「XYZワイヤレス」)、ユーザ装置リソースステータス(例えば、低バッテリ、モビリティステータス、プロセッサステータス)、ユーザ装置アプリケーションステータス(例えば、「メディアプレーヤアプリケーションXYZアクティブ」)、及び同様のもののうち、1つ以上が含まれる。
【0121】
810において、トランスポートマネージャシステム102
*は、ファイル配信セッションの終了を検出することができる。812において、トランスポートマネージャシステム102
*は、ファイル配信セッションの終了を検出した後、報告することを中止するようにユーザ機器104に信号伝達することができる。いくつかの実施形態において、エージェント312は、独立して(例えば、ネットワークタイプ、低バッテリ、アクティブデータセッションなし、航空機モードに入ること、及び同様のものに対する変化に基づいて)、報告することを停止してもよい。
【0122】
いくつかの実施形態において、エージェント312は、さらに又は別法として、(例えば、関連付けられたユーザ機器104とリモートデータ配信ソースとの間の、又はユーザ機器端末の集合にサービスする基地局の)ネットワークのスループットキャパシティについてのその独自の評価を行ってもよく、上記もまたトランスポートマネージャシステム102
*に報告されることができる。上記シナリオにおいて、トランスポートマネージャシステム102
*は、エージェント312からの報告を使用して、ネットワーク輻輳についてのその独自の評価に代わって又は追加で輻輳を決定することができる。
【0123】
いくつかの実施形態において、送信者(例えば、コンテンツサーバ106)と受信者(例えば、ユーザ機器104)との間のトランスポートレイヤ接続経路を、トランスポートマネージャシステム102
*において2つの経路に分けることが可能であり得る。デフォルトの単一経路バージョンにおいて、トランスポートマネージャシステム102
*により調整することは、影響されるトラフィックのレートを変調するように意図された制御メカニズムとしてトランスポートレイヤセグメントのタイミングを変えることができる(RTT変動)。いくつかのトランスポート輻輳制御アルゴリズム(例えば、TCP輻輳回避)は、エンドツーエンドRTTの大きいステップの変化に対して不十分に応答する可能性がある。経路を、独立したトランスポートレイヤ状態機械を有する2つの別個の経路に分けることは、トランスポートマネージャシステム102
*が別個のトランスポートレイヤ接続のエンドツーエンドスループットレートを変調することを依然として可能にすると同時に、TCP輻輳制御アルゴリズムと干渉することなく調整を実行する1つの方法であり得る。
【0124】
いくつかの状況において、トランスポートマネージャシステム102
*は、フローの受信者から来るパケット受信ACKを信頼可能に検出することができない可能性がある(例えば、暗号化されたペイロードを有する、肯定応答されないUDP)。このことは、トランスポートマネージャシステム102
*によるネットワーク輻輳及びトラフィックフローの配信性能の決定を複雑化する可能性がある。こうした状況において、宛先(例えば、ユーザ機器104)に、いくつかの方法のうち1つにおいてフロー内にACKパケットを送信させるように、トランスポートマネージャシステム102
*が動作するように設計されてもよい。
【0125】
例えば、トランスポートマネージャシステム102
*は、いくつかの実施形態において、各々の1つ以上のUDPパケットがトランスポートレイヤフロー内で送られた後、さらなるトランスポートレイヤ(例えば、TCP)パケットを挿入することができ、こうしたパケットを受信するエージェント312は、挿入されたTCPパケットに肯定応答することになる。挿入されたTCPパケットは、同じユーザ機器104上のUDPパケット宛先アプリケーションでなく、エージェント312に向けられることができる。それから、ユーザ機器104による1つ以上のUDPパケットの成功裏の受信を、対応するTCP ACKを受信するとトランスポートマネージャシステム102
*が推論することができる。他の実施形態において、トランスポートマネージャシステム102
*は、肯定応答されないトランスポートフローパケット(例えば、UDP)又は別のプロトコルレイヤのヘッダ又はペイロード内にフラグを設定し、あるいは拡張フィールドを挿入することができ、上記のことは、受信ユーザ機器104又はアプリケーション314に、トランスポートフローパケットの受信に肯定応答させ、あるいは、上記のことは、トランスポートフローパケットが受信されたことを示す。
【0126】
別の状況(例えば、UDP又はTCP)において、トランスポートマネージャシステム102
*は、フローの受信者からのパケット受信ACKを検出することを必要としない、又はエージェント312を必要としないモードで動作することができる。
【0127】
上記で説明された方法及び例は、リモートサーバ(例えば、コンテンツサーバ106)からユーザ機器104への方向に流れるコンテンツデータに一般に関連するが、上記で説明された方法及びシステムは、上記で説明された方法及びシステムの基本詳細を変更することなく、端末ユーザ機器104からリモートサーバにコンテンツデータを配信する反対方向に等しく適用されることができる。
【0128】
本テクノロジーの態様が具体的な例に関して説明されたが、本テクノロジーの実施形態はこれら例に限定されない。例えば、アイドルネットワークキャパシティを条件付きで使用することによるデータのダウンロードが、本テクノロジーの範囲及び主旨から逸脱することなく様々な他のアルゴリズム及び処理に従って実行され得ることを当業者は認識するであろう。