Streaming video traffic is a major consumer of Internet Bandwidth.
- e.g. Netflix, YouTube, Amazon Prime takes up 80% of residential ISP traffic
Challenges include:
- scale - how to reach billions of users?
- heterogeneity - different users have different capabilities (e.g. wired vs mobile, etc.)
To deal with these challenges, we use a distributed, application-level infrastructure.
Consider the main challenges of streaming a stored video:

- sever-to-client bandwidth will vary over time with changing network congestion (in house, access network, network core, video server)
- packet loss and delay due to congestion will delay playout or result in poor video quality
DASH - Streaming Multimedia
We use DASH (Dynamic Adaptive Streaming over HTTP) to stream multimedia.
- Server
- divides video into multiple chunks, each encoded at different rates
- different rate encodings are stored in different files
- files are replicated in various CDN nodes
- a manifest file provides the URLs for different chunks
- Client
- periodically estimates server-to-client bandwidth
- consulting the manifest file, client requests one chunk at a time
- client chooses max coding rate sustainable given current bandwidth
- different coding rates can be chosen at different points in time (depending on available bandwidth at time) and from different servers
- Client has level of “intelligence” in the sense that the client determines the following:
- when to request chunk (such that neither buffer starvation or overflow does not occur)
- what encoding rate to request (higher quality when more bandwidth is available)
- where to request chunk (i.e. can request from URL server that is close to client or one that has higher bandwidth)
Streaming video involves encoding, DASH, and playout buffering.
Content Distribution Networks (CDNs)
Content needs to be streamed (selected from millions of videos) to hundreds of thousands of simultaneous users.