240 likes | 325 Views
Learn about P2P streaming, single and multiple tree structures, mesh-based streaming, content delivery levels, and strategies for joining and leaving the tree in multimedia systems design. Explore the challenges and solutions in implementing P2P streaming.
E N D
CS 414 – Multimedia Systems DesignLecture 24 – P2P Streaming KlaraNahrstedt Ramsés Morales CS 414 - Spring 2009
Streaming from servers clients … servers … Video service • Bandwidth at video service and number of servers have to grow with demand • Flash crowds have to be taken into account CS 414 - Spring 2009
P2P Streaming Peers watching stream Live stream source (could be a member of the p2p network) P2P network • Use the participating node’s bandwidth • More nodes watching stream = more shared bandwidth • App-level multicast • How? CS 414 - Spring 2009
P2P Streaming • Common arrangements to multicast the stream • Single Tree • Multiple Tree • Mesh-based • All nodes are usually interested in the stream • They all have to deal with node dynamism (join/leave/fail/capacity-changes) CS 414 - Spring 2009
Streaming in a single tree Frames coder packets 3 2 1 Source 3 3 2 2 1 (using RTP/UDP) 1 CS 414 - Spring 2009
Single Tree Source Nodes send as many copies of a data packet as they have children … … … Peers interested in the stream organize themselves into a tree CS 414 - Spring 2009
Joining the tree “Parent?” “Try one of my children” • Find a node with spare capacity, then make it parent • If contacted node lacks capacity, pick child • Random child • Round robin • Child closest in physical network to joining node CS 414 - Spring 2009
Leaving the tree or failing grandfather Ex-parent Orphan children after parent leaves • Orphan nodes need a new parent • Policies for new parent • Children pick source • Subtree nodes pick source • Children pick grandfather • Subtree nodes pick grandfather • …then repeat join procedure CS 414 - Spring 2009
Single tree issues Leavesdo not use their outgoing bandwidth Packets are lost while recovering after a parent leaves/fails Finding unsaturated peer could take a while Tree connections could be rearranged for better transfer CS 414 - Spring 2009
Multiple Trees Source Are nodes 1, 2, 3 receiving the same data multiple times? 1 3 2 2 3 1 2 1 3 Challenge: a peer must be internal node in only one tree, leaf in the rest CS 414 - Spring 2009
Multiple Description Coding (MDC) Packets for description 0 Frames coder 30 20 10 … Packets for description n 3n 2n 1n • Each description can be independently decoded (only one needed to reproduce audio/video) • More descriptions received result in higher quality CS 414 - Spring 2009
Streaming in multiple-trees using MDC 31 30 21 20 11 10 (using RTP/UDP) 1 3 2 3 4 1 2 CS 414 - Spring 2009 Assume odd-bit/even-bit encoding --description 0 derived from frame’s odd-bits, description 1 derived from frame’s even-bits
Multiple Tree Streaming in Pastry DHT -- SplitStream Pastry routes messages using id prefix matching CS 414 - Spring 2009
Multiple Tree Streaming in Pastry DHT -- SplitStream • Assign an id to each coded description • If most significant digit is different, then trees will be interior-node-disjoint, example, • Id tree 1: d46a1c • Id tree 2: a1321d • 65a1fc: route(m, d46a1c) -> d13da3 -> d4213f -> d462ba • 65a1fc: route(m, a1321d) -> a0b14f -> a1b987 -> a1321a • Stream flows through reverse path CS 414 - Spring 2009
Multiple Tree Streaming in Pastry DHT -- SplitStream Description 0 Description 1 d462ba a1321a d4213f a1b987 a0b14f d13da3 a0b14f d4213f 65a1fc a1b987 a1321a d462ba 65a1fc d13da3 CS 414 - Spring 2009 Peer is internal node in only one tree, due to interior-node-disjoint trees and Pastry’s routing
Multiple-Tree Issues • Complex procedure to locate a potential-parent peer with spare out-degree • Degraded quality until a parent found in every tree • Static mapping in trees, instead of choosing parents based on their (and my) bandwidth • An internal node can be a bottleneck CS 414 - Spring 2009
Mesh-based streaming (mesh uses MDC) Description 0/1/2 Description 0/1/2 Description 0 Description 1,2 (Nodes are randomly connected to their peers, instead of statically) Description 0,1,2 Description 1 • Basic idea • Report to peers the packets that you have • Ask peers for the packets that you are missing • Adjust connections depending on in/out bandwidth CS 414 - Spring 2009
Content delivery (Levels determined by hops to source) Description 0 Description 2 Description 1 1 2 3 4 6 5 7 8 9 10 11 12 13 14 15 16 17 (1) Diffusion Phase ( ) (2) Swarming Phase ( ) CS 414 - Spring 2009
Diffusion Phase Have segment 0 Segment 0 Segment 1 … 22 40 30 20 10 Send me Segment 0 12 … 3 … 42 32 22 12 (during period 0) 3 Have segment 0 22 12 Send me Segment 0 9 (during period 1) • As a new segment (set of packets) of length L becomes available at source every L seconds • Level 1 nodes pull data units from source, then level 2 pulls from level 1, etc. • Recall that reporting and pulling are performed periodically CS 414 - Spring 2009 (drawings follow previous example)
Swarming Phase 10 2 20 21 7 11 9 21 11 10 11 13 14 15 12 16 17 21 11 20 10 CS 414 - Spring 2009 • At the end of the diffusion all nodes have at least one data unit of the segment • Pull missing data units from (swarm-parent) peers located at same or lower level • Can node 9 pull new data units from node 16? • Node 9 cannot pull data in a single swarm interval (drawings follow previous example)
Buffering • Due to diffusion nodes need a buffer • Size: c * L • (diffusion tree dept + minimum number of swarming intervals) <= c CS 414 - Spring 2009
Receiver driven packet scheduling Bw from 15=x, 16=y 15 has from t=0 to t=20 16 has from t=0 to t=10 X+y = x_agg (can I handle more?) 9 • Peers maintain parents’ • Available packets • Weighted average bandwidth • Peers monitor aggregate bandwidth from all parents • Requested descriptions adapt to this measure • Designed to maximize utilization of available bandwidth from parents CS 414 - Spring 2009 (drawings follow previous example)
Receiver driven packet scheduling Send me 0<=t<=20 I’m still missing t=19, t=18 Have up to t=20 15 9 15 9 Have up to t=10 16 16 • Scheduler identifies packets with highest timestamp available at parents (during last L seconds) • Then request all these packets • Identify missing packets for each timestamp • Then request a random subset of these missing packets from all parents (even if they don’t have it) to fully utilize their bandwidth CS 414 - Spring 2009
Many more details in references and source code M. Castro, P. Druschel, A-M. Kermarrec, A. Nandi, A. Rowstron and A. Singh, "SplitStream: High-bandwidth multicast in a cooperative environment," SOSP 2003. H. Deshpande, M. Bawa, H. Garcia-Molina. "Streaming Live Media over Peers," Technical Report, Stanford InfoLab, 2002. N. Magharei, R. Rejaie. "PRIME: Peer-to-Peer Receiver drIvenMEsh-Based Streaming," INFOCOM 2007. N. Magharei, R. Rejaie, Y. Guo. "Mesh or Multiple-Tree: A Comparative Study of Live P2P Streaming Approaches," INFOCOM 2007. http://freepastry.org CS 414 - Spring 2009