JP4920220B2 - ピアツーピアネットワークでの受信側主導のシステム及び方法 - Google Patents

ピアツーピアネットワークでの受信側主導のシステム及び方法 Download PDF

Info

Publication number
JP4920220B2
JP4920220B2 JP2005251994A JP2005251994A JP4920220B2 JP 4920220 B2 JP4920220 B2 JP 4920220B2 JP 2005251994 A JP2005251994 A JP 2005251994A JP 2005251994 A JP2005251994 A JP 2005251994A JP 4920220 B2 JP4920220 B2 JP 4920220B2
Authority
JP
Japan
Prior art keywords
client
serving
peer
media
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2005251994A
Other languages
English (en)
Other versions
JP2006079606A5 (ja
JP2006079606A (ja
Inventor
リー チン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/934,823 external-priority patent/US7664109B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006079606A publication Critical patent/JP2006079606A/ja
Publication of JP2006079606A5 publication Critical patent/JP2006079606A5/ja
Application granted granted Critical
Publication of JP4920220B2 publication Critical patent/JP4920220B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/756Media network packet handling adapting media to device capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/764Media network packet handling at the destination 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Description

本発明は、緩やかに結合されたピアツーピア(P2P)ネットワークでの受信側主導(receiver-driven)のP2Pメディアストリーミングに関し、詳細には、複数のピアから1つのクライアントに、クライアントのリアルタイムの調整および制御の下で、ピアツーピアコラボレーションを提供せずにメディアをストリーミングするシステムおよび方法に関する。
最近の市場調査では、2004年に、米国の半数を超えるインターネットユーザが何らかの形のストリーミングメディアにアクセスしたことが示されている。ストリーミング音楽へのアクセスは非常に人気の高いアクティビティであるが、ストリーミングビデオの人気も急速に高まっている。
残念ながら、典型的なWebページと異なり、ストリーミングメディアファイルは、通常、極めてサイズが大きい。例えば、毎秒2メガビット(Mbps)で符号化された3分間の映画予告編は、使用されるコーデックによっては45メガバイト(MB)のメディアファイルを生じ得る。ストリーミングメディアによって対処されなければならない別の問題が、パケット配信のクリティカルタイミングである。その結果として、ストリーミングメディアファイルのサイズの大きさおよびパケット配信タイミング要件により、典型的なストリーミングメディアサーバは、セットアップし、運営するのに比較的高くつくことになる。例えば、ある最新の見積もりは、ストリーミングメディアの実勢価格を、サービング(serving)トラフィック1GBあたり10ドルと設定している。45MBのファイルサイズの例を使用すると、これは、配信される映画予告編1本当たり0.45ドルの帯域幅コストを生じ得る。明らかに、そのようなコストは、メディアストリーミングの量が増大するにつれて急速に拡大し得る。
メディアストリーミングの比較的高いコストへの1つの解決法は、「ピアツーピア」(P2P)ネットワークを使って個々のクライアントにメディアストリーミングを提供することである。一般に、P2Pネットワークの基本的考え方とは、ストリーミングメディアを配信する際に各ピアノードにメディアサーバを支援させるというものである。メディアストリーミングでのP2Pネットワークの成功は、P2Pネットワークを実施する多数の従来の手法を生み出している。
例えば、「エンドシステムマルチキャスト」および「ピアキャスト」(PeerCast)と呼ばれる従来のP2P方式は、メディアストリーミングにアプリケーションレベルマルチキャスト(ALM)を使用する。具体的には、ESMでもピアキャストでも、各ピアノードが、既存のIPネットワークを介したオーバーレイツリー(overlay tree)に自己編成される。次いで、ストリーミングデータがそのオーバーレイツリーに沿って配信される。その場合、帯域幅を提供するコストは、それらのピアノードの間で分担され、それによって、メディアサーバを運営する帯域幅負担(ゆえに金銭的コスト)が低減される。しかしながら、ESMでもピアキャストでも、その配信ツリーの各葉ノードは、ストリーミングメディアを受け取るだけで、コンテンツ配信には貢献しない。
他の2つの従来方式、すなわち「CoopNet」および「SplitStream」は、ESMやピアキャストなどの方式のコンテンツ配信制限に、配信元とピアノードにまたがる複数の配信ツリーを使って対処する。その場合、CoopNetおよびSplitStreamにおける各ツリーは、別個のストリーミングメディアを送信することができる。その結果、すべてのピアノードがコンテンツ配信に関与することができる。
従来のP2Pメディアストリーミング解決法の別の例には、「OStream」と呼ばれるストリーミング方式が含まれる。Ostreamは、「キャッシュアンドリレー」の手法を使って、各ピアノードが、各クライアントに、そのキャッシュから以前に配信されたメディアを供給することができるようにする。別の従来のシステム、「GnuStream」は、よく知られている「グヌーテラ(Gnutella)」システムの上に構築される受信側主導のP2Pメディアストリーミングシステムを提供する。「CollectCast」と呼ばれるさらに別の従来方式は、ネットワーク変動およびピア障害に動的に適合しつつ、最適なストリーミング品質を達成する可能性の最も高いサービングピア(serving peers)を積極的に探し出す。
別の種類の従来方式は、1つのファイルの各部分がいくつかのピアにわたって広く分散される一種の分散ファイル共用を提供する。その場合、クライアントがそのファイルのダウンロードを要求するたびに、その要求は、サーバから直接にではなく、複数のピアからサービング(serving)される。例えば、「Swarmcast」と呼ばれるそのような一方式は、人気のあるダウンロード可能なコンテンツを提供するあるWebサイトに置かれた負荷を、ファイルをずっと小さな部分に分割することによって広く分配する。ユーザがSwarmcastクライアントプログラムをインストールすると、そのユーザのコンピュータは、他のユーザのコンピュータと自動的に協力して、それらがすでにダウンロードしてあるデータの各部分を順に受け渡し(すなわちサービスを提供し)、それによって中央サーバ上の全体的サービング負荷を低減させる。「ビットトレント(BitTorrent)」と呼ばれる類似の方式は、よく似た原理に従って機能する。具体的には、低い負荷では、ビットトレント方式を使って大きなファイルを供給するWebサイトは、典型的なHTTPサーバそっくりに振る舞う。というのは、そのサイトがそのサービングの大部分をそれ自体で実行するからである。しかしながら、サーバの負荷が何らかの比較的高いレベルに達すると、ビットトレントは、他のダウンロード側クライアントにサービングするためにアップロード負担の大部分がダウンロード側クライアント自体によって担われる状態にシフトする。
残念なことに、Swarmcastやビットトレントといった方式は、P2Pネットワークサイズの関数として劇的に増大するサーバ容量のためにファイルの各部分を分散させるのには非常に有用であるが、これらのシステムは、効率良くメディアをストリーミングするのには適合されていない。具体的には、Swarmcastやビットトレントといった方式は、ダウンロードされる1つまたは複数のファイルを構成するデータパケットの配信の順序またはタイミングには注意を払わない。これらのファイルは、単に、様々なピアから1つのクライアントに分割してブロードキャストされ、次いで、クライアントコンピュータ上で元のファイルを再構築するために、単に、ローカルで正しい順序に組み立て直されるだけである。しかしながら、ストリーミングメディアの場合には、そのメディアの効率良いストリーミングを提供するために、データパケットのタイミングおよび順序が慎重に考慮され、制御されなければならない。
したがって、求められているのは、緩やかに結合されたピアの集合体からクライアントへのメディアストリーミングの受信側主導の制御のシステムおよび方法である。そのようなシステムは、ピア間の通信も協働も必要とすべきではない。さらに、そのようなシステムおよび方法は、クライアントに任意の必要な計算操作の大部分を実行するよう要求することにより、各ピアに出される計算要求を最小限に抑えるべきである。
本明細書で説明する「PeerStreamer」は、緩やかに結合されたP2Pネットワークでの受信側主導のピアツーピア(P2P)メディアストリーミングを提供する。ネットワーク中の各ピアは、単純な動作だけを実行し、ストリーミングメディアの全部または一部をキャッシュすることができ、他のピアと協働せず、信頼性が低い可能性があり、任意の所与のストリーミングセッション中にオフラインになることも、オンラインになることもある。ネットワーク中のクライアント(または受信側)は、各ピアを調整し、複数のピアからメディアをストリーミングし、負荷均衡化を実行し、各ピアのオンライン/オフライン状態を処理し、ストリーミングメディアの復号化およびレンダリングを実行するようにリアルタイムで動作する。
本明細書で説明するPeerStreamerシステムは、複数のクライアントおよびピアを備える大規模なP2Pネットワークでの使用に適用可能であるが、以下の説明では、説明を明確にするために、一般的に個々のクライアントに言及する。説明するPeerStreamerによって提供されるシステムおよび方法が複数のクライアントに適用可能であることを当分野の技術者は理解するであろう。また、本明細書で説明するピアは、受信側またはクライアントにメディアを供給するのに使用されるため、P2Pネットワーク中のピアのクラスタを、本明細書では一般に、ピア、または「サービングピア」と呼ぶ。また、これらの「サービングピア」を、本明細書で説明する、個々のストリーミングメディアファイルがそこから最初に発信される「メディアサーバ」と混同すべきでないことにも留意すべきである。
一般に、PeerStreamerは、受信側主導のメディアストリーミングを提供する。PeerStreamer動作は、各受信側クライアントが、要求されたストリーミングメディアの全部または一部を保持する近隣のピアのリストを取り出すことから開始する。このコンテキストでは、メディアサーバは、サービングピアの1つとしても働くことができることに留意されたい。このリストは、サービングメディア(serving media)の完全な、または一部のコピーを保持する1つまたは複数の近隣のサービングピアの集合のIPアドレスおよびリスニングポートを含む。このリストを取り出す方法には、1)メディアサーバから直接リストを取り出すこと、2)知られているサービングピアからリストを取り出すこと、および3)分散ハッシュ表(DHT)の手法を使ってサービングピアを識別することが含まれる。
クライアントは、利用可能なサービングピアのリストを取り出すと、各サービングピアに接続し、その「可用性ベクトル」を獲得する。一般に、各サービングピアごとの可用性ベクトルは、そのサービングピアによって保持されているメディアの正確な部分の簡潔な記述である。次いで、クライアントがこれらの可用性ベクトルを使って、正確に、符号化されたメディアのどのブロックが様々なサービングピアによって保持されているか判定する。
例えば、特定のサービングピアがサービングメディア全体を保持している場合、そのピアの可用性ベクトルは、そのサービングピアが完全なメディアコピーを保持していることを示す単一のフラグとすることができる。同様に、サービングピアがサービングメディアの一部だけを保持している場合、そのサービングピアの可用性ベクトルは、クライアントに、そのサービングピアによってメディアのどの部分が保持されているか、例えば、そのサービングピアによって保持されている各パケットのブロック数およびブロック索引などを知らせる。
さらに、以下で説明する消去符号化技法(erasure coding techniques)など、別の符号化が使用されている場合、可用性ベクトルは、サービングピアに割り当てられたメディア消去符号化キー、およびそのサービングピアによって保持されている消去ブロック(erasure blocks)の数を含むことになる。また、サービングピアが消去符号化を使用し、メディアも埋め込み符号化されている場合、可用性ベクトルは、割り当てられたメディア消去符号化キー、埋め込み符号化によって使用される異なるビット速度レベルでの各パケットの消去ブロックの数を含むことになる。
一般に、符号化メディアファイルは、通常、「メディアヘッダ」と、それに続く符号化メディアを表すいくつかのメディアパケット(すなわち「メディア本体」)を含む。可用性ベクトルが与えられたと仮定すると、次のステップは、クライアントが、そのピアクラスタからストリーミングされる符号化メディアファイルから導出されるメディアヘッダおよび「メディア構造」の長さを取り出すことである。パケットの集合のメディア構造は、単に、パケットヘッダにパケットビットストリーム長を加えたものである。これらの長さが取り出された後、クライアントは、そのメディアヘッダおよびメディア構造の「データユニットID」を計算し、協働してそのピアクラスタ中の1つまたは複数のピアからそれらを取り出す。
メディアヘッダが到着すると、クライアントはそのメディアヘッダを分析し、次いで、ストリーミングされる特定の種類(すなわち、MPEG1/2/4、WMA、WMVなど)のメディアを復号化し、レンダリングし、または再生するのに必要とされるあらゆるオーディオ/ビデオデコーダおよびレンダリングデバイスを構成し、または初期設定する。この初期セットアップ段階が完了すると、クライアントは、続いて、以下で説明するように、ピアクラスタからのメディア本体の進行中のストリーミングを調整する。
具体的には、特定のストリーミングメディアの前述のメディア構造が与えられたと仮定すると、クライアントは、そのストリーミングメディア(すなわちメディア本体)のパケットのデータユニットIDを計算し、次いで、それらのパケットを1つずつ取り出す。関連する一実施形態では、PeerStreamerは、埋め込み符号化メディアを使用し、その場合、ストリーミングビット速度は、利用可能なサービング帯域幅およびクライアントキュー状況によって変動する。この場合、メディア本体のメディアパケットの進行中の取り出しは、利用可能な帯域幅に基づき最小速度ひずみを提供するパケットに対応する。
いずれの場合も、クライアントは、サービングピアリストを定期的に更新し、可能な新規のサービングピアに接続する。検査済みの一実施形態では、クライアントは、各可能なサービングピアごとに定期的な従来方式のTCP接続関数呼び出しを発することによって、可能な新規のサービングピアの有無をチェックした。クライアントは、新規のサービングピアへの接続を確立した後、まず、前述の可用性ベクトルを取り出す。次いで、その新規のピアは、受信側/クライアントの指示で、クラスタ中のその他のアクティブなピアに加わることができる。次いで、クライアントは、それらのピアを調整し、それらのサービング帯域幅およびコンテンツ可用性に従って各ピアのサービング負荷を均衡化させ、切断され、または時間切れになったピアの未完了の要求をその他のアクティブなピアの1つまたは複数に宛先変更する。次いで、ストリーミング動作は、そのストリーミングメディア全体が受け取られ、あるいはストリーミング動作がユーザによって定義されるまで、このようにして続行される。
一実施形態では、PeerStreamerは、高速消去耐性符号化(high rate erasure resilient coding)を使って、複数のサービングピアが競合せずに一部のメディアを保持することを可能にし、それによって、どこでどの特定のブロックが取り出されるかに関わらず、クライアントが単純に固定数の消去符号化ブロックを取り出すようにする。この場合、受け取られた消去符号化ブロックは、クライアントのステージングキューに置かれ、次いでそこで、メディアパケットが組み立てられる。次いで、完全に組み立てられたメディアパケットが下流に送られて、ストリーミングされている特定の種類のメディアを復号化し、レンダリングし、または再生するために構成され、または初期設定されているあらゆるオーディオ/ビデオデコーダおよびレンダリングデバイスを使って復号化され、再生される。この場合、ステージングキューの長さ、要求キューの長さ、および圧縮オーディオ/ビデオバッファの長さを制御することにより、クライアントは、ある程度の所望の期間(検査済みの実施形態では、4秒間程度)のストリーミングバッファを維持する。次いで、この組み合わされたバッファを使って、ネットワーク損失およびジッタに対処する。
前述の概要を考察すれば、本明細書で説明するPeerStreamerがP2Pネットワークにおいて受信側主導のメディアストリーミングを提供する独自のシステムおよび方法を提供することが明らかである。前述の利点以外にも、以下の詳細な説明を、添付の図面と併せて読めば、PeerStreamerの他の利点が明らかになるであろう。
本発明の特有の特徴、態様および利点は、以下の説明、添付の特許請求の範囲、および添付の図面を参照すればより良く理解されるであろう。
以下の本発明の好ましい実施形態の説明では、本明細書の一部を形成し、本発明が実施され得る具体的実施形態を例として示す、添付の図面を参照する。他の実施形態を利用することもでき、本発明の範囲を逸脱することなく構造的変更を加えることもできることが理解される。
1.0 例示的動作環境
図1に、本発明が実施され得る適当なコンピューティングシステム環境100の一例を示す。コンピューティングシステム環境100は、適当なコンピューティング環境の一例にすぎず、本発明の用途または機能の範囲に関するどんな限定を示唆するものでもない。また、コンピューティング環境100は、例示的動作環境100に示す構成要素のいずれか1つまたはそれらの組合せに関連するどんな依存関係または要件を持つものであるとも解釈されるべきではない。
本発明は、他の多数の汎用または専用コンピューティングシステム環境または構成と共に動作する。本発明と共に使用するのに適し得る公知のコンピューティングシステム、環境、および/または構成の例には、それだけに限らないが、パーソナルコンピュータ、サーバコンピュータ、携帯電話やPDAといったハンドヘルド、ラップトップまたはモバイルコンピュータまたは通信機器、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、前述のシステムまたは機器のいずれかを含む分散コンピューティング環境などが含まれる。
本発明は、マイクロホンアレイ198の構成要素を含むハードウェアモジュールと組み合わせて、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況で説明され得る。一般に、プログラムモジュールには、個々のタスクを実行し、または個々の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、タスクが、通信ネットワークを介してリンクされたリモート処理装置によって実行される分散コンピューティング環境でも実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルとリモート両方のコンピュータ記憶媒体に位置することができる。図1を参照すると、本発明を実施する例示的システムは、コンピュータ110の形で汎用コンピューティングデバイスを含む。
コンピュータ110の構成要素には、それだけに限らないが、処理装置120、システムメモリ130、およびシステムメモリを含む様々な構成要素を処理装置120に結合するシステムバス121が含まれ得る。システムバス121は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のいずれでもよい。例をあげると、それだけに限らないが、そのようなアーキテクチャには、産業標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(VESA)ローカルバス、およびメザニンバスともいう周辺装置相互接続(PCI)バスが含まれる。
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスされ得る任意の利用可能な媒体とすることができ、それには揮発性と不揮発性、着脱式と固定式両方の媒体が含まれる。例をあげると、それだけに限らないが、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体が含まれ得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータといった情報の記憶のための任意の方法または技術で実施された揮発性および不揮発性、着脱式および固定式の媒体が含まれる。
コンピュータ記憶媒体には、それだけに限らないが、RAM、ROM、PROM、EPROM、EEPROM、フラッシュメモリなどのメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)などの光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶などの磁気記憶装置、あるいは所望の情報の記憶に使用することができ、コンピュータ110によってアクセスされ得る他の任意の媒体が含まれる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波や他の搬送機構などの変調データ信号として実施し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性の1つまたは複数が、その信号中に情報を符号化するようなやり方で設定され、または変更されている信号を意味する。例をあげると、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体が含まれる。前述のいずれかの組合せも、コンピュータ可読媒体の範囲内に含むべきである。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形でコンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、始動時などに、コンピュータ110内の諸要素間の情報転送を支援する基本ルーチンを含み、通常はROM131に格納される。RAM132は、通常、処理装置120から即座にアクセス可能であり、かつ/またはそれによって現在操作されているデータおよび/またはプログラムモジュールを含む。例をあげると、それだけに限らないが、図1には、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137が示されている。
コンピュータ110は、他の着脱式/固定式、揮発性/不揮発性コンピュータ記憶媒体も含み得る。例にすぎないが、図1に、固定式、不揮発性磁気媒体との間で読取りまたは書込みを行うハードディスクドライブ141、着脱式、不揮発性磁気ディスク152との間で読取りまたは書込みを行う磁気ディスクドライブ151、およびCD−ROMや他の光媒体などの着脱式、不揮発性光ディスク156との間で読取りまたは書込みを行う光ディスクドライブ155を示す。例示的動作環境で使用され得る他の着脱式/固定式、揮発性/不揮発性のコンピュータ記憶媒体には、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140などの固定式メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの着脱式メモリインターフェースによってシステムバス121に接続される。
前述の、図1に示す各ドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ110のためにコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの記憶を提供する。図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を格納するものとして示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じでも、異なっていてもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には、少なくともそれらが異なるコピーであることを示すために、図では異なる番号を付してある。ユーザは、キーボード162や、一般にマウス、トラックボール、タッチパッドと呼ばれるポインティングデバイス161などの入力装置を介してコンピュータ110にコマンドおよび情報を入力することができる。
他の入力装置(図示せず)には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、無線受信機、テレビまたは放送ビデオ受信機などが含まれ得る。上記その他の入力装置は、しばしば、システムバス121に結合された有線または無線のユーザ入力インターフェース160を介して処理装置120に接続されるが、例えば、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)、IEEE1394インターフェース、ブルートゥース(商標)無線インターフェース、IEEE802.11無線インターフェースといった他の従来方式のインターフェースおよびバス構造によっても接続され得る。さらに、コンピュータ110は、やはり、例えば、パラレル、シリアル、USB、IEEE1394、ブルートゥース(商標)といった従来方式の有線または無線インターフェースを含む、マイクロホンやマイクロホンアレイ198などの音声またはオーディオ入力装置、ならびに、オーディオインターフェース199を介して接続されたラウドスピーカ197またはその他の音声出力装置も含み得る。
モニタ191または他の種類の表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタ191以外に、コンピュータは、プリンタ196など他の周辺出力装置を含むこともでき、それらは、出力周辺インターフェース195を介して接続され得る。
コンピュータ110は、リモートコンピュータ180など、1つまたは複数のリモートコンピュータへの論理接続を使ってネットワーク化環境で動作し得る。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的ネットワークノードとすることができ、図1にはメモリ記憶装置181だけしか示していないが、通常は、コンピュータ110に関連して前述した要素の多くまたはすべてを含む。図1に示す論理接続には、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173が含まれるが、他のネットワークも含まれ得る。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットではよく見られるものである。
LANネットワーク環境で使用されるとき、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用されるとき、コンピュータ110は、通常、モデム172またはインターネットなどのWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160または他の適当な機構を介してシステムバス121に接続され得る。ネットワークで接続された環境では、コンピュータ110に関連して示すプログラムモジュール、またはその一部は、リモートのメモリ記憶装置にも格納し得る。例として、それだけに限らないが、図1に、メモリ装置181上にあるものとしてリモートアプリケーションプログラム185が示されている。図示のネットワーク接続は例示的なものであり、コンピュータ間で通信を確立する他の手段も使用され得ることが理解されるであろう。
以上で例示的動作環境について論じたが、この説明の残りの部分は、分散メディアストリーミングのための受信側主導のピアツーピア(P2P)ネットワークにおいて1つまたは複数のピアのクラスタに対する動的リアルタイムクライアント制御を実現する「PeerStreamer」を実施するプログラムモジュールおよびプロセスの説明に充てる。
2.0 序論
本明細書で説明する「PeerStreamer」は、緩やかに結合されたP2Pネットワークでの受信側主導のピアツーピア(P2P)メディアストリーミングを提供する。ネットワーク中の各ピアは、単純な動作だけを実行し、ストリーミングメディアの全部または一部をキャッシュすることができ、他のピアと協働せず、信頼性が低い可能性があり、任意の所与のストリーミングセッション中にオフラインになることも、オンラインになることもある。ネットワーク中の各クライアントは、ピアを調整し、複数のピアからメディアをストリーミングし、負荷均衡化を実行し、各ピアのオンライン/オフライン状態を処理し、ストリーミングメディアの復号化およびレンダリングを実行するようにリアルタイムで動作する。
本明細書で説明するPeerStreamerシステムは、複数のクライアントおよびピアを備える大規模P2Pネットワークでの使用に適用可能であるが、以下の説明では、説明を明瞭にするために、一般的に個々のクライアントに言及することに留意されたい。PeerStreamerによって提供される説明するシステムおよび方法が複数のクライアントに適用可能であることを当分野の技術者は理解するであろう。また、本明細書で説明するピアはメディアを受信側またはクライアントに供給するのに使用されるため、本明細書では、P2Pネットワーク中のピアのクラスタを、一般に、ピア、または「サービングピア」と呼ぶ。また、「サービングピア」を、本明細書で説明する、個々のストリーミングメディアファイルがそこから最初に発信される「メディアサーバ」と混同すべきでないことにも留意すべきである。
一般に、PeerStreamerは、図2で示すようなネットワークなどのP2Pネットワークで動作する。個々のストリーミングセッションでは、「サーバ」200は、最初にストリーミングメディアを発信するP2Pネットワーク中のノードであると定義される。「クライアント」(または受信側)210は、現在ストリーミングメディアを要求しているノードであると定義される。また、「サービングピア」220は、クライアントに、ストリーミングメディアの完全な、または一部のコピーを供給するノードであると定義される。
一般に、サーバ200、クライアント210およびサービングピア220は、すべて、インターネットなどのネットワークに接続されたエンドユーザノードである。サーバ200は常にストリーミングメディアを供給することができるため、サーバノードは、サービングピア220としても働く。また、サーバノード200は、例えば、利用可能なサービングピアのリストの維持、デジタル権限管理(DRM)機能の実行などといった、サービングピア220によって実行され得ないメディア管理機能も実行することができる。また、従来のP2P方式と同様に、本明細書で説明するPeerStreamerは、ますます多くのストリーミングピアノード220が配置されるにつれて増大される効率から恩恵を受けるものである。具体的には、ストリーミングピアノード220の数が増大するにつれて、メディアサーバ200上の負荷が減少し、それによって運営コストがより下がると同時に、各クライアントノード210は、個々のメディアストリーミングセッション時により良いメディア品質を受け取ることができるようになる。
また、他の多くのP2P型ネットワークと同様に、個々のノードの役割が変化し得ることも明らかなはずである。例えば、個々のノードは、ある特定のストリーミングセッションではクライアント210として働くことができ、別のセッションではサービングピア220として働くこともできる。さらに、個々のノードは、同時に、クライアントノード210とサーバ200またはサービングピア220の両方として働き、1つまたは複数の他のサービングピアから他のストリーミングメディアを受け取っている間に、同時に、1つまたは複数のメディアファイル、またはメディアファイルの一部をストリーミングすることができる。
ストリーミングセッションの間、クライアント210は、まず、所望のメディアの一部または全部を保持するいくつかの近隣のピア220を探し出し、次いで、(サーバ200を含み得る)複数のピアからそのメディアをストリーミングする。その結果として、各サービングピア220は、クライアント210のダウンロード要求の一部をサービングして全体のアップロード負担を低減することによってサーバ200を支援するように働く。その結果、クライアント210は、特に多くのクライアントがある場合には、しばしば、ずっと優れたストリーミングメディア品質を受け取ることができる。というのは、サーバ200を支援する多くのストリーミングピア220があるときには、大幅に高いサービング帯域幅が利用可能になるからである。
どんなP2Pネットワークとも同様に、個々のピア220は、1つまたは複数のクライアント210にサービングすることから直接利益を享受しない。しかしながら、一実施形態では、従来のP2P「公平性機構」(fairness mechanism)を使って、協働し合うピア220同士は、その後のストリーミング要求を満たされる際に、サービングピアとして働く際に等しく協働していない別のピアよりも高い優先順位を受け取ることが保証される。その結果として、PeerStreamerと共にそのような公正性機構を実施すると、協働し合うピア220は、通常、次にそれがクライアント210になるときに、より良いメディア品質を期待することができる。
その結果として、任意の特定のストリーミングセッション中に各サービングピア220が、実際上、クライアント210とサーバ200の両方に有利に働くことを考慮すると、優れた設計理念とは、サービングピアが軽量であり、P2Pネットワークが緩やかに結合されるようにすることである。言い換えると、サービングピア220は、低いCPU負荷を伴う非常に単純な動作だけを実行すればよいはずである。さらに、一実施形態では、サービングピア220は、本質的に各サービングピアによって寄付される記憶空間を最小限に抑えるために、メディアの一部だけをキャッシュするように選択することもできる。また、ピア220間通信の任意の帯域幅コストを低減するために、各サービングピアは他のピアと協働する必要がないようにすべきである。最後に、任意の特定のサービングピア220上で走っている他のプログラムは、任意の特定の時点においてCPUおよびネットワークリソースを要求する際により高い優先順位を持つこともあり、あるいは特定のピアが、単に、任意の時点において電源をオンまたはオフにされることもある。その結果、個々のサービングピア220は、利用可能なサービング帯域幅の変動を伴う、信頼性の低いものである可能性がある。実際、個々のサービングピアは、ストリーミングセッション中の任意の時点において、単に、オフラインになることも、オンラインになることもある。
逆に、ストリーミングセッションにリソースを充てるためにクライアント210側の負担を増大させることは妥当である。具体的には、クライアント210は複数のピア220からストリーミングメディアを受け取る必要があり、そのため、これはそれらのピアにすでに接続されている。さらに、クライアント210には、これ自体のストリーミング体験を向上させるためにそれらのピア220と効果的に協働し、またはそれらを管理しようとする動機がある。
その結果として、本明細書で説明するPeerStreamerシステムおよび方法は、緩やかに結合されたP2Pネットワークにおいてサービングピアに対する受信側主導の制御を利用し、その場合、クライアントは、様々なストリーミングピアの間でパケット要求を送信し、調整する役割を果たす。
2.1 システム概要
前述のように、本明細書で説明するPeerStreamerは、緩やかに結合されたP2Pネットワークでの受信側主導のピアツーピア(P2P)メディアストリーミングのシステムおよび方法を提供する。ネットワーク中の各ピアは単純な動作だけを実行し、ストリーミングメディアの全部または一部をキャッシュすることができ、他のピアと協働せず、信頼性が低い可能性があり、任意の所与のストリーミングセッション中にオフラインになりことも、オンラインになることもある。ネットワーク中のクライアント(または受信側)は、各ピアを調整し、複数のピアからメディアをストリーミングし、負荷均衡化を実行し、各ピアのオンライン/オフライン状態を処理し、ストリーミングメディアの復号化およびレンダリングを実行するようにリアルタイムで動作する。
一般に、PeerStreamerは、受信側主導のメディアストリーミングを提供する。PeerStreamer動作は、まず、各受信側クライアントが、要求されたストリーミングメディアの全部または一部を保持する近隣のサービングピアのリストを取り出すことから開始する。この状況では、メディアサーバは、サービングピアの1つとしても働くことができることに留意されたい。このリストは、サービングメディアの完全な、または一部のコピーを保持する1つまたは複数の近隣のサービングピアの集合のIPアドレスおよびリスニングポートを含む。このリストを取り出す方法には、1)メディアサーバから直接リストを取り出すこと、2)知られているサービングピアからリストを取り出すこと、および3)分散ハッシュ表(DHT)の手法を使ってサービングピアを識別することが含まれる。
クライアントが利用可能なサービングピアのリストを取り出すと、クライアントは、各サービングピアに接続し、その「可用性ベクトル」を獲得する。一般に、各サービングピアごとの可用性ベクトルは、各サービングピアによって保持されているメディアの正確な部分の簡潔な記述である。次いで、クライアントがこの可用性ベクトルを使って、正確に、符号化されたメディアのどのブロックがサービングピアによって保持されているか判定する。
例えば、特定のサービングピアがそのサービングメディア全体を保持している場合、そのピアの可用性ベクトルは、そのサービングピアが完全なメディアコピーを保持していることを示す単一のフラグとすることができる。同様に、サービングピアが、そのサービングメディアの一部だけを保持している場合、そのサービングピアの可用性ベクトルは、クライアントに、そのサービングピアによってメディアのどの部分が保持されているか、例えば、そのサービングピアによって保持されている各パケットのブロック数およびブロック索引などを知らせる。
さらに、以下で説明する消去符号化技法など別の符号化が使用されている場合、可用性ベクトルは、サービングピアに割り当てられたメディア消去符号化キー、およびそのサービングピアによって保持されている消去ブロック数を含むことになる。また、サービングピアが消去符号化を使用し、メディアも埋め込み符号化されている場合、可用性ベクトルは、割り当てられたメディア消去符号化キー、その埋め込み符号化によって使用される異なるビット速度レベルでの各パケットの消去ブロック数を含むことになる。
可用性ベクトルが与えられたと仮定すると、次のステップは、クライアントが、ピアクラスタからストリーミングされるメディアの「メディアヘッダ」および「メディア構造」の長さを取り出すことである。これらの長さが取り出された後、クライアントは、メディアヘッダおよびメディア構造の「データユニットID」を計算し、各サービングピアごとの可用性ベクトルを分析した結果として得られたどのピアがどのパケットIDを持っているかの知識に基づき、ピアクラスタ中のピアの1つまたは複数からそれらを取り出す。
メディアヘッダが到着すると、クライアントはそのメディアヘッダを分析し、次いで、ストリーミングされる特定の種類のメディア(すなわちMPEG1/2/4、WMA、WMVなど)を復号化し、レンダリングし、または再生するのに必要とされるあらゆるオーディオ/ビデオデコーダおよびレンダリングデバイスを構成し、または初期設定する。この初期セットアップ段階が完了すると、クライアントは、続いて、以下で説明するように、ピアクラスタからのメディア本体の進行中のストリーミングを調整する。具体的には、特定のストリーミングメディアの前述のメディア構造が与えられたと仮定すると、クライアントは、そのストリーミングメディアのパケットのデータユニットIDを計算し、次いで、様々なピアからそれらのパケットを1つずつ取り出す。
次いで、クライアントは、(サービングピアを識別する前述の方法の1つを使って)サービングピアリストを定期的に更新し、可能な新規のサービングピアに接続する。検査済みの一実施形態では、クライアントは、各可能なサービングピアごとに定期的なTCP接続関数呼び出しを発することによって可能な新規のサービングピアの有無をチェックした。クライアントは、新規のサービングピアへの接続を確立した後、まず、前述の可用性ベクトルを取り出す。次いで、新規のピアは、受信側/クライアントの指示で、クラスタ中のその他のアクティブピアに加わることができる。次いで、クライアントは、各ピアを調整し、それらのサービング帯域幅およびコンテンツ可用性に従って各ピアのサービング負荷を均衡化させ、切断され、または時間切れになったピアの未完了の要求をその他のアクティブピアの1つまたは複数に宛先変更する。次いで、ストリーミング動作は、そのストリーミングメディア全体が受け取られ、あるいはストリーミング動作がユーザによって停止されるまで、このようにして続行される。
2.2 システムアーキテクチャ概要
前述したプロセスを図3の全体システム図で示す。具体的には、図3のシステム図には、本明細書で説明する、PeerStreamerを実施するプログラムモジュール間の相互関係が示されている。図3に破線または点線で表す任意のボックスおよびボックス間の相互接続は、本明細書で説明するPeerStreamerの代替実施形態を表すこと、およびこれらの代替実施形態のいずれかまたはすべては、以下で説明するように、本明細書全体にわたって説明する他の代替実施形態と組み合わせて使用され得ることに留意すべきである。
一般に、PeerStreamerは、各クライアント210に関する動作を、そのクライアントに、ピア位置検出(peer locating)モジュール305を使って要求されたストリーミングメディアの全部または一部を保持する近隣のサービングピア220のリスト310を取り出させ、または識別させることから動作を開始する。この状況では、メディアサーバ200はサービングピア220の1つとしても働くことができることに留意されたい。様々な方法が、ピア位置検出モジュール305によってピアリスト310を取り出すために使用される。例えば、一実施形態では、ピアリスト310はサーバ200から直接提供される。別の実施形態では、ピアリスト310は、知られているサービングピア220から取り出される。最後に、別の実施形態では、ピア位置検出モジュール305により、従来方式の分散ハッシュ表(DHT)を使ってサービングピア220が識別される。前述のように、ピアリスト310は、サービングメディアの完全な、または一部のコピーを保持する1つまたは複数の近隣のサービングピア220のIPアドレスおよびリスニングポートを含む。
サービングメディア自体は、サーバ200上に存在するメディア符号化モジュール300によって、例えば、MPEG1/2/4、WMA、WMVなどを含むいくつかの従来方式のコーデックのいずれかを使って符号化される。メディアを符号化するのに使用されるコーデックは、本明細書でさらに詳細に説明するように、埋め込み式とすることも非埋め込み式とすることもできることに留意されたい。さらに、一実施形態では、以下でさらに詳細に説明する「高速消去耐性符号化」をコーデックのいずれかと組み合わせて使って、本来的に信頼性の低いサービングピア220にさらなる頑強性が提供される。
最初に、符号化されたメディアは、そのメディアがそこで最初に符号化されたサーバ上だけに存在する。次いで、その全部または一部が、サービングピア220の1つまたは複数に分散される(やはり、サーバ200は、メディアストリーミングのためのサービングピアとして働くこともできる)。サービングピア220への分散は、各ピアへのメディアストリームのパケットの直接分散の結果であり、または(クライアント210として働くときに)そのメディアをすでにストリーミングしているピアの1つまたは複数に、単に、それが最初にそのサービングピアにストリーミングされるときにそのメディアの全部または一部をキャッシュさせた結果である。いずれの場合も、説明のために、(ピアリスト310によって定義される)いくつかの知られているピアがあり、各ピアは、ストリーミングされる符号化メディアの全部または一部を保持しているものと想定される。
クライアント210は、利用可能なサービングピアのリスト310を取り出すと、各ピアから前述の可用性ベクトルを取り出す可用性ベクトル取り出しモジュール320を介して各サービングピア220に接続する。次に、各ピア320ごとに可用性ベクトルの情報が与えられたと仮定すると、次いで、クライアント210は、メディアヘッダ/メディア構造分析モジュール325を使って、ピアクラスタ220からストリーミングされるメディアヘッダおよびメディア構造の「メディアヘッダ」および「メディア構造」の長さを取り出す。これらの長さが取り出された後、クライアント210は、メディアヘッダを分析し、次いで、クライアント構成モジュール330を使って、ストリーミングされる特定の種類のメディア(すなわち、MPEG1/2/4、WMA、WMVなど)を復号化し、レンダリングし、または再生するのに必要とされるあらゆるオーディオ/ビデオデコーダおよびレンダリングデバイスを構成し、または初期設定する。
また、メディアヘッダ/メディア構造分析モジュール325は、メディア構造およびメディアヘッダの分析から、埋め込み符号化メディアまたは高速消去耐性符号化、あるいはその両方がストリーミングされるメディアの符号化に使用されているかどうかについての判定も行う。
次いで、データユニットID計算モジュール335を使って、メディアヘッダおよびメディア構造中に含まれる情報に基づき、ストリーミングメディアのパケットの「データユニットID」が計算される。次いで、データユニット要求モジュール340は、算出されたデータユニットIDを使って、ピアクラスタ220中の様々なピアに、ストリーミングメディアの特定のパケットまたはデータブロックを要求する。
PeerStreamerが埋め込み符号化メディアを使用する場合、ストリーミングビット速度は、以下でより詳細に説明するように、利用可能なサービング帯域幅およびクライアントキュー状況に従って変動する。この場合、データユニット要求モジュール340によるメディアパケットまたはデータユニットの取り出しを求める進行中の要求は、利用可能な帯域幅に基づいて最小速度ひずみを提供するパケット(またはデータブロック)に対応する。さらに、高速消去耐性符号化が使用される別の場合には、複数のサービングピアが競合せずに一部のメディアを保持して、どこでどの特定のブロックが取り出されるかにかかわらずクライアントが、単純に、固定数の消去符号化ブロックを取り出すようにする。
いずれの場合も、クライアント210は、データユニット処理モジュール345を介してメディアのストリーミングブロックを取り出す際に、以下で説明するように、それらのパケットを復号化するために渡し、またはデータユニット処理モジュールが、まず、データブロックからメディアストリームのパケットを再構築する(以下の高速消去符号化の説明を参照されたい)。また、クライアント210は、(前述のサービングピアを識別する方法の1つを使って)サービングピアリスト310を定期的に更新する。リスト310が更新されえるたびに、または所望の頻度で、クライアント210は、前述の可用性ベクトルを取り出すために可能な新規のサービングピアに接続する。その場合、新規はピアは、受信側/クライアント210の指示で、クラスタ220中のその他のアクティブピアに加わることができる。
次いで、クライアント210は、それらのピア320を調整し、それらのサービング帯域幅およびコンテンツ可用性に従って各ピアのサービング負荷を均衡化させ、切断され、または時間切れになった未完了の要求をその他のアクティブピアの1つまたは複数に宛先変更する。次いで、ストリーミング動作は、そのストリーミングメディア全体が受け取られ、復号化/レンダリング/再生モジュール350によって復号化され、レンダリングされ、再生されるまで、このようにして続行される。復号化メディアの再生は、その入力を復号化/レンダリング/再生モジュール350から提供される従来の表示装置355および/またはスピーカ360によって実現されることに留意されたい。
3.0 動作概要
前述の各プログラムモジュールが、PeerStreamerを実施するのに用いられる。前述したように、PeerStreamerは、緩やかに結合されたピアツーピア(P2P)ネットワークでの受信側主導のP2Pメディアストリーミングを提供する。以下の各項では、PeerStreamerの動作、および第2項で図2に関連して説明した各プログラムモジュールを実施する例示的方法の詳細な説明を行う。具体的には、以下の第3.1項および3.2項でPeerStreamer動作の詳細な説明を行い、続いて、図10に、その詳細な説明を考慮してPeerStreamerの全体動作を要約する動作流れ図を提示する。
3.1 PeerStreamerの動作詳細
以下の各段落では、本明細書で説明するPeerStreamerの特有の動作実施形態および代替実施形態について詳述する。具体的には、以下の各段落では、PeerStreamerによって使用される「ストリーミングメディアモデル」、要求されたストリーミングメディアの「メディア構造」(基本的には、メディアパケットまたは「データユニット」を取り出すためのデータIDを算出するのに必要とされるストリーミングメディアの特性を定義する「コンパニオンファイル」)、ストリーミングのためのメディアパケットの固定サイズ部分を表すPeerStreamerデータユニット、記憶所要量を減らすためのメディアの部分キャッシング、本来的に信頼性の低いサービングピアに対してPeerStreamerシステムの頑強性を増大させるためのメディアの高速消去符号化について述べる。
3.1.1 ストリーミングメディアモデル
一般に、ストリーミングメディアは、それらが到着する際に復号化され、レンダリングされるパケットの流れからなる(それでストリーミングという名前で呼ばれる)。ストリーミングを使用しない場合、そのメディア全体を1つの大きな塊としてダウンロードしてからでないと、それを使用することができない。PeerStreamerによって使用されるストリーミングメディアファイルの一般的構造を図4に示す。
具体的には、図4に示すように、メディアは「メディアヘッダ」に先導され、これは、そのメディアを記述する全体的な情報、例えば、メディア中のチャネル数、各チャネルの属性および特性(オーディオサンプリング速度、ビデオ解像度/フレーム速度)、使用されるコーデック、メディアの著者/著作権保持者などを含む。メディアヘッダは、普通、クライアントがその後に受け取るパケットを復号化し、レンダリングするための必要なツールをセットアップすることができるように、ストリーミングセッションの開始前にダウンロードされる。ストリーミングメディアは、そのそれぞれが独立に選択され、符号化され得る別個のメディアコンポーネントである、例えば、英語のオーディオトラック、スペイン語のオーディオトラック、4:3ビデオ、16:9ビデオなどといったいくつかのチャネルから構成され得ることに留意されたい。
メディアヘッダの後にはメディアパケットのシーケンスが続き、そのそれぞれは、短期間に及ぶ特定のチャネルの圧縮されたビットストリームを含む。各メディアパケットはパケットヘッダに先導され、これは、チャネル索引、パケットの開始タイムスタンプ、パケットのデュレーション(duration)、ならびに、例えば、そのパケットがキーフレーム(MPEG1フレームなど)であるかどうか、そのパケットが(切り捨て可能なビットストリームを伴う)埋め込み符号化パケットであるかどうかなどを示すいくつかのフラグといった情報を含む。次いで、パケットの圧縮されたビットストリームが続く。
目下、MPEG1/2/4オーディオ/ビデオ、WMA/WMV、RealAudio(登録商標)/RealVideo(登録商標)などといった、従来方式の圧縮メディアコーデックの大部分は、非埋め込み符号化メディアパケットを生成する。その結果として、そのようなシステムによって生成されるメディアパケットのサイズは変更され得ない。さらに、そのようなビットストリーム中のメディアパケットの1つが失われ、または過度に遅れるたびに、結果として、そのメディアは復号化不能になり、または再生が途切れ途切れまたは断続的になり、ストリーミングメディアの再生品質が劣化する。これらの従来のコーデックとの互換性を保持するために、一実施形態では、PeerStreamerシステムおよび方法は、メディアパケットを非埋め込み符号化(拡張不能)とすることができる。しかしながら、従来の圧縮されたメディア形式をサポートすることに加えて、PeerStreamerは、一実施形態では、埋め込み符号化メディアもサポートする。
埋め込み符号化メディアを用いた場合、各メディアパケットは、それが後で独立に切り捨てられ得るようなやり方で符号化される。一般には、PeerStreamerによって2種類の埋め込み符号化、すなわちビットプレーン符号化および拡張階層符号化(enhancement layer coding)がサポートされる。これら2種類の埋め込み符号化は、当分野の技術者にはよく知られていることに留意されたい。したがって、以下の各段落ではそのような符号化について一般的にのみ説明する。
例えば、ビットプレーン符号化を用いる場合、メディアブロックの拡張可能な符号化が、一般に、1ブロックのオーディオ/ビデオ変換係数を1ビットプレーンずつ、最上位ビットプレーン(MSB)から最下位ビットプレーン(LSB)まで符号化することによって達成される。ビットストリームが符号化後に切り捨てられる場合、その情報は、それらの係数すべてのうちの最上位ビットプレーンのいくつかについて保持される。さらに、切り捨てられるビットストリームはより低いビット速度の圧縮ビットストリームに対応し、これはより高いビット速度の圧縮ビットストリームに埋め込まれているとみなすことができ、それで埋め込み符号化という名前で呼ばれる。その結果、埋め込みエンコーダによって生成されたメディアパケットは、適切な速度/ひずみトレードオフで切り捨てられ得る。
拡張階層符号化を用いる場合、メディアコンテンツは、基本階層と1つまたは複数の拡張階層に圧縮され、そのそれぞれは、通常、別個のチャネルを占める。具体的には、そのような符号化は、基本階層にサブスクライブすることによって、最低品質のメディアストリームが受け取られるようにする。各連続する拡張階層を付加すると、復号化メディアの品質が向上する。したがって、そのようなシステムを用いる場合、受信側またはクライアントは、通常、基本階層、および利用可能な帯域幅に応じて、できるだけ多くの拡張階層にサブスクライブすることによって、受け取られる情報の品質を最適化する。
3.1.2 PeerStreamerメディア構造
受信側主導のモードで動作するには、PeerStreamerクライアントは、各ピアにどのパケットおよび各パケットのどの部分を要求するか知るために、要求されるメディアパケットの構造を知る必要がある。この情報は、要求されるストリーミングメディアの構造の定義を含む一種の「コンパニオンファイル」として提供される。一般に、このメディア構造は、PeerStreamerクライアントにメディア全体の鳥瞰図(例えば、各パケットの開始タイムスタンプ、各パケットのデュレーションなど)を提供して、クライアントがP2Pストリーミングセッションを知的に計画し、個々のメディアパケットが復号化およびレンダリングに遅れずに到着することを確認できるようにする。メディア構造情報を含むコンパニオンファイルは、最初、そのメディアファイルが最初に符号化されるときに生成され、次いで、要求に応じて、各ストリーミングセッションの開始時に、そのメディアヘッダを求める最初の要求と共にクライアントにストリーミングされることに留意されたい。コンパニオンファイル中の情報は、メディアが従来のコーデックによって符号化された後で、メディアヘッダおよびパケットヘッダを分析することによっても生成され得ることに留意されたい。
具体的には、パケットの集合のメディア構造は、パケットヘッダにパケットビットストリームの長さを加えたものからなる。したがって、クライアントは、この情報を使って、どの特定のパケットを要求すべきか、それらのパケットを要求すべき時刻、およびそこにそれらのパケットを要求すべきピアを決定することができる。したがって、PeerStreamerは、まず、ストリーミング「セットアップ」段階においてメディア全体のメディア構造を取り出す。実際にメディアをストリーミングするのに先立ってこの情報の取り出すと、ストリーミングの始動に際してわずかな遅延を生じる。しかしながら、メディアストリーミングに先立ち、最初にこの情報を取り出すことにより、クライアントにメディア構造情報を供給するために(メディアストリーミング中に)追加の帯域幅コストが生じない。
ストリーミング開始に際しての前述の遅延は、通常、ストリーミングメディア全体の長さに対してごくわずかにすぎないことに留意されたい。例えば、PeerStreamerの検査済みの実施形態では、サイズが31メガバイト(MB)から49MBにわたる5つの検査用映画クリップが、約37キロバイト(KB)から約53KBまでの範囲のメディア構造コンパニオンファイルを持っていた。したがって、そのメディア構造サイズは、メディア本体全体の約0.10〜0.15%程度になることが観察されている。したがって、それらのサービング帯域幅がメディアビット速度以上であり、メディア構造がメディア本体の0.15%であると想定すると、10分間のクリップのメディア構造をダウンロードするのに0.9秒未満の追加遅延が生じる。
関連する一実施形態では、何らかの所定の長さ(すなわち、10秒、30秒、1分など)の連続するメディアセグメントのために部分的メディア構造が生成される。その場合、各部分的メディア構造は、対応するメディアセグメントが近い将来にストリーミングされる前にのみ取り出される。これは、メディア構造要求および送信がメディアパケット要求および送信と共存し得るために、帯域幅所要量をわずかに増大させる。しかしながら、メディア構造のサイズはこの場合非常に小さいため、帯域幅所要量全体に対する影響は、通常、無視できるほど小さい。
3.1.3 PeerStreamerデータユニット
一実施形態では、PeerStreamerは、メディアパケット、メディアヘッダおよびメディア構造を長さLの固定サイズのデータユニットに分割する。固定サイズのデータユニットを使用する理由は、そうすれば、PeerStreamerクライアントおよびサービングピアがサイズLのメモリブロックを事前に割り振ることができ、ゆえに、ストリーミングプロセス中の高くつくメモリ割り振り動作を回避することができるからである。さらに、メディアパケット(非常に大きい可能性がある)を小さい固定サイズのデータユニットに分割すれば、PeerStreamerクライアントが、より小さい細分度を用いてサービング負荷を各ピアに分散させることも可能になり、ピア間でより良い帯域幅負荷均衡化が達成される。
一般に、(メディアパケット、メディアヘッダまたはメディア構造とすることのできる)長さPのパケットのサイズLのブロックへの分割は、各パケットを[P/L]個のデータユニットに分割することによって達成され、その場合[x]は、x以上である最小の整数を返す従来の天井関数である。その場合、おそらく、長さPをLで割った余りである各パケットの最後のデータユニットを除いて、すべてのデータユニットは固定長Lを有する。
メディアの非埋め込み符号化が使用される場合、各メディアパケットを含むデータユニットは、ネットワーク伝送中にメディア再生品質を損なわずに落とすことができない。したがって、これらのデータパケットは、すべてが受け取られなければならないため、「必須データユニット」と呼ばれる。
逆に、埋め込み符号化メディアパケットがデータユニットに分割されるときには、基本階層データユニットだけが配信されればよく、残りのデータユニットは、サービング帯域幅が不十分である場合、任意選択で落とすことができる。これら任意選択のデータユニットは、「非必須データユニット」と呼ばれる。非必須データユニットのサービングに必要な帯域幅は、次のように計算することができる。例えば、埋め込み符号化の場合には、1つのメディアパケットはT秒間続く。このメディアパケットがいくつかのデータユニットに分割されると仮定すると、このデータユニットを階層iでクライアントに供給するためには、階層iの下のすべてのデータユニットもクライアントに供給されなければならない。その結果、このデータユニットを階層iで供給するのに必要とされるサービング帯域幅は以下の通りである。
i=(i+1)L/T 式1
したがって、式1は、埋め込み符号化メディアに関するデータユニットのビット速度Rを提供する。その場合、PeerStreamerクライアントは、利用可能なサービング帯域幅を上回るビット速度を生じるはずの非必須データユニットを落とすことによって変化するサービング帯域幅に適応する。
メディアが非埋め込み符号化であれ、埋め込み符号化であれ、どちらの場合にも、メディアパケット、メディアヘッダおよびメディア構造のデータユニットを含む個々のメディアストリームのすべてのデータユニットが、一意のID空間にマップされる。例えば、検査済みの一実施形態では、メディアパケットのデータユニットは0x00000000から0xfdffffff(16進数)まで索引付けされ、メディアヘッダのデータユニットは0xfe000000から0xfeffffffまで索引付けされ、メディア構造のデータユニットは0xff000000から0xffffffffまで索引付けされた。この検査済みの実施形態で使用されたPeerStreamerのデータユニットを図5に示す。
メディアヘッダおよびメディア構造のデータユニットIDを獲得するには、まず、メディアヘッダおよびメディア構造の長さが必要とされることに留意されたい。これらを、これらの「メガ構造」と呼ぶ。メディアパケットのデータユニットIDを獲得するには、メディアパケットビットストリームの長さが必要とされる。この情報は、メディア構造に含まれる。
3.1.4 メディアの部分キャッシング
サービングのためには、各サービングピアは、そのサービング帯域幅に比例するメディアの一部を保持するだけでよい。しばしば、インターネットに接続された大部分のコンピュータのサービング(またはアップロード帯域幅)は、実質的に、(各個別ノードが受け取ることのできる最高のストリーミングビット速度を決定付ける)そのダウンロード帯域幅を下回ることがある。その結果として、インターネット上の各エンドユーザノードは、そのアップロード帯域幅とそのダウンロード帯域幅の間に不均衡を有する傾向がある。例えば、ホームユーザから利用可能な典型的な市販のADSL/ケーブルモデムネットワーク上のノードが与えられたと仮定すると、そのダウンロード帯域幅がそのアップロード帯域幅より1桁高いことは珍しいことではない。同様に、大学構内/企業ネットワーク上のノードは、通常、任意の所与のノードのP2P型アクティビティへの参加が、他の不可欠の諸機能に影響を及ぼさないように、サービング帯域幅に上限を定めている。
その結果として、各サービングピアは、通常、個別に、クライアントにメディアストリーム全体を供給することができないため、どの1つのサービングピア上でもメディアストリーム全体をキャッシュする必要はない。したがって、サービングピアのいずれかによって必要とされる記憶リソースの量を低減させる1つの有効な方法は、各サービングピアに、ストリーミングされるメディアの一部だけを保持させることである。例えば、非埋め込み符号化メディアをストリーミングするのに必要とされるビット速度がRであり、あるストリーミングセッションにおいて1つのピアによって提供される最大サービング帯域幅がBである場合、各ピアノードは、そのキャッシュにそのストリーミングメディアのp部分さえ保持すればよく、その場合、値pは以下の式2によって示される。
p=min(1.0,B/R) 式2
例えば、メディアビット速度がサービング帯域幅の2倍、すなわちR=2Bであると仮定する。その場合、サービングピアは、その記憶にストリーミングメディアの半分を保持すればよい。というのは、そのピアだけでは、完全なストリーミングビット速度でクライアントにサービングすることができないからである。実際、この例の前述の制限事項が与えられたと仮定すると、このピアが行い得る最善のことは、せいぜいそのメディアの半分を供給することである。したがって、このピアは、そのキャッシュにただメディアの半分を保持すればよい。その場合、ストリーミングされるメディアの残りは、他方のサービングピアによって供給されなければならない。
さらに、その場合、式1と式2を組み合わせると、埋め込み符号化メディアが使用される場合に保持すべきメディアの量の決定が可能になることに留意すべきである。第3.1.3項で論じたように、埋め込み符号化メディアのメディアパケットは、異なるビット速度を有するいくつかのデータユニットに分割される。したがって、Rが、特定の階層Lでのデータユニットのビット速度である場合、式2は、そのデータユニットのために保持すべきメディアの部分をもたらす。例えば、図6で示すように、埋め込みメディアパケットは、複数のデータユニット(この例では8個)に分割され得る。各データユニットごとにキャッシュする必要のあるメディアの量(L/T=0.5Bの場合)は、その場合、図6に示すように、式2に従って求められる。
しかしながら、一実施形態では、個々のサービングピアの記憶リソースが十分に大きい場合、そのサービングピアは、単に、式2においてより高い「潜在的サービング帯域幅」B’を使用することによって、そのメディアのより大きい部分をキャッシュするよう選択することができる。その場合、キャッシュされたそのメディアの余分な部分は、そのメディアを、途切れ途切れにではあっても高品質で供給することを可能にする。例えば、各サービングピアが、その実際のサービング帯域幅の二倍の潜在的サービング帯域幅B’、すなわちB’=2Bを使用することを選択したと仮定すると、結果として生じるP2Pネットワーク中のメディアの量は、クライアントが半分のストリーミング速度でそのメディアを取り出すのに十分な量になる。言い換えると、利用可能なピアすべてのサービング帯域幅の総計がR/2より大きいと仮定すると、クライアントは、まず、そのメディアの半分をダウンロードし、次いで、残りの半分を続けてストリーミングし、再生することができるはずである。同様に、クライアントは、(時間Tsを用いて)メディアのTs/2セグメントをダウンロードし、続けて次のTs/2セグメントをストリーミングし、そのセグメントを再生し、次いで、次のセグメントをダウンロードし、ストリーミングするよう選択することもできる。ゆえに、ストリーミングメディアは、途切れ途切れにではあるが、速度Rで再生され得る。
3.1.5 メディアの高速消去符号化
前述のように、各ピアは、本来的に信頼性が低い可能性がある。したがって、本来的に信頼性の低いサービングピアのサービング挙動を有効に処理するために、PeerStreamerシステムおよび方法においてさらなる冗長性を実現する何らかの手段を提供すれば有利である。この問題を処理することは、対処されなければならないいくつかの問題を提起する。例えば、各ピアによってメディアのどの部分pが保持されるべきか決定することは問題である。さらに、メディアは、最終的に、前述のデータユニットに分割されるため、各ピアがデータユニットのどの部分pを維持すべきか決定することも問題である。
これらの問題に対処する1つの戦略は、各データユニットを単純にk個のブロックに分けるというものである。その場合、メディアのp部分を保持するピアは、[x]が前述の天井関数であるとすれば、ランダムに[k・p]ブロックを保持することができる。しかしながら、この方式のランダム性に伴う1つの問題は、ピアクラスタ中にkよりはるかに多くの利用可能なブロックがあったとしても、そのクラスタが、全体として、特定のブロックjを欠く可能性があり、それによって、そのデータユニット全体が取り出し不可能になることがあり得るということである。さらに、そのような方式では、クライアントは、それでもなお、各ピアからあらゆる別個のブロックを探し出す役割を果たし、それが、クライアントとピアの間のプロトコルの設計を複雑にする。
したがって、1つのより優れた戦略は、「高速消去耐性符号」を使って、各ピアの1つまたは複数が個々のデータユニットを再構築するのに必要なデータブロックを持つようにすると同時に、各ピアのどれが必要なデータを含むか識別するクライアント側での要求を簡略化するというものである。一般に、消去耐性符号とは、パラメータ(n,k)を有するブロック誤り訂正符号であり、その場合kは元のメッセージの数であり、nは符号化メッセージの数である。高速消去耐性符号は、nがkよりはるかに大きく、ゆえに、k個の元のメッセージがn個のメッセージのはるかに大きい符号化メッセージ空間に拡張されるという属性を満たす。消去符号化技法は、一般に、データ符号化ではかなりよく知られているが、本明細書で説明する、P2Pネットワーク環境におけるメディアストリーミングでのそのような技法の適用は、知られていない。
ブロック誤り訂正符号として、高速消去耐性符号の動作は、ガロア体GF(p)に対する行列乗算によって説明することができる。
Figure 0004920220
式中、pは、ガロア体の次数であり、{x0,x1,...,xk-1}は元のメッセージであり、{c0,c1,...,cn-1}は符号化メッセージであり、Gは生成行列である。式3は、符号化メッセージすべてを一度に生成するのには使用されないことに留意されたい。そうではなく、生成行列Gは、1つの符号化メッセージ空間を定義する。したがって、クライアントがk個の符号化メッセージ{c’0,c’1,...,c’k-1}を受け取るとき、それらは式4によって以下のように表すことができる。
Figure 0004920220
式中、Gkは、符号化メッセージに対応する生成行列Gのk行によって形成される従属生成行列である。さらに、従属生成行列Gkが完全な階数kを持つ場合、行列Gkは反転させることができ、ゆえに、元のメッセージが復号化され得る。
例えば、リードソロモン消去符号、トルネード符号、およびLPDCコードなどを含めて、使用し得るいくつかのよく知られた消去符号化技術がある。しかしながら、一実施形態では、PeerStreamerは、ガロア体GF(216)上の変更されたリードソロモン符号に基づく新規の高速消去耐性符号を提供する。この例では、元のメッセージの数kは16である。符号化メッセージ空間のサイズnは216=65536である。リードソロモン符号は、最大距離分離(MDS)符号である。その結果として、生成行列Gの任意の16行は、完全な階数16を持つ従属行列を形成する。言い換えると、元のメッセージは、任意の16個の符号化メッセージから回復され得る。他の体サイズ、pも使用され得ること、およびPeerStreamerは、本明細書で説明する特定の体サイズの使用に限定されないことに留意すべきである。さらに、非MDS消去符号化を使用する実施形態では、使用される特定の消去符号化によっては、元のメッセージを回復するのにk’≧k個のブロックを取り出すことが必要となり得る。リードソロモンに基づく消去符号が一部使用されたのは、それらがMDS符号であり、大部分の従来のコンピュータのCPUに対してわずかな計算上のオーバーヘッドをもたらすだけで効率よく符号化され、復号化され得るからである。
高速(n,k)消去耐性符号を用いる場合、各ピアノードには、nの符号化メッセージ空間においてk個のキーが割り当てられ、各キーは生成行列Gの行索引である。キー割り当ては、サーバによって実行され得る。さらに、メディアをキャッシュするピアの数がn/kより小さい場合、各ピアに一意のキーセットを割り当てることが可能である。その結果、各ピアが特有の符号化メッセージを保持することが保証され得る。この戦略はいくつかの利点を提供するが、なお、中央調整ノード(サーバなど)を必要とする。
したがって、別の実施形態では、各ピアにk個のランダムキーを選択させることによって中央調整ノードの役割を不要にする。ピアノードの数がn/kより大きく、またはキーが中央調整ノードなしで割り当てられる場合、いくつかのピアノードは、同じキーを保持し得る。それでもなお、クライアントがm個のピアに接続される大部分のメディアストリーミングセッションでは、mは、普通、n/kよりずっと小さい。したがって、2つのサービングピアが偶然同じキーを保持しており、ゆえに、それらのピアの1つの1つのキーが有用でない確率は小さい。しかしながら、キー競合があったとしても、クライアントは、それが最初にそれらのピアに接続するときに、そのような競合を容易に識別することができる。そのような競合が識別される場合には、クライアントは、単に、ストリーミングセッションの残りの部分で重複したキーの1つを無効化する。したがって、クライアントは、ストリーミングプロセスの間に実際にキー競合に対処する必要がない。
例えば、S1およびS2が、それぞれ、サービングピア1およびサービングピア2の消去符号化キー空間であり、S1={1,7,23,43,48}およびS2={3,7,28,49,99}であると仮定する。明らかに、キー空間S1およびS2は異なる。しかしながら、キー7は2つのキー空間によって共有されており、したがって、サービングピア1およびサービングピア2は、同じキー、すなわちキー「7」を共有する消去符号化ブロックを保持し得る。したがって、個々の符号化ブロックを要求する前に、それらのサービングピアの一方についてキー「7」が無効化されて、キー「7」によって符号化されたブロックがそれらのピアの一方だけから取り出され、重複キーによって生じる復号化競合が回避されるようにする。しかしながら、メディアストリーミング動作中に1つのサービングピアがオフラインになった場合、別のサービングピアの特定の無効とされた符号化キーは、そのオフラインのサービングピアが、以前に、1つまたは複数の重複キーを使用した結果として競合していた場合には、再有効化され得ることに留意すべきである。
(65536,16)リードソロモン符号を用いる場合、各データユニットは、16ブロックに分割される。事前に割り当てられたキーセットを使って、ピアは、[16p]消去符号化ブロックをキャッシュすることを選択する。その場合pは、式1および2から計算されたパラメータである。ピアに割り当てられたキー、およびその最大サービング帯域幅Bは、前述のそのピアの可用性ベクトルを構成する。というのは、クライアントは、そのピアの可用性ベクトルによって提供された情報を使って、何個のどんな消去符号化ブロック(データユニット/ブロックIDによる)がそのピアによって保持されているか判定することができるからである。やはり、クライアントは、各ピアが最初に接続される時に、キー競合があればそれを解決する。そのストリーミングセッションの間、次いで、クライアントは、任意のサービングピアノードから任意のk個の符号化メッセージを取り出し、関連するデータユニットを復号化することができる。
さらに、特定のデータユニットを復号化するために任意の1つのサービングピア上にそれらの符号化ブロックの集合全体を格納する必要はない。言い換えると、任意の個々のデータユニットのために任意の個々のサービングピアによって保持されるブロックの数はk未満とすることができる。したがって、あらゆる符号化キーでのあらゆる符号化ブロックを計算するのに計算能力を浪費するのではなく、一実施形態では、実際に特定のピアに配信される符号化ブロックだけが生成される。言い換えると、j<k個のブロックが特定のサービングピア上に格納される場合、その特定のデータユニットにはj個のブロックだけが生成されるはずである。
3.2 P2PネットワークにおけるPeerStreamer動作の実装
以下の段落では、前述のPeerStreamerの動作詳細の説明を考慮して、PeerStreamer動作の実装について説明する。具体的には、以下の段落では、クライアントによるサービングピアの位置検出、取り出したメディア構造に基づくクライアント復号化およびレンダリングのセットアップ、PeerStreamerネットワーク接続、ストリーミングビット速度制御、PeerStreamerクライアント要求およびピア応答、および最後に、PeerStreamer要求およびステージングキューについて説明する。
3.2.1 サービングピアの位置検出
前述のように、クライアントによって実行される最初のタスクは、サービングメディアの完全な、または一部のコピーを保持する近隣のサービングピアのリストのIPアドレスおよびリスニングポートを獲得することである。さらに、このリストは、メディアストリーミングセッション中にも更新される。前述のように、このリストを獲得する一般的な手法には、1)サーバからリストを取り出すこと、2)知られているサービングピアからリストを取り出すこと、および3)分散ハッシュ表(DHT)手法を使って、事前に、そのメディアサーバもサービングピアも知られていないサービングピアを識別することが含まれる。
3.2.2 復号化およびレンダリングセットアップ
サービングピアリストを確保した後で、クライアントは、それらのサービングピアのそれぞれに接続しようと試みる。接続されると、クライアントは、各ピアの可用性ベクトルを取り出し、前述のように、キー競合があればそれを解決する。次いで、クライアントは、ピアの1つからメディアヘッダおよびメディア構造の長さを取り出す。両方の長さが取り出された後、メディアヘッダおよびメディア構造のデータユニットのIDが構築される。次いで、メディアヘッダおよびメディア構造を、第3.2.6項でさらに詳細に説明するように、P2Pで取り出すことができる。メディアヘッダが取り出されると、クライアントは、メディアがクライアントにストリーミングされる際にそれを復号化し、レンダリングするためにどのデコーダおよびレンダラを初期設定すべきか決定する。
DirectX(商標)を使って実施された検査済みの実施形態では、このセットアップは、まず、メディアヘッダで提供された情報からDirectShow(商標)フィルタグラフを構築することによって達成された。本明細書で説明するPeerStreamerはDirectX(商標)機能を使った実装形態に限定されるものではなく、DirectX(商標)の使用、および検査済みの実施形態に関連するその説明は、クライアント再生のためのストリーミングメディアの復号化、レンダリングに際してのクライアントコンピュータのセットアップを説明するために提供したにすぎないことに留意すべきである。
したがって、クライアントセットアップのためのDirectX(商標)実装形態を仮定して、クライアントのネットワークコンポーネントがDirectShow(商標)ネットワークソースフィルタによって表され、その出力が適正なオーディオ/ビデオ復号DirectX(商標)メディアオブジェクト(DMO)に供給される。次いで、このDMOがさらに、適当なオーディオ/ビデオレンダリングデバイスに接続される。例えば、クライアントPeerStreamerメディアストリーミングセッションのDirectShow(商標)フィルタグラフの一例を図7に示す。この例では、ストリームされるメディアは埋め込み符号化されない。オーディオビットストリームはWMAで圧縮され、ビデオビットストリームはMPEG−4で圧縮される。
DirectShow(商標)フレームワークによるPeerStreamerクライアントセットアップ実装を使用する1つの利点は、それが、DirectShow(商標)の下で開発された既存のオーディオ/ビデオエンコーダ/デコーダの膨大なライブラリを利用できることである。例えば、DirectShow(商標)を用いると、PeerStreamerクライアントは、例えば、MPEG1/2/4、WMA/WMV、Indeo Videoなど、あるいはDirectShow(商標)復号DMOコンポーネントを備える他の任意のコーデックなどを含む、様々なコーデックによって符号化されたメディアを復号化し、レンダリングすることができる。DirectShow(商標)は、復号化されたオーディオ/ビデオを、クライアントのオーディオ/ビデオレンダリングデバイスの機能に自動的にマッチさせることができるように、解像度/色空間変換やインターレース解除(deinterlacing)といったその他のオーディオ/ビデオ処理モジュールも提供することができる。
さらに、DirectShow(商標)は、オーディオ/ビデオトラックの同期を自動的に処理する。例えば、オーディオストリームがストリーム全体の基準クロックを保持している場合、ストリーミングビデオを再生するときに、DirectShow(商標)は、リップシンクなどのなどの問題に対処するために、ビデオストリームのシステムタイミングクロックが、オーディオストリームのクロックの可能な限り近い状態にとどまるようにする。最後に、DirectShowアプリケーションは、本来的に、マルチスレッド化されている。その結果として、マルチプロセッサPC(またはハイパースレッド処理対応のもの)上では、例えば、ネットワークコンポーネント、オーディオデコーダ、ビデオデコーダ、オーディオ/ビデオレンダリングエンジンなどのといったクライアントの様々なコンポーネントの計算負荷が、複数のプロセッサに分散され得る。これは、クライアントの実行速度を大幅に向上させ、より複雑なオーディオ/ビデオデコーダを使用できるようにする。
最後に、本明細書で説明するPeerStreamerは、DirectX(商標)機能を使った実装形態に限定されるものではなく、DirectX(商標)の使用、および検査済みの実施形態に関連するその説明は、クライアント再生のためのストリーミングメディアの復号化、レンダリングに際してのクライアントコンピュータのセットアップを説明するために提供したにすぎないことに再度留意すべきである。
3.2.3 PeerStreamerネットワークリンクおよびパケット損失管理
Windows(登録商標)Media PlayerやRealPlayer(登録商標)といった大部分のメディアストリーミングクライアントは、UDPの上で搬送される、よく知られているリアルタイムトランスポートプロトコル(RTP)を使用する。UDP/RTPプロトコルが、通常、メディアストリーミングアプリケーションに選択されるのは、1)UDPプロトコルはIPマルチキャストをサポートし、これは、IPマルチキャスト対応のネットワーク上のノードの集合にメディアを送信する際に効率的であることがあり、2)UDPプロトコルはどんな再送信機能もデータ速度管理機能も備えないからである。その結果として、ストリーミングサーバおよびクライアントは、メディアパケットのタイムリーな配信を保証するために、前方誤り訂正(FEC)など、高度なパケット配信機能を実施することができる。
しかしながら、前述のよく知られているメディアストリーミング方式とは対照的に、PeerStreamerは、クライアントとサービングピアの間のネットワークリンクとしてTCP接続を使用する。従来のUDP/RTPプロトコルではなくTCP接続を選択する1つの理由は、IPマルチキャストは、現実には、ドメイン間経路指定プロトコル、ISPビジネスモデル(課金モデル)、配信ツリーに沿った輻輳制御などなどの問題のために、あまり普及していないことである。
また、多くの市販のメディアプレイヤーのように、PeerStreamerクライアントにも、ジッタや輻輳などのネットワーク異常に対処するために、(検査済みの実施形態では4秒間の)ストリーミングメディアバッファを組み込んである。実際、クライアントとサービングピアの間のラウンドトリップ時間(RTT)を何倍も上回るストリーミングメディアバッファが与えられたと仮定すると、TCP ARQ(自動反復要求)機構は、ストリーミングメディアのスムーズな再生を実現するのに十分な時間でのメディアパケットの配信に十分適する。
一般に、メディアパケット損失に対処するための(多数のよく知られた変形形態を伴う)3つのよく知られた機構がある。例えば、これらの機構には、一般に、FEC、選択的パケット再送信、および自動反復要求(ARQ)が含まれる。これらのパケット損失機構のいずれもPeerStreamerによって使用され得る。しかしながら、以下で説明するように、特定の機構を使用することには他に優る利点がある。
具体的には、変動する特性および不明のパケット損失率を伴う消去チャネルとみなすことのできるインターネットチャネルでは、固定されたFEC方式は、(保護が過多である場合)帯域幅を浪費し、または(保護が過少である場合)失われたパケットを回復することができない。ゆえに、これは、クライアントとピアの間の帯域幅リソースを効率よく利用しない。したがって、RTTより何倍も大きいストリーミングバッファを用い、ゆえに、十分な再送信の機会を有する場合には、再送信に基づく誤り保護(選択的再送信やARQなど)がFECより好ましい。
ARQおよび選択的再送信を考察すると、TCPプロトコルを使用するインターネットチャネルでは、多数のパケットが再送信されるよう選択されていない場合には、選択的再送信がARQより優れている。非埋め込み符号化メディアでは、失われたパケットは、普通、個々のパケットを復号化、再生できないことを含めて、重大な再生劣化をもたらす。したがって、失われたパケットは、ほとんどの場合再送信される。逆に、埋め込み符号化メディアを用いる場合、失われたパケットは、そのメディアが再生されるのを妨げない可能性がある。しかしながら、ランダムパケットを損失すると、やはり、いくつかの派生パケットが使用不能になる。その結果、最上拡張階層パケットだけが、再送信されるよう選択できなくなる。
選択的再送信と比べると、ARQは、パケットが要求されると、それらが最上拡張階層に属するものであっても、常にそれらを再送信する。それでもなお、ARQ方式は、後続のメディアパケットの最上拡張階層パケットを要求しないよう選択することができ、ゆえに、選択的送信方式と同じ帯域幅利用度および知覚メディア再生品質を達成する。その結果として、ネットワーク状況が急速に変動しない限り、TCPプロトコルによって用いられるARQ機構は、メディアストリーミングにおけるパケット損失を処理するのに十分である。
TCPをネットワークプロトコルとして使用することは、前述のような従来のメディアストリーミング方式に優るいくつかの他の利点も提供する。例えば、TCPを用いれば、フロー制御、スループット推定、輻輳制御および回避、キープアライブなどを明示的に処理する必要がない。これらの問題すべてがTCPプロトコルによって自動的に処理される。また、TCPプロトコルは、ピアがオフラインになるのを検出することもでき、ピアとクライアントの間の接続リンクのシャットダウンを安全に処理することもできる。
3.2.4 埋め込み符号化を用いたPeerStreamerストリーミングビット速度制御
非埋め込み符号化メディアは、クライアント側でのメディア再生の劣化を防ぐために、好ましくは常に、そのメディアのビット速度でストリーミングされる。しかしながら、埋め込み符号化メディアのストリーミングビット速度は、ストリーミングセッション中に変動し得る。
したがって、一実施形態では、各埋め込み符号化メディアパケットごとのストリーミングビット速度Rrecvが、まず、式5、6、7によって以下のように計算される。
raw=Th・(1+Trft−Tstaging)+Bstaging−Boutstanding 式5
filter=(1−α)Rfilter+αRraw 式6
recv=min(Rmin,Rinst) 式7
式中、Thは複数のサービングピアの合計サービング帯域幅であり、Tstagingは(検査済みの実施形態では2.5秒のデフォルトの)目標ステージングバッファサイズであり、Trftは(検査済みの実施形態では1.0秒のデフォルトの)所望の要求完了時間であり、Bstagingはステージングキュー中の受信パケットの長さであり、Boutstandingは受け取られる未処理の応答の長さであり、Rminは(必須データユニットだけを伴う)基本階層ビット速度であり、αは低域制御パラメータである。
次いで、式5〜7の結果を使い、以下の第3.2.6項でさらに詳細に説明する、合計サービング帯域幅Thおよびステージングおよび要求キュー状況に従って、ストリーミングビット速度Rrecvが制御される。ストリーミングビット速度が求められると、クライアントは、ストリーミングビット速度Rrecvを下回るビット速度を持つデータユニットを求める要求だけを発行する。
関連する一実施形態では、より高度な戦略を使い、データユニットのひずみ貢献も考慮することによって、ビット速度Rrecvを制御する。しかしながら、これは、クライアントがデータユニットのひずみ(または速度ひずみ勾配)にアクセスできることを必要とし、それがメディア構造に含められ、クライアントに送られなければならない。しかしながら、メディア構造中の既存の情報とは異なり、データユニットのひずみは、復号化の際には必要とされず、ゆえに、追加のオーバーヘッドであるとみなされる。その結果として、これは、クライアントに送られるオーバーヘッドの量と速度制御の正確さの間のトレードオフになる。
3.2.5 PeerStreamerデータブロック要求および応答
クライアントデータブロック要求およびそのピアによる応答の寿命(life)を、一般的に、図8に示す。具体的には、図8に示すように、クライアントは、要求を生成し、それを、アウトバウンドTCP接続を介して特定のサービングピアに送信する。さらに、ネットワーク配信では、TCPは、その要求を、同じピアに発行された前の要求とまとめることができる。前の要求が送信中に失われた場合、TCPは、その要求の再送信も処理する。
パケット要求がピアに配信された後、それはそのサービングピアのTCP受信バッファに格納される。次いで、そのピアは、それらの要求を一度に1つずつ処理する。各要求ごとに、ピアは、そのディスクまたはメモリ記憶から(使用される符号化に応じて、消去符号化されていることも、されていないこともある)要求されたブロックを読み取り、要求されたコンテンツをクライアントに返送する。サービングピアからクライアントへのTCPソケットがブロックされている、すなわち、それ以上の帯域幅が利用できない場合、サービングピアは、そのTCP接続が空くまで、それ以上のクライアント要求をブロックする。
要求がクライアントによって発行された時刻とその応答がクライアントによって受け取られた時刻の間隔は、要求完了時間(RFT)として定義される。要求は、普通、その応答よりずっと小さく、要求を処理するのに必要な諸動作、例えば、ディスク読取りなどは、通常、そのコンテンツを返送するのに使用されるネットワーク配信時間に比べると些細なものである。したがって、要求のRFT、T’rftは、式8によって以下のように計算される。
Figure 0004920220
式中、Thiはピアiのサービング帯域幅であり、Bi,outstandingはその要求の前の受け取られていない応答の長さであり、Bcurは要求されたコンテンツの長さである。したがって、RFTは、ピアのサービング帯域幅、要求のサイズおよびピアからの受け取られていないコンテンツのサイズの関数として求められる。
要求されたコンテンツパケットがクライアントに到着すると、それは直ちにステージングキューに移動される。ステージングキューでは、複数のピアからの(消去符号化ブロックを含み得る)データブロックが組み合わされ、復号化されてデータユニットになり、それらがさらに組み合わされてメディアパケットになる。クライアントは、ステージングキューから定期的に配信されたメディアパケットを取り出し、それらを対応するオーディオ/ビデオデコーダにプッシュする。メディアパケットがデコーダによって伸張された後、クライアント再生装置(表示モニタ、スピーカなど)上でのストリーミング再生のために、圧縮されていないオーディオ/ビデオデータストリームがオーディオ/ビデオレンダリング装置に送られる。
一実施形態では、図8に示すバッファを使って、パケット損失やジッタなどのネットワーク異常に対処する。(しかしながら、DirectShow(商標)実装形態を使用するとき、圧縮されていないオーディオ/ビデオバッファはDirectShowフィルタグラフの制御下にあり、プログラム不能である)。PeerStreamerの検査済みの一実施形態では、ステージングバッファのサイズは、Tstaging=2.5秒に設定され、所望のRFTはTrft=1.0秒に設定され、圧縮オーディオ/ビデオバッファは0.5秒に設定された。その結果として、この検査済みの実施形態では、PeerStreamerクライアントの合計バッファは約4秒になる。
消去符号化が使用される実施形態では、各データブロック要求は、ある一定のデータユニットの消去符号化ブロックのグループの要求として定式化される。この消去符号化ブロックグループは、開始ブロック索引および要求されるブロック数で識別可能である。データユニットは、32ビットIDによって識別可能である。ゆえに、要求は、
Data_Unit_ID[32],Start_Index[4],Number_of_Blocks[4] 式9
の形を取り、式中、括弧内の数は、各コンポーネントのビット数である。
したがって、式9で示すように、消去符号化ブロックの場合には、各要求は5バイト長である。他方、要求されるコンテンツのサイズは、128から2048バイトまでに及ぶ(データユニットの長さL=2048、k=16)。その結果、要求のサイズは、応答の約0.24から3.91%にすぎない。したがって、クライアントが要求を送信するのに費やされるアップロード帯域幅の量は、要求されるコンテンツに比べて非常に小さい。
3.2.6 PeerStreamer要求およびステージングキュー
前述のように、PeerStreamerクライアントは、(消去符号化されている可能性のある)受信データブロックを保持するために単一のステージングキューを維持し、そこからデータブロックが組み立てられてデータユニットになり、次いで、メディアパケットになる。クライアントは、各ピアに送られた未完了の要求を保持するために、各サービングピアごとの別個の要求キューも維持する。これらの要求およびステージングキューの一例を図9に示す。
ステージングキューは、PeerStreamerクライアントの主ストリーミングバッファである。すべての受信コンテンツは、まず、ステージングキューに置かれる。要求キューは、1)スループット制御および負荷均衡化を実行する、2)各サービングピアによって返送された応答を識別する、および3)切断されたピアを処理するという3つの目的を果たす。
要求キューの第1の機能は、サービングピア間で負荷を均衡化させることである。メディアが消去符号化されている場合、データユニットを求める要求は、各グループが1つのピアに宛先指定されている、消去符号化ブロックの複数のグループの要求に分割される。これらの要求は、以下の動作によって生成される。データユニットを要求すると、クライアントは、まず、各ピアの可用性ベクトルをチェックし、そのデータユニットについて各ピアによって保持されている消去符号化ブロック数(ai)を計算する。すべてのオンラインのピアによって保持されている合計ブロック数がk未満である場合、そのデータユニットは取り出し不能である。その取り出し不能データユニットが非必須である(すなわち、埋め込み符号化メディアの基本階層ではない)場合、クライアントは、単に、そのデータユニットをスキップするだけである。
逆に、その取り出し不能データユニットが必須である、すなわち、非埋め込み符号化メディアパケット、または埋め込み符号化メディアパケットの基本階層に属する場合、クライアントは、そのストリーミングメディアのダウンロードおよび再生を開始することができない。したがって、一実施形態では、クライアントは、欠けているブロックを供給するためにより多くのピアがオンラインになるのを待つ。別の実施形態では、クライアントは、そのメディア全体をスキップし、次のオーディオ/ビデオデコーダに対して、それが欠けているとマークする。結果として、レンダリングされるメディアにはギャップまたはスキップが生じることになる。しかしながら、1つの必須データユニットがそのピアクラスタから取り出し不能である場合、それ以外の後続の必須データユニットも取り出し不能である可能性が非常に高い。したがって、通常は、ユーザにより良い再生体験を提供するために、そのデータが利用可能になるまでクライアントに待たせる方がよい。
個々のデータユニットが取り出し可能であること、すなわち、
Σii≧k 式10
を確認した後、クライアントは、各ピアの要求キュー中での利用可能な空間をチェックする。各ピアのRFTを、システム定数Trft程度に維持することが望ましい。検査済みの一実施形態では、約1.0秒程度のTrftが良い結果をもたらした。(短すぎる要求キューを使用すると、クライアントからピアまでの帯域幅を効率よく利用することができないことに留意されたい。)
特に、クライアントによって送信される要求パケットが失われ、または遅延した場合、サービングピアは、送信するものがない状態のままに置かれる可能性があり、これはそのサービング帯域幅を無駄にする。逆に、過度に長い要求キューを使用すると、クライアントが、ピアの1つの切断などの変化に迅速に適応することが妨げられる可能性がある。さらに、すべてのピアでの要求キューがRFTにおいて同じ長さである場合、要求キューの容量は、そのサービング帯域幅に比例し、すなわち、Thi・Trftになる。
例えば、Trftが1.0秒であると仮定すると、16kbpsのサービング帯域幅を持つピアは、2KBの未完了要求をその要求キュー中で待機させることができ、1Mbpsのサービング帯域幅を持つピアは、128KBの未完了要求を待機させることができる。ゆえに、個々のピアに要求することのできる消去符号化ブロックの数は、以下のように、その要求キューに残されている空間によって上限が決まる。
i=min(αi,(Thi・Trft−Bi,outstanding)/bk) 式11
式中、eiは、ピアiに要求することのできる消去符号化ブロックの数であり、bkは、消去符号化ブロックのサイズである。
式11は、クライアントが、Trftより大きい期待されるRFTを持つ要求を決して送信しないことを保証する。クライアントが、十分な現在利用可能な消去符号化ブロックを見つけられない場合、すなわち、
Σii<k 式12
である場合、クライアントは、サービングピアの要求キューがクリアされるまで待機する。データユニット要求は、Σii≧kであるときにだけ形成され、各ピアに送信される。特定のピアに要求されるブロックの実数(bi)は、以下のように計算される。
Figure 0004920220
式中、cはΣii=kを満たす定数である。
一般に、前述の手順は、各ピアに、そのサービング帯域幅Thiに比例してサービング負荷を割り振る(式13)。また、これは、クライアントが、個々のサービングピアに、そのサービングピアによって実際にキャッシュされ、または格納されているブロック数を上回るブロックを要求しないことも保証する。最後に、この手順は、式11に示すように、要求のRFTがTrftを上回らないことも保証する。
要求キューの第2の機能は、各サービングピアによって返送されるコンテンツを識別することである。前述のように、PeerStreamerクライアントおよびピアはTCPを介してやりとりし、これは、データ送信の順序を保存し、パケット配信を保証する。さらに、各ピアは、着信要求を順次処理する。その結果、返送されるコンテンツを明確に識別する必要がなくなる。というのは、それが、各ピアごとの要求キュー中で待機している最初の要求のためのものに他ならないからである。
前述の要求キューの第3の機能について、この要求キューは、切断されたピアの要求の宛先変更にも使用される。例えば、特定のサービングピアがクライアントから切断されるたびに、TCPプロトコルによって切断イベントがピックアップされ、次いで、この切断がクライアントに報告される。次いで、クライアントは、切断されたピアのキューで待機中のすべての未完了要求を残りのピアの1つまたは複数に動的に再び割り当てる。要求を再割り当てする手順は、最初に要求を割り当てる手順に非常によく似ている。唯一の例外は、要求再割り当てにおいては、切断されたピアにすでに要求されたブロック数を考慮しなければならないことである。
最後に、消去符号化ブロックがクライアントに到着するたびに、それらは直ちにTCPソケットから引き離される。到着したコンテンツを待機中の要求と組み合わせた後、完了した要求が要求キューから除去される。次いで、識別された消去符号化ブロックがステージングキューに置かれる。その結果、ステージングキューのサイズが増大する。ステージングキューが所定のサイズTstagingに達した場合、それ以上のメディアパケット/データユニットの要求は送信されない。あるデータユニットのすべての消去符号化ブロックが受け取られると、そのデータユニットは消去復号化され、作動可能とマークされる。メディアパケットは、その要求データユニットすべてが作動可能であれば作動可能になる。オーディオ/ビデオデコーダは、定期的に、ステージングキューから「作動可能」メディアパケットを取り出す。これは、ステージングキューのサイズを縮小させ、新しいメディアパケット要求の生成をトリガすることができる。
次いで、前述のメディアストリーミング動作が、そのメディアファイルの再生が完了するまで、またはそのメディアをストリーミングするのに利用可能なピアの数が不足するようなときまで、あるいはユーザがそのストリーミングセッションを終了するまで続行される。
3.3 PeerStreamer動作
前述の、図2から図9に関連する各プロセスを、図10の全体動作流れ図に示す。図10には、全体として、PeerStreamerのいくつかの動作実施形態を示す例示的動作流れ図が示されている。図10に破線または点線で表す任意のボックスおよびボックス間の相互接続は、本明細書で説明するPeerStreamerの代替実施形態を表すこと、およびこれらの代替実施形態のいずれかまたはすべては、以下で説明するように、本明細書全体にわたって説明する他の代替実施形態と組み合わせて使用され得ることに留意すべきである。
具体的には、図10に示すように、メディアストリーミング動作の前に、(ピア220の1つとすることもできる)サーバ200は、ストリーミングされるメディアを符号化する(1000)。前述のように、PeerStreamerは、例えば、MPEG1/2/4、WMA、WMVといった、いくつかの従来のコーデックのいずれかと共に動作することができる。また、符号化プロセス1000の間に、サーバ200は、前述のメディアヘッダも、メディア構造を含むコンパニオンファイルも生成する。
前述のように、一実施形態では、メディアが符号化される(1000)と、符号化されたメディアパケットが、いくつかの固定サイズのデータユニットに分割される(1005)。さらに、符号化メディアと同様に、メディアヘッダおよびメディア構造も、符号化メディアパケットを分割するのに使用されたのと同じ固定サイズのいくつかのデータユニットに分割される。前述のように、この情報を固定長のデータユニットに分割すること(1005)により、クライアントとサービングピアの両方が、メディアストリーミング動作の前にメモリブロックを事前に割り振ることができるようになり、ストリーミングプロセス中の、計算上高くつくメモリ割り振り動作が回避される。さらに、より小さいデータユニットの使用により、ストリーミング動作中のクライアントデータユニット要求を満たすための、各サービングピアにより消費される正確な帯域幅の量に対するクライアントのよりきめ細かい制御が可能になる。
符号化メディア、メディアヘッダ、およびメディア構造をより小さいデータユニットに分割すること(1005)に加えて、一実施形態では、別の符号化階層を使って、サービングピアが本来的に低信頼である典型的なP2P環境でさらなる冗長性が提供される。具体的には、前述のように、一実施形態では、キーベースの高速消去耐性符号化プロセス1010を使って、各データユニットが、さらにいくつかのデータブロックに分割される。
そのような符号化1010の使用は、ピアの1つまたは複数が、個々のデータユニットを再構築するのに必要なデータブロックを持つと同時に、それらのピアのどれが必要なデータを含むか識別するクライアント側での要求を簡略化することを保証する。さらに、前述のように、一実施形態では、各サービングピア220によって使用される消去耐性符号化キーがサーバ200によって各ピアに自動的に割り当てられる。しかしながら、別の実施形態では、各サービングピア220は、単に、ランダムに1つの消去耐性符号化キーを選択するだけである。その場合、これらのキーは、各ピア220がクライアント210によって最初に接続されるときにそのクライアントによって取り出される前述の可用性ベクトルと共に含まれる。ランダムなキーの実施形態では、クライアントは、所与のデータユニットについてキー競合がある場合には、1つまたは複数のピアのそのキーを無効化する。
メディアが最初に符号化され(1000)、データユニットに分割され(1005)、おそらくさらに消去符号化される(1010)と、結果として生じるデータユニットまたはデータブロックが様々なサービングピア220に分散される(1015)。この分散(1015)は、符号化メディアの各ブロックまたはパケットが、単に、全体として、または部分的に、いくつかのピアに提供され、次いでそこで、P2Pネットワークに加わったクライアントによって呼び出されたときの将来のストリーミング動作のためにキャッシュされ、または格納されるという意味で、意図的なものといえる。
代替としては、前述のように、クライアント210が特定のメディアファイルをストリーミングするたびに、回復されるメディアパケットが符号化動作1000後のメディアパケットになる。それらをデータユニットに分割し(1005)、おそらくさらに消去符号化する(1010)ことができ、クライアントは、そこにストリーミングされたコンテンツの少なくとも一部を、ローカルメモリまたは記憶装置内に維持することができる。次いで、クライアントは、将来のストリーミング動作での(前述のピアリスト310中の)サービングピア220として識別される。この実施形態の1つの利点は、個々のメディアファイルの各部分を含むピアの数が最初は小さく、そのため、サービング要求を満たすサーバ自体の側での需要が増大するが、時間が経過し、より多くのクライアントがそのメディアをストリーミングするにつれて、それらのクライアントが、その後のストリーミング要求でのピアとして働くことができるようになることである。その結果として、ストリーミングされるメディアの全部または一部の最初のキャッシュを保持するようにサービングピア220を明示的に選択する必要がなくなる。その結果、ストリーミングされるメディアの最初のキャッシュを受け入れることをいとわないピアを識別しようとすることに関するサーバ側での任意の要求はさらに少なくなる。
どちらの場合も、メディアがサービングピア220に分散される(1015)と、クライアント210は、それらのサービングピアへのストリーミング要求を開始することができる。さらに、前述のように、サーバ200は、クライアント210へのストリーミングのためのサービングピア220としても働くことができる。再度、前述の説明を考察すると、個々のメディアファイルの最初のストリーミングはより大きなサーバ200の関与を必要とし得るが、時間が経過し、より多くのクライアント210がそのメディアをストリーミングする(次いで、サービングピアとして働くために利用可能になる)につれて、実際にサービングピアとして働くサーバ側での要求は低下し、または無くなりさえする。
この時点で、クライアント210はストリーミングセッションを開始し、まず、利用可能なサービングピア220のリスト310を取り出す。前述のように、リスト310は、サーバ200から直接、ピア220の1つから、あるいは従来のDHT法315を用いて可能なサービングピアを識別することによって取り出される。クライアント210は、ピアリスト310を取り出すと、次いで、各サービングピア220に接続し、各ピアから可用性ベクトルを取り出す(1025)。さらに、一実施形態では、クライアント210は、進行中のストリーミング動作中に、ピアリスト310への更新1030の有無を定期的にチェックする(1030)。そのような定期的チェック(1030)の1つの利点は、大規模なP2Pネットワークでは、任意の所与の時点において、複数のサービングピアがオンラインになり、オフラインになる可能性があることである。したがって、クライアント210が更新されたピアリスト310を持つようにすることは、そのクライアントが、現在そのクライアントにメディアをストリーミングしているピア220の損失または劣化に応答できるようにする。リスト310の定期的チェック(1030)が新規のピア220のリストへの追加を指示するたびに、クライアント210は、また、その新規のピアに接続し、その新規のピアの可用性ベクトルを取り出す(1025)。
クライアント210は、各ピア220の可用性ベクトルを取り出す(1025)と、次いで、クライアントとそれらのピアの間のネットワーク接続を介してそれらのピアの1つまたは複数にその情報に対応するデータユニットを要求することによって、サービングピアの1つまたは複数からストリーミングされるメディアのメディアヘッダおよびメディア構造を取り出す(1035)。
前述のように、メディアヘッダは、一般に、そのメディアを記述する全体的情報、例えば、メディア中のチャネル数、各チャネルの属性および特性(オーディオサンプリング速度、ビデオ解像度/フレーム速度)、使用されるコーデック、メディアの著者/著作権保持者などを含む。したがって、メディアストリーミングセッションの開始時にメディアヘッダを取り出せば、クライアント220は、その後に受け取るパケットを復号化し(1070)、レンダリングする(1075)ための必要なツールを、そのストリーミングセッション中にそれらのパケットを受け取る前にセットアップし、または初期設定する(1040)ことができる。
さらに、特定のストリーミングメディアのメディア構造を取り出した(1035)後、クライアントは、そのメディア構造を分析し、そのストリーミングプロセス中に要求される必要のあるストリーミングメディアのデータユニットのデータユニットIDを計算する(1045)。次いで、クライアント210は、サービングピア220の1つまたは複数に、それらのデータユニットを1つずつ要求する(1050)。
さらに、前述のように、消去符号化が符号化キーのランダムピア選択と組み合わせて使用される実施形態では、クライアント210は、キー競合をうまく処理する(1055)ために、ピア220の1つまたは複数で重複するキーを無効化する。関連する一実施形態では、PeerStreamerは埋め込み符号化メディアを使用し、その場合、各ピア220ごとのデータ要求(およびストリーミングビット速度)は、利用可能なサービング帯域幅およびクライアント210キュー状況に従って処理される(1060)。この場合、進行中のデータユニットを求める要求(1050)は、様々なサービングピアの利用可能な帯域幅に基づいて最小の速度ひずみを提供するパケットに対応する。どちらの場合も、前述のように、欠けている、または遅れているデータユニットは、埋め込み符号化が使用されているか、それとも非埋め込み符号化が使用されているか、各ピアの接続状況、および欠けている、または遅れているデータユニットを要求し、受け取るための残り時間に応じて、同じ、または代替のピア220に再度要求される(1050)。
最後に、クライアント220要求(1050)に従って特定のメディアパケットを構成するデータユニットのすべてが取り出されると、それらのデータパケットは、再組み立てされて元のメディアパケットになる(1065)。次いで、再組み立てされたメディアパケットは、復号化され(1070)、レンダリングされ(1075)、再生のために、従来の表示装置355またはスピーカ260、あるいはその両方に提供される。
以上のPeerStreamerの説明は、図示および説明のために提示したものである。この説明では、網羅的であることも、本発明を開示の通りの形に限定することも意図されていない。前述の教示を考慮すれば多くの変更および変形が可能である。さらに、前述の代替実施形態のいずれかまたはすべてを、所望の任意の組合せで使って、別のPeerStreamerの混成実施形態を形成することもできることに留意すべきである。本発明の範囲は、この詳細な説明によってではなく、添付の特許請求の範囲によって限定されることが意図されている。
本明細書で説明する、「PeerStreamer」を実施する例示的システムを構成する汎用コンピューティングデバイスを示す全体システム図である。 本明細書で説明する、受信側主導のメディアストリーミングのための例示的ピアツーピア(P2P)ネットワークを示す図である。 本明細書で説明する、PeerStreamerを実施するプログラムモジュールを示す例示的アーキテクチャの流れ図である。 本明細書で説明する、ストリーミングメディアファイルのファイル形式を示す図である。 本明細書で説明する、PeerStreamerによって検査済みの実施形態で使用された「データユニット」を示す図である。 本明細書で説明する、8個のデータユニットに分割されている埋め込み符号化メディアパケットの部分キャッシングを示す図である。 クライアントPeerStreamerメディアストリーミングセッションのDirectShow(商標)フィルタグラフの一例を示す図である。 本明細書で説明するPeerStreamerの要求およびステージングキュー、ならびにストリーミングメディアの復号化、レンダリングおよび再生を表す、システムバッファが破線で示されたアーキテクチャシステム図である。 到着データユニットでのPeerStreamerクライアントステージングキュー、および各サービングピアごとのPeerStreamerクライアント要求キューを示すブロック図である。 本明細書で説明する、PeerStreamerの一実施形態の一般的動作を示す動作流れ図である。
符号の説明
120 処理装置
130 システムメモリ
134 オペレーティングシステム
144 オペレーティングシステム
145 アプリケーションプログラム
136 その他のプログラムモジュール
146 その他のプログラムモジュール
137 プログラムデータ
147 プログラムデータ
140 固定式不揮発性メモリインターフェース
150 着脱式不揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 広域ネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
198 マイクロホン
199 オーディオインターフェース
200 サーバ
210 クライアント
220 サービングピア
300 メディア符号化モジュール
305 ピア位置検出モジュール
310 ピアリスト
315 分散ハッシュ表
320 可用性ベクトル取り出しモジュール
325 メディアヘッダ/メディア構造分析モジュール
330 クライアント構成モジュール
335 データユニットID計算モジュール
340 データユニット要求モジュール
345 データユニット処理モジュール
350 復号化/レンダリング/再生モジュール
805 TCP送信バッファ(サーバ)
810 TCP受信バッファ(サーバ)
815 ステージングキュー(クライアント)
820 TCP送信バッファ(クライアント)
830 圧縮オーディオ
840 圧縮ビデオ
845 オーディオデコーダ
850 ビデオデコーダ
855 圧縮されていないオーディオ
860 圧縮されていないビデオ
865 オーディオレンダリング
870 オーディオレンダリング

Claims (26)

  1. ピアツーピア(P2P)ネットワークでのマルチメディアデータパケットのクライアントドリブンのストリーミングを提供するコンピュータ実行可能命令を記録するコンピュータ読み取り可能な記録媒体において、
    前記コンピュータ実行可能命令は、
    クライアントコンピュータ上で複数のクライアントリクエストキューを保持することであって、各クライアントリクエストキューはサービングピアのクラスタ内の複数のサービングピアのうちの1つに対応すること、
    1つ又は複数のデータパケットのクライアントリクエストを前記クライアントコンピュータから前記サービングピアのうちの1つ又は複数に送信することであって、サービングピアへの前記クライアントリクエストは、TCP通信プロトコルを介して提供されるため、前記サービングピアが前記クライアントリクエストに応答して送る前記データパケットを識別する必要がないこと、
    データパケットリクエストが前記クライアントコンピュータから前記サービングピアの一つに送信される場合、各データパケットリクエストを前記対応するリクエストキューに追加すること、
    前記クライアントコンピュータが前記サービングピアから前記対応するデータパケットを受信する場合に、各データパケットリクエストを前記対応するリクエストキューから取り出すこと、
    前記クライアントコンピュータが保持する共通ステージングキューに各受信データパケットを提供すること、
    前記共通ステージングキュー内の前記データパケットを対応するマルチメディアデータパケットに集めること、
    を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
  2. クライアントコンピュータ上で複数のクライアントリクエストキューを保持することは、前記サービングピアのクラスタに続いて加わる追加のサービングピアに対応する追加のクライアントリクエストキューを作成すること及び保持することを更に含むことを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  3. クライアントコンピュータ上で複数のクライアントリクエストキューを保持することは、前記サービングピアのクラスタから除外されたサービングピアに対応するリクエストキューに残存するデータパケットリクエストを1つ又は複数の他のクライアントリクエストキューに移すことを更に含むことを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  4. 前記サービングピアのクラスタ内の各サービングピアにおいて大体一致するリクエスト達成時間(RFT)を保持するデータパケットリクエストのクライアントマネージメントを提供することにより、前記サービングピアのクラスタ内の前記各サービングピアにおいて負荷バランシングを維持することを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  5. 前記クライアントコンピュータがサービングピアから受信する入力パケットは、前記データパケットを提供した前記サービングピアに対応する前記リクエストキュー内の第1のデータパケットリクエストに対応することを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  6. 特定のサービングピアへの特定のデータパケットのクライアントリクエストは、前記各サービングピアから取り出された可用性ベクトルのクライアント分析に基づいてなされ、各サービングピアから受信される前記可用性ベクトルは、対応する各サービングピアに格納される利用可能なデータパケットを少なくとも定義することを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  7. 前記クライアントコンピュータ上で前記集められたマルチメディアデータパケットをデコーディングしレンダリングし、前記クライアントコンピュータ上でストリーミングメディア再生を提供することを更に含むことを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  8. 前記データパケットは、埋め込みコード化データパケットであることを特徴とする請求項1記載のコンピュータ読み取り可能な記録媒体。
  9. 1つ又は複数のデータパケットの前記クライアントリクエストを前記サービングピアのうちの1つ又は複数に自動的に制限することによって、埋め込み各コード化データパケットのストリーミングビットレートでクライアント制御を維持することを更に含み、前記制限は、
    前記サービングピアの集合サービング帯域幅、
    前記共通ステージングキューのサイズ、
    所望のリクエスト達成時間、
    前記共通ステージングキュー内の受信パケット長、
    各リクエストキュー内の未リプライの長さ、
    前記埋め込み符号化データパケットの基層ビットレート
    に応じることを特徴とする請求項記載のコンピュータ読み取り可能な記録媒体。
  10. ピアツーピア(P2P)ネットワークにおけるメディアファイルのクライアント制御ストリーミングを提供する方法において、コンピューティングデバイスを用いて、
    メディアヘッダとメディア本体を備える符号化されたメディアファイルの1つ又は複数のパケットを利用可能なサービングピアのクラスタ内の1つ又は複数のサービングピア上に格納し、これにより、前記符号化されたメディアファイルが前記サービングピアの少なくとも一つにキャッシュされるようにすること、
    前記クライアントを使用し、前記クライアントが利用可能な複数のサービングピアのリストを取り出すこと
    前記クライアント上で複数のパケットリクエストキューを保持することであって、各パケットリクエストキューは、サービングピアのクラスタ内の複数のサービングピアのうちの1つに対応すること、
    データパケットリクエストが前記クライアントから前記サービングピアの一つに送信される場合、各データパケットリクエストを前記対応するパケットリクエストキューに追加すること、
    前記クライアントが前記サービングピアから前記対応するデータパケットを受信する場合、前記対応するパケットリクエストキューから各データパケットリクエストを取り出すこと、及び、
    前記受信されたデータパケットをデコーディングしレンダリングし、前記クライアント上でストリーミングメディア再生を提供することを特徴とする方法。
  11. 可用性ベクトルを各利用可能なサービングピアから前記クライアントにダウンロードすることを更に備え、各可用性ベクトルは、各対応するサービングピアに格納される利用可能なデータパケットを表し、1つ又は複数の特定のデータパケットに対するクライアントリクエストは前記ダウンロードされた可用性ベクトルに基づくことを特徴とする請求項10記載の方法。
  12. 前記受信データパケットをデコーディングしレンダリングすることは、前記クライアント上で再生する前に、前記デコードされレンダリングされたデータパケットの少なくとも一部をバッファリングすることを更に含むことを特徴とする請求項10記載の方法。
  13. 前記クライアント上で複数のパケットリクエストキューを保持することは、前記サービングピアのクラスタに加わるサービングピアに対応する追加のパケットリクエストキューを作成し維持することを更に含むことを特徴とする請求項10記載の方法。
  14. 前記クライアントが利用できなくなるサービングピアに対応する前記パケットリクエストキューに残存するデータパケットを1つ又は複数の前記他のパケットリクエストキューに移すことと、前記対応するサービングピアに前記対応するパケットを要求することを更に含むことを特徴とする請求項10記載の方法。
  15. 前記利用可能なサービングピアの各々において所望のリクエスト達成時間(RFT)を維持するためのデータパケットリクエストの動的クライアントマネージメントを提供することによって、前記利用可能な各サービングピア間の帯域幅負荷バランシングを実行することを更に含むことを特徴とする請求項10記載の方法。
  16. サービングピアへの前記クライアントデータパケットリクエストは、前記サービングピアが特別の各クライアントリクエストに応答して送信される前記データパケットを識別しないTCP通信プロトコルを介して提供され、前記クライアントがサービングピアから受信する入力データパケットは、前記データパケットを提供した前記サービングピアに対応する前記リクエストキュー内の第1のデータパケットリクエストに対応することを特徴とする請求項10記載の方法。
  17. 前記データパケットは、埋め込みコード化データパケットであり、クライアント制御は、1つ又は複数の特定のデータパケットのクライアントリクエストを1つ又は複数の特定のサービングピアに自動的に制限することによって、各埋め込みコード化データパケットのストリーミングビットレートで維持されることを特徴とする請求項10記載の方法。
  18. 前記サービングピアの集合サービング帯域幅、
    前記共通ステージングキューのサイズ、
    所望のリクエスト達成時間、
    前記共通ステージングキュー内の受信パケット長、
    各パケットリクエストキューの長さ、および
    前記埋め込み符号化データパケットの基層ビットレートに応じて、前記クライアントリクエストを自動的に制限することを特徴とする請求項17記載の方法。
  19. 数の非協働ピアのクラスタからクライアントドリブンのメディアストリーミングを調整するシステムにおいて、
    クライアントとの通信に利用可能なサービングピアのクラスタ内の複数のサービングピアにおける符号化されたメディアファイルの全パケットを分散させること、
    クライアントリクエストに応答して、前記クラスタ内の前記複数のサービングピアのリストを前記クライアントに提供すること、
    記クライアント上に複数のパケットリクエストキューを提供することであって、各パケットリクエストキューは、前記サービングピアのクラスタ内の前記複数のサービングピアのうちの一つに対応すること
    データパケットリクエストが前記クライアントから前記サービングピアの一つに送信される場合、各データパケットリクエストを前記対応するパケットリクエストキューに追加すること、
    前記クライアントが前記サービングピアから前記対応するデータパケットを受信する場合、前記対応するパケットクエストキューから各データパケットリクエストを取り出すこと、
    クライアントステージングキューに各受信データパケットをキャッシングすること、および、
    前記受信データパケットをデコーディングしレンダリングし前記クライアント上でストリーミングメディア再生を提供すること
    を備えることを特徴とするシステム。
  20. クライアントリクエストに応答して前記クラスタ内の各サービングピアから可用性ベクトルを提供することを更に備え、前記各可用性ベクトルは対応する各サービングピアに格納される利用可能なデータパケットを表すことを特徴とする請求項19記載のシステム。
  21. 1つ又は複数の特定のデータパケットに対する1つ又は複数のクライアントリクエストを、前記クラスタ内の1つ又は複数の特定のサービングピアに送信することは、前記クラスタ内の各サービングピアに対応する前記可用性ベクトルのクライアント分析に基づくことを特徴とする請求項20記載のシステム。
  22. 前記クライアントステージングキューの前記長さは、前記受信データパケットをデコーディングしレンダリングする前に、前記リクエストされたデータパケットの所望のバッファリング量を提供するために変化することを特徴とする請求項19記載のシステム。
  23. 記クライアント上の複数のパケットリクエストキューを提供することは、前記クラスタに加わり及び前記クラスタから離れるサービングピアに応答してクライアントリクエストキューを動的に追加し及び取り出すことを更に備えることを特徴とする請求項19記載のシステム。
  24. 前記クラスタから離れるサービングピアに応答してクライアントリクエストキューを取り出すことは、取り出されたクライアントリクエストキュー内に残存するデータパケットリクエストを1つ又は複数の他のクライアントリクエストキューに移すことと、前記対応するサービングピアに前記対応するパケットをリクエストすることを備えることを特徴とする請求項19記載のシステム。
  25. 前記クラスタ内の各サービングピアの所望のリクエスト達成時間(RFT)を維持するためにクライアントデータパケットリクエストを動的にバランシングすることにより、前記クラスタ内の前記各サービングピア間の帯域幅負荷バランシングを実行することを更に備えることを特徴とする請求項19記載のシステム。
  26. 前記クライアントデータパケットリクエストは、TCP通信プロトコルを介して前記様々なサービングピアに送信され、前記クライアントが特定のサービングピアから受信する入力データパケットは、前記対応するクライアントリクエストキュー内の第一のデータパケットに対応することを特徴とする請求項19記載のシステム。
JP2005251994A 2004-09-03 2005-08-31 ピアツーピアネットワークでの受信側主導のシステム及び方法 Active JP4920220B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/934,823 US7664109B2 (en) 2004-09-03 2004-09-03 System and method for distributed streaming of scalable media
US10/934,823 2004-09-03
US10/951,482 US7174385B2 (en) 2004-09-03 2004-09-28 System and method for receiver-driven streaming in a peer-to-peer network
US10/951,482 2004-09-28

Publications (3)

Publication Number Publication Date
JP2006079606A JP2006079606A (ja) 2006-03-23
JP2006079606A5 JP2006079606A5 (ja) 2009-01-08
JP4920220B2 true JP4920220B2 (ja) 2012-04-18

Family

ID=35447794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005251994A Active JP4920220B2 (ja) 2004-09-03 2005-08-31 ピアツーピアネットワークでの受信側主導のシステム及び方法

Country Status (4)

Country Link
US (3) US7174385B2 (ja)
EP (1) EP1643716B1 (ja)
JP (1) JP4920220B2 (ja)
KR (1) KR101183430B1 (ja)

Families Citing this family (290)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391865B2 (en) 1999-09-20 2008-06-24 Security First Corporation Secure data parser method and system
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US8544038B2 (en) * 2006-12-08 2013-09-24 Sirius Xm Radio Inc. System for insertion of locally cached information into a received broadcast stream
GB0031157D0 (en) * 2000-12-20 2001-01-31 Ncr Int Inc Streaming of data
NL1017388C2 (nl) * 2001-02-16 2002-08-19 Marc Van Oldenborgh Organisch datanetwerk met een dynamische topologie.
US8713623B2 (en) 2001-09-20 2014-04-29 Time Warner Cable Enterprises, LLC Technique for effectively providing program material in a cable television system
JP4555072B2 (ja) 2002-05-06 2010-09-29 シンクロネイション インコーポレイテッド ローカライズされたオーディオ・ネットワークおよび関連するディジタル・アクセサリ
US20040107242A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
US7146185B2 (en) * 2003-06-12 2006-12-05 Richard Lane Mobile station-centric method for managing bandwidth and QoS in error-prone system
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US8312267B2 (en) 2004-07-20 2012-11-13 Time Warner Cable Inc. Technique for securely communicating programming content
US8266429B2 (en) 2004-07-20 2012-09-11 Time Warner Cable, Inc. Technique for securely communicating and storing programming material in a trusted domain
KR100584323B1 (ko) * 2004-10-04 2006-05-26 삼성전자주식회사 멀티미디어 컨텐츠의 스트리밍 서비스 방법
BRPI0517026A (pt) 2004-10-25 2008-09-30 Rick L Orsini método e sistema analisador de dados seguros
US20060095582A1 (en) * 2004-10-29 2006-05-04 Narasimhan Nitya Device and method for transferring apportioned data in a mobile ad hoc network
KR100684178B1 (ko) * 2004-11-06 2007-02-20 한국전자통신연구원 강건한 오버레이 멀티캐스트 트리 관리 방법 및 장치
US9723267B2 (en) 2004-12-15 2017-08-01 Time Warner Cable Enterprises Llc Method and apparatus for wideband distribution of content
US7689814B2 (en) * 2004-12-20 2010-03-30 Sony Computer Entertainment Inc. Methods and apparatus for disabling error countermeasures in a processing system
US8046426B2 (en) * 2004-12-30 2011-10-25 Massachusetts Institute Of Technology Random linear coding approach to distributed data storage
US8102837B2 (en) * 2004-12-30 2012-01-24 Massachusetts Institute Of Technology Network coding approach to rapid information dissemination
US7664872B2 (en) * 2005-01-05 2010-02-16 Divx, Inc. Media transfer protocol
US20060168291A1 (en) * 2005-01-05 2006-07-27 Van Zoest Alexander Interactive multichannel data distribution system
US7533182B2 (en) * 2005-01-24 2009-05-12 Starz Media, Llc Portable screening room
US7508812B2 (en) * 2005-01-28 2009-03-24 Research In Motion Limited Socket management for always-on data connections
US7567565B2 (en) 2005-02-01 2009-07-28 Time Warner Cable Inc. Method and apparatus for network bandwidth conservation
US7602820B2 (en) 2005-02-01 2009-10-13 Time Warner Cable Inc. Apparatus and methods for multi-stage multiplexing in a network
US7639627B1 (en) * 2005-02-18 2009-12-29 Sprint Communications Company L.P. System and method for trace replay using parallelized streams
US20080022343A1 (en) * 2006-07-24 2008-01-24 Vvond, Inc. Multiple audio streams
US8904463B2 (en) * 2005-03-09 2014-12-02 Vudu, Inc. Live video broadcasting on distributed networks
US8219635B2 (en) * 2005-03-09 2012-07-10 Vudu, Inc. Continuous data feeding in a distributed environment
US9176955B2 (en) * 2005-03-09 2015-11-03 Vvond, Inc. Method and apparatus for sharing media files among network nodes
US20060224759A1 (en) * 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development Co., Ltd. System and method for a peer-to-peer streaming content operation by a browser plug-in
US20060212595A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and computer-readable medium for associating sequence numbers with data blocks for distribution of data in a peer-to-peer network
US20060224760A1 (en) * 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and system for providing streaming content in a peer-to-peer network with network coding
US20060230107A1 (en) * 2005-03-15 2006-10-12 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for multimedia playback and recording in a peer-to-peer network
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US8099511B1 (en) * 2005-06-11 2012-01-17 Vudu, Inc. Instantaneous media-on-demand
US20060287994A1 (en) * 2005-06-15 2006-12-21 George David A Method and apparatus for creating searches in peer-to-peer networks
TWI318833B (en) * 2005-06-22 2009-12-21 Asustek Comp Inc Network device, local network system, and network transmitting method
US20070011343A1 (en) * 2005-06-28 2007-01-11 Microsoft Corporation Reducing startup latencies in IP-based A/V stream distribution
JP2007028364A (ja) * 2005-07-20 2007-02-01 Matsushita Electric Ind Co Ltd 通信制御装置、受信装置、集積回路、及び通信制御方法
US20070022459A1 (en) 2005-07-20 2007-01-25 Gaebel Thomas M Jr Method and apparatus for boundary-based network operation
US8250137B1 (en) 2005-09-19 2012-08-21 Apple Inc. Peer to peer component distribution
US8224968B1 (en) * 2005-09-19 2012-07-17 At&T Intellectual Property Ii, L.P. Method and system for scalable content storage and delivery
US7644173B1 (en) * 2005-09-26 2010-01-05 Roxbeam Media Network Corporation System and method for facilitating expedited delivery of media content
US8775655B2 (en) * 2005-10-21 2014-07-08 Roxbeam Media Network Corporation System and method for presenting streaming media content
BRPI0618725A2 (pt) 2005-11-18 2011-09-06 Rick L Orsini método analisador de dados seguro e sistema
JP5095631B2 (ja) * 2006-01-25 2012-12-12 フランス・テレコム マルチブロードキャストデータ伝送の信頼性を改善するシステム
US20070180079A1 (en) * 2006-01-30 2007-08-02 Santrum Networks Inc. Method and system for peer-to-peer stream
US7480848B2 (en) * 2006-02-10 2009-01-20 The Directv Group, Inc. Methods and apparatus to select tornado error correction parameters
US8904456B2 (en) * 2006-02-13 2014-12-02 Tvu Networks Corporation Methods, apparatus, and systems for providing media content over a communications network
US8718100B2 (en) 2006-02-27 2014-05-06 Time Warner Cable Enterprises Llc Methods and apparatus for selecting digital interface technology for programming and data delivery
US8170065B2 (en) 2006-02-27 2012-05-01 Time Warner Cable Inc. Methods and apparatus for selecting digital access technology for programming and data delivery
US8458753B2 (en) 2006-02-27 2013-06-04 Time Warner Cable Enterprises Llc Methods and apparatus for device capabilities discovery and utilization within a content-based network
US8001219B2 (en) * 2006-03-16 2011-08-16 Exceptional Innovation, Llc User control interface for convergence and automation system
US7966083B2 (en) * 2006-03-16 2011-06-21 Exceptional Innovation Llc Automation control system having device scripting
US8725845B2 (en) * 2006-03-16 2014-05-13 Exceptional Innovation Llc Automation control system having a configuration tool
US8155142B2 (en) * 2006-03-16 2012-04-10 Exceptional Innovation Llc Network based digital access point device
US8209398B2 (en) * 2006-03-16 2012-06-26 Exceptional Innovation Llc Internet protocol based media streaming solution
US7945694B2 (en) * 2006-03-27 2011-05-17 Rayv Inc. Realtime media distribution in a p2p network
WO2007124453A2 (en) 2006-04-20 2007-11-01 Exceptional Innovation Llc Touch screen for convergence and automation system
US7706260B2 (en) * 2006-04-26 2010-04-27 Bittorrent, Inc. End-system dynamic rate limiting of background traffic
WO2007127401A2 (en) * 2006-04-26 2007-11-08 Bittorrent, Inc. Peer-to-peer download and seed policy management
JP2007298056A (ja) * 2006-04-27 2007-11-15 Tsubakimoto Chain Co 防食性ローラチェーン
US8280982B2 (en) 2006-05-24 2012-10-02 Time Warner Cable Inc. Personal content server apparatus and methods
US9386327B2 (en) 2006-05-24 2016-07-05 Time Warner Cable Enterprises Llc Secondary content insertion apparatus and methods
US7945689B2 (en) * 2007-03-23 2011-05-17 Sony Corporation Method and apparatus for transferring files to clients using a peer-to-peer file transfer model and a client-server transfer model
US8676882B2 (en) * 2007-02-27 2014-03-18 Sony Corporation System and method for preloading content segments to client devices in an electronic network
US7925781B1 (en) * 2006-05-26 2011-04-12 The Hong Kong University Of Science And Technology Distributed storage to support user interactivity in peer-to-peer video streaming
US8024762B2 (en) 2006-06-13 2011-09-20 Time Warner Cable Inc. Methods and apparatus for providing virtual content over a network
US8401535B2 (en) * 2006-06-19 2013-03-19 Samsung Electronics Co., Ltd. System, a method, and an apparatus for sharing an updated content with peers
JP5140666B2 (ja) * 2006-06-27 2013-02-06 トムソン ライセンシング パフォーマンスを考慮した、ピアツーピア・コンテンツ・オンデマンド
CN100452741C (zh) * 2006-06-29 2009-01-14 腾讯科技(深圳)有限公司 一种可扩展的p2p流媒体系统
CN101501682B (zh) * 2006-07-20 2012-09-05 汤姆森许可贸易公司 多方合作对等视频成流
GB2440774B (en) * 2006-08-11 2011-07-27 Cachelogic Ltd Content Delivery System For Digital Object
US8296812B1 (en) 2006-09-01 2012-10-23 Vudu, Inc. Streaming video using erasure encoding
WO2008038280A2 (en) 2006-09-28 2008-04-03 Rayv Inc. System and methods for peer-to-peer media streaming
US8520850B2 (en) 2006-10-20 2013-08-27 Time Warner Cable Enterprises Llc Downloadable security and protection methods and apparatus
US20080098123A1 (en) * 2006-10-24 2008-04-24 Microsoft Corporation Hybrid Peer-to-Peer Streaming with Server Assistance
US8732854B2 (en) 2006-11-01 2014-05-20 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution
WO2008073658A2 (en) * 2006-11-09 2008-06-19 Exceptional Innovation, Llc. Portable device for convergence and automation solution
US9386056B1 (en) * 2006-11-14 2016-07-05 Arris Enterprises, Inc. System, method and computer readable medium for providing media stream fragments
WO2008064356A1 (en) * 2006-11-22 2008-05-29 Metis Enterprise Technologies Llc Real-time multicast peer-to-peer video streaming platform
KR100836619B1 (ko) * 2006-11-24 2008-06-10 엔에이치엔(주) P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
US20080222236A1 (en) * 2006-11-27 2008-09-11 Christopher James Nason Method and system for processing data on a plurality of communication devices
US7996550B2 (en) * 2006-11-30 2011-08-09 Red Hat, Inc. Peer-to-peer download with quality of service fallback
US20080133545A1 (en) * 2006-12-04 2008-06-05 Electronics And Telecommunications Research Institute Terminal devices with function of distributing data and method and system for distributing multimedia data using the same
US20080178230A1 (en) 2006-12-05 2008-07-24 Crackle, Inc. Video sharing platform providing for public and private sharing and distributed downloads of videos
CA2670597A1 (en) * 2006-12-05 2008-06-12 Don Martin Improved tape backup method using a secure data parser
EP1936497A3 (en) * 2006-12-20 2009-04-08 NCR Corporation Automated wide area software distribution with reduced network bandwidth requirements
US20080160911A1 (en) * 2006-12-27 2008-07-03 Goosean Media Inc. P2P-based broadcast system and method using the same
US8621540B2 (en) 2007-01-24 2013-12-31 Time Warner Cable Enterprises Llc Apparatus and methods for provisioning in a download-enabled system
US20080189429A1 (en) * 2007-02-02 2008-08-07 Sony Corporation Apparatus and method for peer-to-peer streaming
DE102007007344A1 (de) 2007-02-14 2008-08-28 Siemens Ag Verfahren zum Verteilen zumindest eines Datensegments mindestens eines Datenstroms an eine Gruppe von mehreren Nutzern in einem Netzwerk, sowie ein Nutzer und ein System
KR20090000582A (ko) * 2007-02-27 2009-01-08 삼성전자주식회사 스트리밍 데이터를 중계하는 방법 및 장치
US20080209053A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation HTTP-Based Peer-to-Peer Framework
WO2008105030A1 (ja) * 2007-02-28 2008-09-04 Fujitsu Limited バックアップ装置
US7630370B2 (en) 2007-02-28 2009-12-08 Sharp Laboratories Of America, Inc. Overlay join latency reduction using preferred peer list
US8181206B2 (en) 2007-02-28 2012-05-15 Time Warner Cable Inc. Personal content server apparatus and methods
JP5319072B2 (ja) * 2007-03-16 2013-10-16 ソフトバンクBb株式会社 データ転送システム及びデータ転送方法
US20080235746A1 (en) 2007-03-20 2008-09-25 Michael James Peters Methods and apparatus for content delivery and replacement in a network
US20080244075A1 (en) * 2007-03-29 2008-10-02 Deh-Yung Kuo High performance real-time data multiplexer
US8019830B2 (en) * 2007-04-16 2011-09-13 Mark Thompson Methods and apparatus for acquiring file segments
WO2008137432A2 (en) * 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
US8024723B2 (en) * 2007-05-18 2011-09-20 Samsung Electronics Co., Ltd. System and method for peer-to-peer datacasting in a broadcasting network
US20080294788A1 (en) * 2007-05-21 2008-11-27 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Systems and methods for p2p streaming
US7898993B2 (en) * 2007-05-31 2011-03-01 International Business Machines Corporation Efficiency and resiliency enhancements for transition states in ad hoc networks
US8320414B2 (en) 2007-05-31 2012-11-27 International Business Machines Corporation Formation and rearrangement of lender devices that perform multiplexing functions
US8040863B2 (en) * 2007-05-31 2011-10-18 International Business Machines Corporation Demand pull and supply push communication methodologies
US8249984B2 (en) * 2007-05-31 2012-08-21 International Business Machines Corporation System and method for fair-sharing in bandwidth sharing ad-hoc networks
US7843861B2 (en) * 2007-05-31 2010-11-30 International Business Machines Corporation Coalition formation and service provisioning of bandwidth sharing AD HOC networks
US8520535B2 (en) 2007-05-31 2013-08-27 International Business Machines Corporation Optimization process and system for a heterogeneous ad hoc Network
US10623998B2 (en) 2007-05-31 2020-04-14 International Business Machines Corporation Price offerings for bandwidth-sharing ad hoc networks
US8620784B2 (en) 2007-05-31 2013-12-31 International Business Machines Corporation Formation and rearrangement of ad hoc networks
US7979311B2 (en) * 2007-05-31 2011-07-12 International Business Machines Corporation Payment transfer strategies for bandwidth sharing in ad hoc networks
US7873019B2 (en) * 2007-05-31 2011-01-18 International Business Machines Corporation Systems and methods for establishing gateway bandwidth sharing ad-hoc networks
US7817623B2 (en) * 2007-05-31 2010-10-19 International Business Machines Corporation Optimization process and system for non-multiplexed peer-to-peer architecture
US7860081B2 (en) * 2007-05-31 2010-12-28 International Business Machines Corporation Optimization process and system for multiplexed gateway architecture
US10419360B2 (en) 2007-05-31 2019-09-17 International Business Machines Corporation Market-driven variable price offerings for bandwidth-sharing ad hoc networks
CN101102312B (zh) * 2007-06-11 2010-06-02 华为技术有限公司 一种网络通信数据处理方法、网络通信系统及客户端
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
WO2009002325A1 (en) * 2007-06-28 2008-12-31 Thomson Licensing Queue-based adaptive chunk scheduling for peer-to-peer live streaming
WO2009005747A1 (en) * 2007-06-28 2009-01-08 The Trustees Of Columbia University In The City Of New York Set-top box peer-assisted video-on-demand
US8316146B2 (en) * 2007-07-13 2012-11-20 Spotify Ab Peer-to-peer streaming of media content
US8307024B2 (en) * 2007-07-20 2012-11-06 Hewlett-Packard Development Company, L.P. Assisted peer-to-peer media streaming
US8625607B2 (en) 2007-07-24 2014-01-07 Time Warner Cable Enterprises Llc Generation, distribution and use of content metadata in a network
US8296461B2 (en) * 2007-08-07 2012-10-23 Object Innovation Inc. Data transformation and exchange
JP5007624B2 (ja) * 2007-08-10 2012-08-22 ブラザー工業株式会社 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
US8078729B2 (en) * 2007-08-21 2011-12-13 Ntt Docomo, Inc. Media streaming with online caching and peer-to-peer forwarding
US8214475B1 (en) * 2007-08-30 2012-07-03 Amazon Technologies, Inc. System and method for managing content interest data using peer-to-peer logical mesh networks
WO2009029071A1 (en) * 2007-08-30 2009-03-05 Thomson Licensing A unified peer-to-peer and cache system for content services in wireless mesh networks
US8386630B1 (en) * 2007-09-09 2013-02-26 Arris Solutions, Inc. Video-aware P2P streaming and download with support for real-time content alteration
WO2009036461A2 (en) * 2007-09-13 2009-03-19 Lightspeed Audio Labs, Inc. System and method for streamed-media distribution using a multicast, peer-to-peer network
KR100919254B1 (ko) * 2007-09-19 2009-09-30 주식회사 그래텍 유디피 홀펀칭을 이용한 피어 대 피어 데이터 전송을 통해스트리밍 데이터를 분산 전송하는 분산 스트리밍 시스템 및그 방법
US8015311B2 (en) * 2007-09-21 2011-09-06 Polytechnic Institute Of New York University Reducing or minimizing delays in peer-to-peer communications such as peer-to-peer video streaming
US8561116B2 (en) 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
US9071859B2 (en) 2007-09-26 2015-06-30 Time Warner Cable Enterprises Llc Methods and apparatus for user-based targeted content delivery
US8392604B2 (en) * 2007-10-09 2013-03-05 Yahoo! Inc. Peer to peer browser content caching
US8099757B2 (en) 2007-10-15 2012-01-17 Time Warner Cable Inc. Methods and apparatus for revenue-optimized delivery of content in a network
US8606846B2 (en) * 2007-10-15 2013-12-10 Nbcuniversal Media, Llc Accelerating peer-to-peer content distribution
US20090100128A1 (en) * 2007-10-15 2009-04-16 General Electric Company Accelerating peer-to-peer content distribution
CN100568957C (zh) * 2007-10-17 2009-12-09 华中科技大学 一种基于p2p技术的视频点播节目缓存方法
US7975282B2 (en) * 2007-11-01 2011-07-05 Sharp Laboratories Of America, Inc. Distributed cache algorithms and system for time-shifted, and live, peer-to-peer video streaming
US7979419B2 (en) * 2007-11-01 2011-07-12 Sharp Laboratories Of America, Inc. Distributed search methods for time-shifted and live peer-to-peer video streaming
US8019856B1 (en) * 2007-11-07 2011-09-13 Trend Micro Incorporated Automatic mapping and location discovery of computers in computer networks
CN101459584B (zh) * 2007-12-14 2011-03-16 中国科学院声学研究所 一种p2p流媒体数据请求末端处理方法
CN101459585B (zh) * 2007-12-14 2010-11-03 中国科学院声学研究所 一种p2p流媒体数据请求方法
US8804627B2 (en) * 2007-12-19 2014-08-12 Qualcomm Incorporated Method and apparatus for improving performance of erasure sequence detection
GB2468057A (en) * 2007-12-21 2010-08-25 Ericsson Telefon Ab L M Method and apparatus for distributing media over a communications network
GB2468067A (en) * 2007-12-21 2010-08-25 Ericsson Telefon Ab L M Method and apparatus for distributing media over a communications network
WO2009080113A1 (en) * 2007-12-21 2009-07-02 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing media over a communications network
US9769255B2 (en) * 2007-12-24 2017-09-19 Core Wireless Licensing S.A.R.L. Continuous scheduling for peer-to-peer streaming
CN101472166B (zh) 2007-12-26 2011-11-16 华为技术有限公司 一种内容缓存、查询方法及点对点媒体传输系统
EP2081363A1 (en) * 2008-01-15 2009-07-22 Thomson Licensing, Inc. System and method for selecting a set of serving peers
US8260952B2 (en) 2008-01-31 2012-09-04 Microsoft Corporation Multi-rate peer-assisted data streaming
US9503691B2 (en) 2008-02-19 2016-11-22 Time Warner Cable Enterprises Llc Methods and apparatus for enhanced advertising and promotional delivery in a network
US8300541B2 (en) * 2008-02-19 2012-10-30 Time Warner Cable Inc. Apparatus and methods for utilizing statistical multiplexing to ensure quality of service in a network
EP2163067B1 (en) 2008-02-22 2013-12-25 Security First Corp. Systems and methods for secure workgroup management and communication
GB0804192D0 (en) * 2008-02-22 2008-04-16 Ericsson Telefon Ab L M Method and apparatus for obtaining media over a communications network
US8316108B2 (en) 2008-02-22 2012-11-20 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for obtaining media over a communications network
WO2009103343A1 (en) * 2008-02-22 2009-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing media over a communications network
WO2009103345A1 (en) * 2008-02-22 2009-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for obtaining media over a communications network
US8813143B2 (en) 2008-02-26 2014-08-19 Time Warner Enterprises LLC Methods and apparatus for business-based network resource allocation
CN101960793A (zh) * 2008-02-27 2011-01-26 汤姆逊许可公司 分散式分层群集对等实况流系统
CN101237339B (zh) * 2008-03-11 2010-12-08 东南大学 基于分层点对点组播网络的流媒体传输方法
US8806046B1 (en) * 2008-03-31 2014-08-12 Symantec Corporation Application streaming and network file system optimization via integration with identity management solutions
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7836184B2 (en) * 2008-05-15 2010-11-16 Ray-V Technologies, Ltd. Method for managing the allocation of resources to channel swarms in a peer-to-peer network
US9037657B2 (en) 2008-05-23 2015-05-19 The Trustees Of Columbia University In The City Of New York Systems and methods for peer-to-peer bandwidth allocation
US7860996B2 (en) * 2008-05-30 2010-12-28 Microsoft Corporation Media streaming with seamless ad insertion
US20090313317A1 (en) * 2008-06-12 2009-12-17 Integra Micro Systems (P) Ltd. Wider Delivery Of Multimedia Content
JP5223480B2 (ja) * 2008-06-13 2013-06-26 富士通株式会社 コンテンツ配信方法及び通信端末装置
EP2314038B1 (en) * 2008-06-20 2015-08-12 Telefonaktiebolaget L M Ericsson (publ) System and method for ingesting media content in a peer-to-peer network
US8539092B2 (en) * 2008-07-09 2013-09-17 Apple Inc. Video streaming using multiple channels
US8108537B2 (en) * 2008-07-24 2012-01-31 International Business Machines Corporation Method and system for improving content diversification in data driven P2P streaming using source push
JP4850218B2 (ja) * 2008-07-30 2012-01-11 株式会社ソニー・コンピュータエンタテインメント データ配信システム
JP5340664B2 (ja) * 2008-07-30 2013-11-13 株式会社ソニー・コンピュータエンタテインメント データ配信システム
US8265140B2 (en) * 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US8650301B2 (en) 2008-10-02 2014-02-11 Ray-V Technologies, Ltd. Adaptive data rate streaming in a peer-to-peer network delivering video content
US20100088520A1 (en) * 2008-10-02 2010-04-08 Microsoft Corporation Protocol for determining availability of peers in a peer-to-peer storage system
US7996546B2 (en) * 2008-10-02 2011-08-09 Ray-V Technologies, Ltd. Dynamic allocation of a quota of consumer nodes connecting to a resource node of a peer-to-peer network
US20100094958A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Systems and methods for aggregating erasure-coded fragments
US8938549B2 (en) * 2008-10-15 2015-01-20 Aster Risk Management Llc Reduction of peak-to-average traffic ratio in distributed streaming systems
US8166170B2 (en) * 2008-10-26 2012-04-24 Imagine Communications Ltd. Distributed multiplexing
US8775456B2 (en) * 2008-11-03 2014-07-08 Bmc Software, Inc. System and method for scheduled and collaborative distribution of software and data to many thousands of clients over a network using dynamic virtual proxies
JP5096293B2 (ja) * 2008-11-05 2012-12-12 日本電信電話株式会社 コンテンツ配信支援システムと方法およびプログラム
US9357247B2 (en) 2008-11-24 2016-05-31 Time Warner Cable Enterprises Llc Apparatus and methods for content delivery and message exchange across multiple content delivery networks
EP2192746A1 (en) * 2008-11-26 2010-06-02 Thomson Licensing Method and apparatus for receiving content
US8452886B2 (en) * 2008-12-04 2013-05-28 Microsoft Corporation Peer-to-peer packet scheduling algorithm
EP2204965B1 (en) * 2008-12-31 2016-07-27 Google Technology Holdings LLC Device and method for receiving scalable content from multiple sources having different content quality
US20100185769A1 (en) * 2009-01-16 2010-07-22 Amlogic Co., Ltd. Methods for Downloading a File to Consumer Electronic Devices via a Peer-to-peer Network
GB2467743A (en) * 2009-02-11 2010-08-18 Sony Corp Video server and method of distributing media over a network
US8838824B2 (en) * 2009-03-16 2014-09-16 Onmobile Global Limited Method and apparatus for delivery of adapted media
US11076189B2 (en) 2009-03-30 2021-07-27 Time Warner Cable Enterprises Llc Personal media channel apparatus and methods
US9215423B2 (en) 2009-03-30 2015-12-15 Time Warner Cable Enterprises Llc Recommendation engine apparatus and methods
CN104079573A (zh) 2009-05-19 2014-10-01 安全第一公司 用于安全保护云中的数据的系统和方法
US8326992B2 (en) * 2009-05-27 2012-12-04 Ray-V Technologies, Ltd. Controlling the provision of resources for streaming of video swarms in a peer-to-peer network
US11064023B2 (en) 2009-05-27 2021-07-13 Verizon Media Inc. Method for actively sharing available bandwidth to consumer nodes in a peer-to-peer network for delivery of video streams
US8375129B2 (en) * 2009-05-27 2013-02-12 Ray-V Technologies, Ltd. Method for dynamically adjusting resource nodes in a peer-to-peer network for delivering time-sensitive content
WO2010138972A2 (en) 2009-05-29 2010-12-02 Abacast, Inc. Selective access of multi-rate data from a server and/or peer
US9602864B2 (en) 2009-06-08 2017-03-21 Time Warner Cable Enterprises Llc Media bridge apparatus and methods
US9866609B2 (en) * 2009-06-08 2018-01-09 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution
IT1398195B1 (it) * 2009-06-25 2013-02-14 St Microelectronics Srl "procedimento e sistema per la distribuzione di contenuti informativi, relativo prodotto informatico"
CN101938505B (zh) * 2009-07-01 2013-01-30 华为技术有限公司 一种P2P流媒体数据分发的方法、系统和proxy节点
US8813124B2 (en) 2009-07-15 2014-08-19 Time Warner Cable Enterprises Llc Methods and apparatus for targeted secondary content insertion
US9237381B2 (en) 2009-08-06 2016-01-12 Time Warner Cable Enterprises Llc Methods and apparatus for local channel insertion in an all-digital content distribution network
US8396055B2 (en) 2009-10-20 2013-03-12 Time Warner Cable Inc. Methods and apparatus for enabling media functionality in a content-based network
US10264029B2 (en) * 2009-10-30 2019-04-16 Time Warner Cable Enterprises Llc Methods and apparatus for packetized content delivery over a content delivery network
US9635421B2 (en) 2009-11-11 2017-04-25 Time Warner Cable Enterprises Llc Methods and apparatus for audience data collection and analysis in a content delivery network
US8149831B2 (en) * 2009-11-19 2012-04-03 Alcatel Lucent Technique for packet compression in an application level multicast
ES2620962T3 (es) * 2009-11-25 2017-06-30 Security First Corporation Sistemas y procedimientos para asegurar datos en movimiento
US9519728B2 (en) * 2009-12-04 2016-12-13 Time Warner Cable Enterprises Llc Apparatus and methods for monitoring and optimizing delivery of content in a network
US10009396B2 (en) 2009-12-11 2018-06-26 Thomson Licensing Queue-based adaptive chunk scheduling for peer-to-peer live streaming
FR2954879A1 (fr) * 2009-12-29 2011-07-01 France Telecom Procede et dispositif de transmission de contenu
US9510029B2 (en) 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
US9342661B2 (en) 2010-03-02 2016-05-17 Time Warner Cable Enterprises Llc Apparatus and methods for rights-managed content and data delivery
KR101662843B1 (ko) * 2010-03-05 2016-10-14 삼성전자주식회사 데이터 통신 망에서의 스트리밍 서비스 장치 및 방법
US8447875B2 (en) * 2010-03-10 2013-05-21 Thomson Licensing Unified cache and peer-to-peer method and apparatus for streaming media in wireless mesh networks
US20110225312A1 (en) * 2010-03-10 2011-09-15 Thomson Licensing Unified cache and peer-to-peer method and apparatus for streaming media in wireless mesh networks
CN103039057B (zh) 2010-03-31 2015-08-19 安全第一公司 对移动中数据进行保护的系统和方法
US20110264530A1 (en) 2010-04-23 2011-10-27 Bryan Santangelo Apparatus and methods for dynamic secondary content and data insertion and delivery
US9288534B2 (en) 2010-05-12 2016-03-15 Smsc Holdings S.A.R.L. Systems and methods for operating media devices
US9300445B2 (en) 2010-05-27 2016-03-29 Time Warner Cable Enterprise LLC Digital domain content processing and distribution apparatus and methods
KR20130115986A (ko) 2010-05-27 2013-10-22 에스엠에스씨 홀딩스 에스에이알엘 미디어 스트림의 끊김 없는 전송
US8601498B2 (en) 2010-05-28 2013-12-03 Security First Corp. Accelerator system for use with secure data storage
US9906838B2 (en) 2010-07-12 2018-02-27 Time Warner Cable Enterprises Llc Apparatus and methods for content delivery and message exchange across multiple content delivery networks
US8997136B2 (en) 2010-07-22 2015-03-31 Time Warner Cable Enterprises Llc Apparatus and methods for packetized content delivery over a bandwidth-efficient network
GB2483088B (en) * 2010-08-26 2012-07-18 Giraffic Technologies Ltd Asynchronous data streaming in a peer-to-peer network
US9185341B2 (en) 2010-09-03 2015-11-10 Time Warner Cable Enterprises Llc Digital domain content processing and distribution apparatus and methods
US20120303834A1 (en) * 2010-10-07 2012-11-29 Stellatus, LLC Seamless digital streaming over different device types
TWI415427B (zh) * 2010-11-04 2013-11-11 Ind Tech Res Inst 同儕即時串流系統與方法
US8930979B2 (en) 2010-11-11 2015-01-06 Time Warner Cable Enterprises Llc Apparatus and methods for identifying and characterizing latency in a content delivery network
US10148623B2 (en) 2010-11-12 2018-12-04 Time Warner Cable Enterprises Llc Apparatus and methods ensuring data privacy in a content distribution network
US9602414B2 (en) 2011-02-09 2017-03-21 Time Warner Cable Enterprises Llc Apparatus and methods for controlled bandwidth reclamation
US9258625B2 (en) * 2011-04-19 2016-02-09 Sensormatic Electronics, LLC Method and system for load balancing between a video server and client
US8930959B2 (en) 2011-05-13 2015-01-06 Orions Digital Systems, Inc. Generating event definitions based on spatial and relational relationships
US8676993B1 (en) * 2011-06-21 2014-03-18 Google Inc. Bundled transmission control protocol connections
US8903908B2 (en) 2011-07-07 2014-12-02 Blackberry Limited Collaborative media sharing
US20130031241A1 (en) * 2011-07-29 2013-01-31 Nico Schwan Distributed service instantiation for information-centric networks
WO2013023287A1 (en) 2011-08-16 2013-02-21 Destiny Software Productions Inc. Script-based video rendering
WO2013050400A1 (en) * 2011-10-05 2013-04-11 Peerialism AB Method and device for arranging peers in a live streaming p2p network
US9160697B2 (en) * 2012-01-01 2015-10-13 Qualcomm Incorporated Data delivery optimization
US9612902B2 (en) 2012-03-12 2017-04-04 Tvu Networks Corporation Methods and apparatus for maximum utilization of a dynamic varying digital data channel
US9467723B2 (en) 2012-04-04 2016-10-11 Time Warner Cable Enterprises Llc Apparatus and methods for automated highlight reel creation in a content delivery network
US9489193B2 (en) 2012-05-01 2016-11-08 Sophos Limited Method and system for providing software updates to local machines
JP2013258657A (ja) * 2012-06-14 2013-12-26 Nippon Hoso Kyokai <Nhk> P2pネットワークサービスに用いる端末装置及びプログラム
US9854280B2 (en) 2012-07-10 2017-12-26 Time Warner Cable Enterprises Llc Apparatus and methods for selective enforcement of secondary content viewing
US20140082645A1 (en) 2012-09-14 2014-03-20 Peter Stern Apparatus and methods for providing enhanced or interactive features
KR101481122B1 (ko) 2012-11-30 2015-01-14 성균관대학교산학협력단 클라우드 컴퓨팅 기반의 트랜스코딩을 위한 동적 캐시 관리 방법 및 시스템
US9565472B2 (en) 2012-12-10 2017-02-07 Time Warner Cable Enterprises Llc Apparatus and methods for content transfer protection
US9131283B2 (en) 2012-12-14 2015-09-08 Time Warner Cable Enterprises Llc Apparatus and methods for multimedia coordination
US9680926B2 (en) 2012-12-19 2017-06-13 Hive Streaming Ab Nearest peer download request policy in a live streaming P2P network
US9544366B2 (en) * 2012-12-19 2017-01-10 Hive Streaming Ab Highest bandwidth download request policy in a live streaming P2P network
US9591070B2 (en) 2012-12-19 2017-03-07 Hive Streaming Ab Multiple requests for content download in a live streaming P2P network
US20140282786A1 (en) 2013-03-12 2014-09-18 Time Warner Cable Enterprises Llc Methods and apparatus for providing and uploading content to personalized network storage
US10368255B2 (en) 2017-07-25 2019-07-30 Time Warner Cable Enterprises Llc Methods and apparatus for client-based dynamic control of connections to co-existing radio access networks
US9066153B2 (en) 2013-03-15 2015-06-23 Time Warner Cable Enterprises Llc Apparatus and methods for multicast delivery of content in a content delivery network
US9282148B2 (en) * 2013-06-06 2016-03-08 Dell Products L.P. Multi-user peer-to-peer collaboration system and method
US9313568B2 (en) 2013-07-23 2016-04-12 Chicago Custom Acoustics, Inc. Custom earphone with dome in the canal
US9462032B2 (en) * 2013-07-24 2016-10-04 Google Inc. Streaming media content
US9699236B2 (en) * 2013-12-17 2017-07-04 At&T Intellectual Property I, L.P. System and method of adaptive bit-rate streaming
US10116740B2 (en) 2013-12-27 2018-10-30 Microsoft Technology Licensing, Llc Peer-to-peer network prioritizing propagation of objects through the network
JP6369024B2 (ja) * 2014-01-09 2018-08-08 富士通株式会社 映像配信システム及び映像配信システムにおいて使用されるノード装置
US9621940B2 (en) 2014-05-29 2017-04-11 Time Warner Cable Enterprises Llc Apparatus and methods for recording, accessing, and delivering packetized content
US11540148B2 (en) 2014-06-11 2022-12-27 Time Warner Cable Enterprises Llc Methods and apparatus for access point location
US9961373B2 (en) * 2014-06-27 2018-05-01 Panasonic Avionics Corporation Vehicle entertainment system
US9935833B2 (en) 2014-11-05 2018-04-03 Time Warner Cable Enterprises Llc Methods and apparatus for determining an optimized wireless interface installation configuration
US10116676B2 (en) 2015-02-13 2018-10-30 Time Warner Cable Enterprises Llc Apparatus and methods for data collection, analysis and service modification based on online activity
US9986578B2 (en) 2015-12-04 2018-05-29 Time Warner Cable Enterprises Llc Apparatus and methods for selective data network access
US10237589B2 (en) * 2015-12-15 2019-03-19 Telefonaktiebolaget Lm Ericsson (Publ) System and method for facilitating fast channel change
US9918345B2 (en) 2016-01-20 2018-03-13 Time Warner Cable Enterprises Llc Apparatus and method for wireless network services in moving vehicles
US10075563B2 (en) * 2016-02-05 2018-09-11 Gridraster, Inc. Network and video/audio system and method for gaming and virtual reality
EP3286648B1 (en) 2016-02-12 2020-08-26 Hewlett-Packard Enterprise Development LP Assembling operating system volumes
US10404758B2 (en) 2016-02-26 2019-09-03 Time Warner Cable Enterprises Llc Apparatus and methods for centralized message exchange in a user premises device
US10492034B2 (en) 2016-03-07 2019-11-26 Time Warner Cable Enterprises Llc Apparatus and methods for dynamic open-access networks
US10687115B2 (en) 2016-06-01 2020-06-16 Time Warner Cable Enterprises Llc Cloud-based digital content recorder apparatus and methods
US10164858B2 (en) 2016-06-15 2018-12-25 Time Warner Cable Enterprises Llc Apparatus and methods for monitoring and diagnosing a wireless network
US11212593B2 (en) 2016-09-27 2021-12-28 Time Warner Cable Enterprises Llc Apparatus and methods for automated secondary content management in a digital network
US10911794B2 (en) 2016-11-09 2021-02-02 Charter Communications Operating, Llc Apparatus and methods for selective secondary content insertion in a digital network
US10645547B2 (en) 2017-06-02 2020-05-05 Charter Communications Operating, Llc Apparatus and methods for providing wireless service in a venue
US10638361B2 (en) 2017-06-06 2020-04-28 Charter Communications Operating, Llc Methods and apparatus for dynamic control of connections to co-existing radio access networks
US11553014B2 (en) * 2017-07-04 2023-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
US11109290B2 (en) 2017-08-04 2021-08-31 Charter Communications Operating, Llc Switching connections over frequency bands of a wireless network
US10939142B2 (en) 2018-02-27 2021-03-02 Charter Communications Operating, Llc Apparatus and methods for content storage, distribution and security within a content distribution network
US11917205B2 (en) * 2019-07-05 2024-02-27 Tencent America LLC Techniques and apparatus for scalable lifting for point-cloud attribute coding
CN112188216A (zh) * 2019-07-05 2021-01-05 腾讯美国有限责任公司 视频数据的编码方法、装置、计算机设备及存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5712976A (en) * 1994-09-08 1998-01-27 International Business Machines Corporation Video data streamer for simultaneously conveying same one or different ones of data blocks stored in storage node to each of plurality of communication nodes
US5603058A (en) * 1994-09-08 1997-02-11 International Business Machines Corporation Video optimized media streamer having communication nodes received digital data from storage node and transmitted said data to adapters for generating isochronous digital data streams
US6742023B1 (en) * 2000-04-28 2004-05-25 Roxio, Inc. Use-sensitive distribution of data files between users
JP3841256B2 (ja) * 2000-02-15 2006-11-01 三菱電機株式会社 通信システム及び通信方法及び送信端末
US20020059274A1 (en) * 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US20020049760A1 (en) 2000-06-16 2002-04-25 Flycode, Inc. Technique for accessing information in a peer-to-peer network
US7099926B1 (en) * 2000-07-06 2006-08-29 International Business Machines Corporation Object caching and update queuing technique to improve performance and resource utilization
US6829634B1 (en) * 2000-07-31 2004-12-07 The Boeing Company Broadcasting network
JP3699910B2 (ja) * 2000-10-31 2005-09-28 株式会社東芝 データ伝送装置、データ伝送方法及びプログラム
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US20020143959A1 (en) * 2001-04-03 2002-10-03 David El-Baze Method and apparatus for interactive direct peer-to-peer multimedia streaming
US20020172221A1 (en) * 2001-05-18 2002-11-21 Telgen Corporation Distributed communication device and architecture for balancing processing of real-time communication applications
US7440994B2 (en) * 2001-07-06 2008-10-21 Intel Corporation Method and apparatus for peer-to-peer services to shift network traffic to allow for an efficient transfer of information between devices via prioritized list
AU2002324615A1 (en) * 2001-08-04 2003-02-24 Kontiki, Inc. Method and apparatus for facilitating secure distributed content delivery across a computer network
JP3955989B2 (ja) * 2001-11-29 2007-08-08 株式会社 アンクル ストリームデータ分散配信方法及びそのシステム
US6920501B2 (en) * 2001-12-17 2005-07-19 Ntt Docomo, Inc. Communication socket migration among different devices
US6789123B2 (en) * 2001-12-28 2004-09-07 Microsoft Corporation System and method for delivery of dynamically scalable audio/video content over a network
US7010598B2 (en) * 2002-02-11 2006-03-07 Akamai Technologies, Inc. Method and apparatus for measuring stream availability, quality and performance
US7249264B2 (en) * 2002-04-02 2007-07-24 International Business Machines Corporation Secure IP based streaming in a format independent manner
JP2003309600A (ja) * 2002-04-17 2003-10-31 Bios:Kk コンテンツ配信および再生システムと再生管理システム
US20030204602A1 (en) * 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US20030212804A1 (en) * 2002-05-09 2003-11-13 Ardeshir Hashemi Method and apparatus for media clip sharing over a network
TWI265697B (en) * 2002-06-06 2006-11-01 Ibm Digital contents distribution system, digital contents distribution method, computer readable recording medium storing the program therein, and server and client therefor
JP2004080145A (ja) * 2002-08-12 2004-03-11 Canon Inc 映像サーバシステム及びその映像再生方法
US7225267B2 (en) * 2003-01-27 2007-05-29 Microsoft Corporation Reactive bandwidth control for streaming data
US7555559B2 (en) * 2003-02-28 2009-06-30 Onion Networks, KK Parallel data transfer over multiple channels with data order prioritization
US7395339B2 (en) * 2003-08-07 2008-07-01 International Business Machines Corporation Method and system for providing on-demand media streaming from a user's own library to a receiving device of the user
US8239446B2 (en) * 2003-11-19 2012-08-07 Sony Computer Entertainment America Llc Content distribution architecture
US20050125831A1 (en) * 2003-12-04 2005-06-09 Blanchard Donald E. System and method for broadcasting entertainment related data
US7581158B2 (en) * 2004-03-22 2009-08-25 Codemate A/S Distribution method, preferably applied in a streaming system

Also Published As

Publication number Publication date
US20070130360A1 (en) 2007-06-07
US7752327B2 (en) 2010-07-06
KR20060050257A (ko) 2006-05-19
JP2006079606A (ja) 2006-03-23
US20060080454A1 (en) 2006-04-13
US7174385B2 (en) 2007-02-06
EP1643716A1 (en) 2006-04-05
KR101183430B1 (ko) 2012-09-17
US7539767B2 (en) 2009-05-26
EP1643716B1 (en) 2013-03-20
US20070130361A1 (en) 2007-06-07

Similar Documents

Publication Publication Date Title
JP4920220B2 (ja) ピアツーピアネットワークでの受信側主導のシステム及び方法
JP4676833B2 (ja) 拡張可能なメディアの分散ストリーミングのシステムおよび方法
JP5058468B2 (ja) ストリーミングメディアの消去耐性符号化のための方法、該方法を実行するコンピュータ実行可能命令を記録した媒体、及びシステム
US8726327B2 (en) System and method for peer-to-peer live streaming
Li PeerStreaming: A practical receiver-driven peer-to-peer media streaming system
US20080189429A1 (en) Apparatus and method for peer-to-peer streaming
US20120203923A1 (en) Adaptive variable fidelity media distribution system and method
US20080016201A1 (en) Methods and apparatus for transferring data
KR20030056701A (ko) P2p 방식을 이용한 멀티미디어 스트리밍 장치 및 방법
US20070067485A1 (en) Method and system for managing video networks
EP1473636B1 (en) Information processing device and method, and computer program
Li et al. Peerstreaming: design and implementation of an on-demand distributed streaming system with digital rights management capabilities
Zimmerman et al. Retransmission-based error control in a many-to-many client-server environment
JP2004221756A (ja) 情報処理装置および情報処理方法、並びにコンピュータ・プログラム
JP2004264991A (ja) データ配信方法とプログラムおよびデータ配信システムならびに情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110704

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120127

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120201

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4920220

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250