Client-Side Multi-CDN Switching

Project Status:

(roll over for info)


The project is actively being worked on.


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


Project Leads

Project leads have not yet been identified.


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
This project WILL NOT:
  • 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


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.


    The following presentations delivered during Players and Playback working group sessions may provide additional information about this project.