990 likes | 1.01k Views
Previously, on CS5248. Idea. Adjust sending rate based on network conditions. Part 1: Detecting Congestion. Bolot and Tulertti if median loss rate > threshold then decrease rate else increase rate. Part 1: Detecting Congestion. Busse, Deffner and Schulzrine
E N D
Idea • Adjust sending rate based on network conditions
Part 1: Detecting Congestion Bolot and Tulertti if median loss rate > threshold then decrease rate else increase rate
Part 1: Detecting Congestion Busse, Deffner and Schulzrine if a lot of congested receivers decrease rate if a lot of unloaded receivers increase rate else do nothing
Multiple receivers • Heterogeneity Issues • Scalability Issues (Another Lecture..) THIS
Encoder Decoder Middlebox Receiver Sender Network Today’s Lecture
McCanne, Jacobson, and Vetterli • "Receiver-driven layered multicast," • ACM SIGCOMM 96 • Wu, Sharma, and Smith, • "Thin Streams: An architecture for multicasting layered video,“ • NOSSDAV 97
Encoder Decoder Middlebox Receiver Sender Network Today’s Lecture
Amir, McCanne, and Zhang. • "An application level video gateway." • ACM MM 95
Encoder Decoder Middlebox Receiver Sender Network Today’s Lecture
Bolot, Turletti, and Wakeman. • "Scalable feedback control for multicast video distribution in the internet," • ACM SIGCOMM 94.
Encoder Decoder Middlebox Receiver Sender Network Today’s Lecture
Receiver-Driven Layered Multicast McCanne, Jacobson & Vetterli SIGCOMM 96
Internet Heterogeneity 2 Mbps 56kbps 40kbps
Heterogeneous Clients • How to satisfy receivers with different requirements?
Method 1: Simulcast • Send multiple streams
Method 2: Rate Adaptation • Send one stream
Method 3: Layered Multicast Layer 1 Layer 2 Layer 3
Layering Scheme • Temporal Layering
Layering Scheme • Spatial Layering
Layering Scheme • DCT Layering 30 8 2 30 8 2 0 30 -6 -1 -6 -1 0 0 1 1 0 0 0 0 0 0 0
Layering Scheme • Fine Granularity Scalability (FGS) 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0
Layered Multicast • 1 Layer : 1 Multicast Group • Receiver subscribes to as many layers as desired
Question • How many layers is enough?
Solution: Join Experiment highest layer = 1 join layer 1 while no packet loss highest layer ++ join next layer leave highest layer highest layer --
Details • Tjoin • Time between join experiments • Tdetect • Time taken to detect packet loss
Effects of Tjoin • Need to converge to the right level quickly • Tjoin should be small • Repeated failed experiments congest networks • Tjoin should be large
Adapting Tjoin • One Tjoin per layer if join experiment for layer k fails Tjoin(k) = Tjoin(k)*2
Example 4 3 2 1
Adapting Tdetect • Set Tdetect to large initial value • Estimate Tdetect with mean and deviation • Mesure time between join and packet loss occur
Two Problems • Interference • Scalability
Problem 1: Interference I see, layer 2 is bad for me..
Problem 2: Scalability • Lots of receivers • Lots of experiments • Lots of congestions
Solution: Shared Learning I am joining layer 2, do not disturb!
Solution: Shared Learning I am joining layer 3, do not disturb!
Solution: Shared Learning I see, layer 3 is bad for me..
Shared Learning • Conservative: learn from failure not success • Improve convergence time • Give priority to low-layer experiments
Problems • Failed join experiments are bad • Interference across sessions?
Thin Streams Linda Wu, Rosen Sharma and Brian Smith NOSSDAV ‘97
Problems • Failed join experiments are bad • Interference across sessions?
How bad is failed experiments? R : sending rate of a layer Tj : IGMP join latency Tl : IGMP leave latency Buffer space at the router = R*(Tj + Tdetect + Tl)
Reduce Buffer Space • Reducing R • Many layers, each with small bandwidth • Reducing Tl • Sharma designed IGMP v2.0 • Reducing Tdetect • Rely on throughput rather than congestions
Reducing Tdetect • Detect congestion before packet drops • E : Expected Throughput • A : Actual Throughput
Calculating A & E • R : bandwidth of one layer • I : measurement interval • N : number of bytes received in I • G : number of layers joined A = aA + (1-a)N/I E = aE + (1-a)GR
Thin Streams Join-Leave Algo do every I seconds if (E-A) > Cleave leave else if (E-A) < Cjoin and time since last leave > Twait join