helping hand or hidden hurdle: proxy-assisted …nikca89/papers/mascots13a.slides.pdfhelping hand or...
TRANSCRIPT
Helping Hand or Hidden Hurdle:
Proxy-assisted HTTP-based Adaptive
Streaming Performance
Vengatanathan Krishnamoorthi1, Niklas Carlsson1,
Derek Eager2, Anirban Mahanti3, Nahid Shahmehri1
1 Linköping University, Sweden
2 University of Saskatchewan, Canada
3 NICTA, Australia
Proc. MASCOTS, San Francisco, USA, August 15, 2013
Video streaming
4060% of Internet traffic
• Content delivery over the Internet is massive …
• Consume significant resources
• How to make scalable and efficient?
HTTP-based streaming
• HTTP-based streaming
• Allows easy caching, NAT/firewall traversal, etc.
• Use of TCP provides natural bandwidth adaptation
• Split into fragments, download sequentially
• Some support for interactive VoD
3
HTTP-based adaptive streaming (HAS)
• HTTP-based adaptive streaming
• Multiple encodings of each fragment (defined in manifest file)
• Clients adapt quality encoding based on (buffer and network) conditions
4
Problem: Proxy-assisted HAS
5
• High playback quality
• Small stall times
• Few buffer interruptions
• Few quality switches
Clients’ want
Problem: Proxy-assisted HAS
6
• High playback quality
• Small stall times
• Few buffer interruptions
• Few quality switches
Clients’ want HAS is increasingly responsible
for larger traffic volumes
Network and service providers
may consider integrating HAS-
aware proxy policies
Problem: Proxy-assisted HAS
7
• High playback quality
• Small stall times
• Few buffer interruptions
• Few quality switches
• High QoE of customers/clients
Clients’ want Network providers’ want
Problem: Proxy-assisted HAS
8
• High playback quality
• Small stall times
• Few buffer interruptions
• Few quality switches
• High QoE of customers/clients
• Low bandwidth usage
• High hit rate
Clients’ want Network providers’ want
Problem: Proxy-assisted HAS
9
• High playback quality
• Small stall times
• Few buffer interruptions
• Few quality switches
• High QoE of customers/clients
• Low bandwidth usage
• High hit rate
Clients’ want Network providers’ want
Problem: Proxy-assisted HAS
10
• Evaluation of proxy-assisted HAS policies
In this paper …
Problem: Proxy-assisted HAS
11
• Evaluation of proxy-assisted HAS policies
In this paper …
Problem: Proxy-assisted HAS
12
• Evaluation of proxy-assisted HAS policies
In this paper …
Problem: Proxy-assisted HAS
13
• Evaluation of proxy-assisted HAS policies
In this paper …
Problem: Proxy-assisted HAS
14
• Evaluation of proxy-assisted HAS policies
In this paper …
Example: Default “best-effort”
15
Example: Default “best-effort”
16
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client Proxy
Example: Default “best-effort”
17
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 1
Proxy before
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy after
Example: Default “best-effort”
18
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 1
Proxy before
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy after
Example: Default “best-effort”
19
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 2
Proxy before
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy after
Example: Default “best-effort”
20
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 2
Proxy before
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy after
Example: Default “best-effort”
21
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 3
Proxy before
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy after
Example: Default “best-effort”
22
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 3
Proxy before
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy after
Policies and policy classes
23
• Empty cache
• Full cache (preload all versions)
• Best effort (default, as previous example)
Baseline policies
Policies and policy classes
24
• 1-ahead
• N-ahead
• Priority-based
Quality and content-aware prefetching policies
Policies and policy classes
25
• 1-ahead
• N-ahead
• Priority-based
Quality and content-aware prefetching policies
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 2
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy
Policies and policy classes
26
• 1-ahead
• N-ahead
• Priority-based (based on likely switches)
Quality and content-aware prefetching policies
• If client switches to a higher encoding and it is not the first time that the
client is requesting this quality, then prefetch: (i) current quality, (ii) one
quality level below, (iii) one quality level above, and (iv) no prefetching.
• Else prefetch: (i) current quality, (ii) one quality level above, (iii) one quality
level below and (iv) no prefetching.
Policies and policy classes
27
• 1-ahead
• N-ahead
• Priority-based (based on likely switches)
Quality and content-aware prefetching policies
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Client 2
1,4
1,3
1,2
1,1
2,4
2,3
2,2
2,1
3,4
3,3
3,2
3,1
4,4
4,3
4,2
4,1
5,4
5,3
5,2
5,1
6,4
6,3
6,2
6,1
7,4
7,3
7,2
7,1
Proxy
Policies and policy classes
28
• Buffer oblivious (priority-based prefetching)
• Buffer aware (conservative quality during low buffer conditions)
Client-proxy cooperation policies
I have these
fragments
I have this buffer
occupancy Proxy works ahead using prefetching
Client picks from these qualities
(when possible)
Policy overview
29
• Buffer oblivious (priority-based prefetching)
• Buffer aware (conservative quality during low buffer conditions)
Client-proxy cooperation policies
• 1-ahead
• N-ahead
• Priority-based (based on likely switches)
Quality and content-aware prefetching policies
• Empty cache
• Full cache (preload all versions)
• Best effort (default, as previous example)
Baseline policies
Evaluation and Instrumentation
30
• Evaluation of proxy-assisted HAS policies
In this paper …
31
• Evaluation of proxy-assisted HAS policies
In this paper …
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths,
delays, packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
32
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
33
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
34
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
35
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Player Container Type Open Source
Instrumentation
36
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Player Container Type Open Source
Microsoft Smooth
Streaming
Silverlight
Chunk
Instrumentation
37
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Player Container Type Open Source
Microsoft Smooth
Streaming
Silverlight
Chunk
Netflix player Silverlight Range
Instrumentation
38
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Player Container Type Open Source
Microsoft Smooth
Streaming
Silverlight
Chunk
Netflix player Silverlight Range
Apple HLS QuickTime Chunk
Instrumentation
39
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Player Container Type Open Source
Microsoft Smooth
Streaming
Silverlight
Chunk
Netflix player Silverlight Range
Apple HLS QuickTime Chunk
Adobe HDS Flash Chunk
Instrumentation
40
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Adobe Flash
media server 4.5
Adobe’s OSMF
v1.6 and v 2.0
41
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Adobe Flash
media server 4.5
Adobe’s OSMF
v1.6 and v 2.0
New player (v 2.0) better for
all metrics and scenarios
(also looked at buffer size)
42
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
43
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
44
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Open source squid
proxy (2.7 stable 9)
45
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
46
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
47
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
48
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
49
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
50
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
51
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
52
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
53
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
54
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
55
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
56
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
57
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
58
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
59
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
60
• Clients: Measure performance/service
• Proxy: Implementing policies and measure performance
• Network: Capture network conditions (bottlenecks, bandwidths, delays,
packet losses, etc.)
… for this we need instrumentation of …
Instrumentation
Dummynet to control network conditions
- delays
- packet losses
- bandwidth and bottlenecks
Bandwidth scenarios
61
Slow variations Fast variations Static
Synthetic traces
Bus Ferry Metro Tram
Real-world traces
Client-proxy bottleneck
• Proxies provide only limited performance advantages
under client-proxy bottleneck
• Some performance improvements to prefetching (but
penalty to excessive prefetching)
62
Quality level Stall times
Client-proxy bottleneck
• Proxies provide only limited performance advantages
under client-proxy bottleneck
• Some performance improvements to prefetching
63
Quality level Stall times
Client-proxy bottleneck
• Proxies provide only limited performance advantages
under client-proxy bottleneck
• Some performance improvements to prefetching
64
Quality level Stall times
Proxy-server bottleneck
• Large performance potential for proxy caching
• Significant performance improvement with the best effort policy
• Naive prefetching results in penalty
• Need for more intelligent prefetching policies (cooperative)
65
(a) Quality level (b) Stall time
Quality level Stall times
Proxy-server bottleneck
• Large performance potential for proxy caching
• Significant performance improvement with the best effort policy
• Naive prefetching results in penalty
• Need for more intelligent prefetching policies (cooperative)
66
(a) Quality level (b) Stall time
Quality level Stall times
Proxy-server bottleneck
• Large performance potential for proxy caching
• Significant performance improvement with the best effort policy
• Naive prefetching results in penalty
• Need for more intelligent prefetching policies (cooperative)
67
(a) Quality level (b) Stall time
Quality level Stall times
Proxy-server bottleneck
• Large performance potential for proxy caching
• Significant performance improvement with the best effort policy
• Naive prefetching results in penalty
• Need for more intelligent prefetching policies (cooperative)
68
(a) Quality level (b) Stall time
Quality level Stall times
Transient hit rate analysis
• Best effort has the smallest hit rate
• Prefetching bandwidth benefit future clients
• Hits and high client-proxy bandwidth may cause costly penalties due
to limited bandwidth at misses (more variability and lower hit rates)
69
Client-proxy bottleneck Proxy-server bottleneck
Transient hit rate analysis
• Best effort has the smallest hit rate
• Prefetching bandwidth benefit future clients
• Hits and high client-proxy bandwidth may cause costly penalties due
to limited bandwidth at misses (more variability and lower hit rates)
70
Client-proxy bottleneck Proxy-server bottleneck
Transient hit rate analysis
• Best effort has the smallest hit rate
• Prefetching bandwidth benefit future clients
• Low proxy-server bandwidth may cause costly penalties due to slow
downloads at misses (more variability and lower hit rates)
71
Client-proxy bottleneck Proxy-server bottleneck
Transient hit rate analysis
• Best effort has the smallest hit rate
• Prefetching bandwidth benefit future clients
• Low proxy-server bandwidth may cause costly penalties due to slow
downloads at misses (more variability and lower hit rates)
72
Client-proxy bottleneck Proxy-server bottleneck
Client-proxy cooperation
• For client-proxy bottleneck, both policies slightly outperform all baseline
and quality-aware prefetching policies
• For proxy-server bottleneck, both policies vastly outperform all baseline
and quality-aware prefetching policies
73
Client-proxy bottleneck Proxy-server bottleneck
Example trace: Client-proxy cooperation
• Cooperative policy quickly adapt cache content such as to best serve the
clients, without penalizing early clients
74
Quality level of each client (proxy-server bottleneck)
Example trace: Client-proxy cooperation
• Cooperative policy quickly adapt cache content such as to best serve the
clients, without penalizing early clients
75
Quality level of each client (proxy-server bottleneck)
Conclusions
• Performance impact of HAS-aware proxy policies
• Baseline policies
• Quality and content-aware prefetching
• Client-proxy cooperation
• Bottleneck location and network conditions play central roles in
which policy choices are most advantageous
• Large benefits to cooperative policies when proxy-server bottleneck
• Careful proxy design and policy selection very important
• Future work include adaptive policies
• Bottleneck and their conditions may change
76
www.liu.se
Helping Hand or Hidden Hurdle:
Proxy-assisted HTTP-based Adaptive
Streaming Performance
Vengatanathan Krishnamoorthi (LiU)
Niklas Carlsson (LiU)
Derek Eager (U of S)
Anirban Mahanti (NICTA)
Nahid Shahmehri (LiU)