- Clients issue DNS query to resolve domain name to IP address of content server in a CDN.
- CDN’s DNS server selects best content server based on client’s IP and server load.
- Client requests video chunks encoded at multiple bitrates and selects bitrate based on throughput and buffer.
- Entire system runs on one host with a network simulator (netsim).
- Use a VM for development and testing.
- Components:
- Browser: Use an off-the-shelf web browser to play videos.
- Proxy: Implement adaptive bitrate selection in an HTTP proxy.
- Web Server: Video content served from an off-the-shelf web server (Apache).
- Individual project.
- Can discuss at a conceptual level with others and consult Internet material (except Python proxy implementations).
- Final code and configuration must be your own.
- Implement a proxy that forwards messages between client and server.
- VM is required for final stage but not preliminary stage.
- Accept connections from clients and open a connection with a server.
- Steps:
- Establish a connection with a client: Listen on a specified port for client connections.
- Establish a connection with a server: Connect to the server using the provided IP and port 8080.
- Messages have a body and an End Of Message (EOM) symbol (
). - Proxy waits for a message from the client and then a response from the server before forwarding.
- Create an executable Python script called
proxy
in the proxy directory. - Invoke it with
listen-port
,fake-ip
, andserver-ip
as arguments.
- Use the netcat tool to test the proxy implementation.
- Proxy should forward messages of any length and support back-and-forth messages until connection is closed.
- Submit a zipped file named
<yourUNI>.zip
with ahandin
directory containing:proxy
directory with source code and an executable namedproxy
.
- Submit to Gradescope.
- Details to be released later.
- Provided on GCP.
- Follow tutorial to set up and do testing.
- Options for moving files between VM and computer.
- Details to be released later.
- Details to be released later.
- Details to be released later.
- Use Python 3 (version 3.10.12 on VM).
- Allowed packages:
sys
,socket
,threading
,select
,time
,re
,numpy
,subprocess
.
- Proxy (70 points):
- Preliminary stage proxying [15 pts]
- Final stage proxying runs on browser [10 pts]
- Final stage proxy – implementing EWMA throughput estimator & bitrate adaptation [35 pts]
- DNS Server – correct responses and implementation of web server selection [10 pts]
- Code executes as instructed [-10 pts if we have to manually debug things]
- Writeup (20 points):
- Plots of utilization, fairness, and smoothness for [10 pts] α ∈ {0.1, 0.5, 0.9}
- Discussion of tradeoffs for varying [10 pts] α
- Style (10 points):
- Code thoroughly commented
- Code organized and modular
- README listing your files and what they contain
- Zero tolerance on plagiarism.
- Follow Columbia University and department policies.
- Individual assignment, no sharing or using external code without permission.
- No use of AI-assisted coding tools.
Reviews
There are no reviews yet.