240 likes | 362 Views
CS 414 – Multimedia Systems Design Lecture 24 – P2P Streaming. Klara Nahrstedt Ramsés Morales. 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.
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