Project 5: Rolling your own CDN Solution

$30.00 $24.90


Unlike prior projects, this project does not require you to submit any working code. Instead, your team has to submit a 5-page document on the design thought process of rolling out your own CDN. The report must answer all the open questions I have asked in this project description.


By now, you have learned that most of the content we consume over the Internet is served by content delivery/distribution networks (CDNs). In this project, you will explain the building blocks of a CDN and how you will roll one of your own.

CDNs consist of 1) a large number of servers geographically distributed worldwide; 2) a system that maps clients to “good” replica servers and 3) a system that determines those mappings. Begin your report by briefly explaining the various functions of each of the above components.

The report must fully describe all the steps/decision needed to rollout your own CDN. For example, first you will need to re-direct clients to replica servers. How will you implement it? What will be your strategy? Assume a client that 1) asks your DNS server for the IP address of and 2) uses an HTTP get to fetch a file from that address. Also assume that the clients will run from servers located all over the world. What system information will you use to determine the best replica server if performance is measured in terms of how long it takes to download a piece of content. You can assume that the contents are small in size (order of a few kB).

Note that in the majority of cases the size of the content at the origin server is much larger than the size of the cache on a replica server. In other words, you can’t fit all the requested content at each cache and your CDN must implement a cache replacement strategy. What cache replacement strategy will you use and why? Describe all the options you have explored and justify your choice of cache replacement strategy.

When determining the replica server to use for each client request, it is necessary to determine which one will give the best time-to-completion (TTC) for downloading a Web page. This can depend on a number of factors. Your report must include the properties you think affects this choice and how will you estimate these properties. This part of your report (such as specific pseudocodes/algorithms) will constitute the major portion of your grade.


Your grade in this project will be composed by the following components:

  • 5 points – Explanation of the various components of CDN.

  • 5 points – Explanation of your HTTP server design especially the cache replacement strategy.

  • 10 points – Explanation of the properties used for choosing the replica servers to re-direct the client.

  • 5 points – Topic coverage, presentation and relevant state-of-art research references.

Registering and submitting Your Project

Before turning in your project, you and your partner(s) must register your group. To register yourself in a group, execute the following script:

$ /course/cs5700f18/bin/register project5 [team name]

This will either report back success or will give you an error message. If you have trouble registering, please contact the course staff. You and your partner(s) must all run this script with the same [team name]. This is how we know you are part of the same group.

You submit your report by running the turn-in script as follows:

$ /course/cs5700sp17/bin/turnin project5 [project directory]

[project directory] is the name of the directory with your submission. The script will print out every file that you are submitting, so make sure that it prints out all of the files you wish to submit! Do not turn in files larger than 10MB, as these will be rejected.

Only one group member needs to submit your project. Your group may submit as many times as you wish; only the time of the last submission will determine whether your assignment is late.