Alice measures rate she receives bits from each neighbor.
Alice sends chunks to four best neighbors.
Every 10 seconds, she recalculates rates & possibly modifies set of four peers.
Every 30 seconds, she “optimistically unchokes” random peer.
BitTorrent: Trading (1) Alice “optimistically unchokes” Bob (2) Alice becomes one of Bob’s top-four providers; Bob reciprocates (3) Bob becomes one of Alice’s top-four providers With higher upload rate, can find better trading partners & get file faster!
Basic idea P2P live streaming trade chunks tracker Source of video obtain list of peers peer
Incentives for Live Streaming
Why upload at all?
Currently no tit-for-tat mechanism in existing deployments
Is tit-for-tat a sufficient incentive?
No! Why provide more upload bandwidth if you’re receiving the video at the full rate?
Our main idea:
If you upload more, you get better quality.
Single layer Video
All peers receive the same video quality
A video is encoded into several layers
More layers introduce better video quality
Nested dependence between layers
Higher upload contribution results in better received video quality
Layered Video w/ Tit-for-Tat
Generate multiple layers, each divided into layer chunks (LCs)
Measure download rates from neighbors
Reciprocate to neighbors based on their contributions
Supplier & Receiver Side Schedulers
Supplier: How to allocate uplink bandwidth to neighbors?
BitTorrent roughly gives each unchoked neighbor an equal share.
Receiver: How to maximize the received video quality
Multiple LCs are to be requested
Supplier Side Scheduler
Goal: Supply neighbors in proportion to their contributions
Measure the download rates, d k from neighbor k
Maintain separate FIFO rqst queue for each neighbor
Serve neighbor k next with probability:
Receiver Side State
Request LCs at beginnings of rounds
Can request in a window up to B chunks into future
Receiver Side Scheduler (1)
Goal: Maximize the received video quality
Which LC should be requested first?
Assign heuristic “importance” to each LC, taking into account:
Request LCs from the highest importance to the lowest importance
Receiver Side Scheduler (2)
Where to send the request for the LC?
Estimate the current delay from each neighbor:
where m k is # of outstanding requests, r is video rate, Δ is chunk length
Send request to neighbor that will send it first
As long as it can come before deadline
Performance Study: Schemes
Single layer video without incentives (Single-Layer)
Layered video without incentives (Layered)
MDC with incentives (MDC-Incent)
Layered video with incentives (Layered-Incent)
Ethernet peer: 1000 kbps; cable peer: 300 kbps;
free-rider: 0 kbps
Fix ratio of Ethernet peers to cable peers: 3:7; change percentage of free-riders
Foreman video sequence (CIF, 30 frames/sec)
SVC video codec
20 layers, with each layer having a rate of 50 kbps
Each peer has 14 to 18 neighbors
Randomly replace worst neighbor every 30 seconds
Useful rate received (R)
The bits that are useful for video decoding
Discontinuity ratio ( α )
The percentage of time that a video is undecodable and unplayable
Average PSNR (Q)
Received video quality
Peers with high upload contributions receive better video quality;
Peers with low contributions receive relatively low but still acceptable video quality;
Free-riders receive unacceptable video quality.
Received video quality does not degrade with free-riding
A decentralized incentive mechanism for video streaming
Performance studies show that the scheme can
Provide differentiated video quality commensurate with a peer’s contribution