Client-Side Multi-CDN Switching
Project Status:
(roll over for info)
Working
The project is actively being worked on.
Start:
December 1, 2022
Estimated Completion:
July 1, 2023
- Home
- Client-Side Multi-CDN Switching
Problem Statement
Issues with CDNs can impact QoE at the player if a specific CDN is performing poorly but still being used to fulfill the requests. The player needs to include business logic and heuristics to be able to switch between CDNs, for whatever reason, and have the requests appropriately modified to reflect the new CDN URL.
Project Description
Multi-CDN delivery has become commonplace in scalable streaming video architectures but switching to a different CDN in real time to improve QoE is not easy. There are many server-side and client-side solutions available to streaming operators but is little consensus on the best way to accomplish it. This project proposes a client-side solution to this problem. The Load balancer is a Typescript library that serves as a client-side multi-CDN switcher for video streaming. For each video segment requested by client player, the Load Balancer determines the best CDN to use, and outputs a modified HTTP request identifying that determined CDN. The Load Balancer determines the best CDN by maximizing business rules and QoS scores, with initial values provided by an external interface. Once playback begins, an internal algorithm in the Load Balancer updates the QoS scores with each content delivery network request. The Load Balancer repository also comes with a demo page. The demo page shows lightweight JavaScript integration of the Load Balancer with the open-source Shaka player.
Project Type
Code
Project Leads
Project leads have not yet been identified.
Advisors
There are no SMEs associated with this project.
Goals and Objectives
The objectives and goals of this project are:
- Identify the different methods of CDN switching within the player
- Study the impact of client-side CDN switching on client’s rate-adaptation algorithm
- Identify pros and cons of server-side methods (such as DASH and HLS content steering methods)
- Identify opportunities for harmonizing the client-side solution with the server-side ones (such as server-guided steering)
- Develop a JavaScript load-balancing solution for client-side CDN switching
- Develop an SDK for compatibility between the load balancer and the player framework
Project Scope
This project WILL:
- Outline different methods for client-side CDN switching and explore the pros and cons of each
- Propose a client-side approach to CDN switching using a JavaScript load balancer and SDK compatibility layer
- Provide a JavaScript load balancer to handle the CDN switching
- Provide an SDK for the player to handle compatibility between the load balancing JavaScript and the player
- Claim that this approach is the best or only method for CDN switching
- Recommend one player versus another beyond using a specific player for the purposes of testing the proposed solution
Contributors
The following members have contributed to this project. Click on their name to visit their profile. If they have not published their profile, the link will redirect to their LinkedIn profile.
Additional References
There are no additional references or other required readings need to participate in this project.
Presentations
The following presentations delivered during Players and Playback working group sessions may provide additional information about this project.