• Checkpoint 1: Problem Statement, Preliminary Literature Review: Due November 26th, 11:59PM ET.

  • Checkpoint 2: Close to completed Report, Code and Data Analysis Due: December 6th, 11:59PM ET.

  • Completed Project: Due: Friday, December 13th, 11:59 PM ET

1. Project Goals

  • Identify and articulate a specific, and concise problem statement in a nascent networks topic to research.

  • Build your skill set based on your understanding of core networking topics, and apply them to real-world networks problems, through implementation, data analysis or literature review.

  • Give a 10 minute presentation on the topic of your choice.

2. Overview

In this lab, your group will investigate a networks topic in depth, and should be able to convey through a small implementation, network measurement analysis or through a literature review of a problem in a nascent networks topic.

  • You can choose from a very broad range of projects, but your project must have a main focus on Network Systems. There should be a high-level question that you should frame and answer though your project.

  • You can come up with your own project idea or start with one of the suggestions below. Any of the following suggestions will function as just a starting point for a project idea, and are not fully investigated concepts. As a result, all of them will require some background investigative work and further definition of the problem you are solving and how you plan to solve it.

3. Getting Started

You should begin with a general idea of the problem you want to look at, then do one or more of the following:

  • a literature search of related work

  • related projects to get some ideas of what has been done

  • what some approaches are to solving your problem.

It is fine to do a project whose goal is to reproduce other researcher’s results, and/or to compare different, already developed, approaches to a particular problem.

You can work in groups of 2 to 4. If you would like to change your group membership, please send me an email with all of your group members.

3.1. Your Project Starting Point

Log into CS43 Github for our class and get the ssh-URL to your lab git repository. Follow along with the prompts below to SSH, create a lab directory and clone your lab repos.

# ssh into our lab machines
ssh yourusername@lab.cs.swarthmore.edu

# cd into your cs43/labs sub-directory and clone your project repo
cd ~/cs43/labs
git clone [your-ssh-URL]

# change directory to list its contents
cd project-user1-user2

# ls should list the following contents
ls
 README.md  data-analysis/  lab-extension/  lit-review/	presentation/  problem_statement.md

You should find the following files and directory structure in your Github repositories.

  • There is no starting point code, since your group will decide on the kind of project you plan to implement.

problem_statement.md is due for Checkpoint-1
  • There are three folders for each of the project options: data-analysis/ lab-extension/ lit-review/. You should only need one of these folders, depending on the project you choose.

    • Within each project folder, feel free to add more folders to keep your Github repo organized. The lit-review/report.tex only needs to be submitted if you plan to do a literature review.

Your working lab-extention/data-analysis and a complete lit-review are due for Checkpoint-2
  • Finally, there is a presentation folder should contain your presentation. You should push presentation-username1-username2.pdf of your presentation here.

The final deliverable is your presentation.pdf.

4. Deliverables

  • Checkpoint 1: Complete and submit problem_statement.md.

  • Checkpoint 2: You should have a close to working implementation of your project by this point.

    • If you are writing a literature review, you should have all the sections, except abstract and conclusion ready.

  • Final Project: Github repository with the completed code or lit review, and your 10 minute presentation.

5. Project Ideas

There are three categories of projects that you can choose to implement.

5.1. Projects based on lab extensions

The projects in this list are based on lab extensions.

  1. Since these might involve some new ways of working through labs, we can go over your design choices, and C functions you would need to get started with implementation.

    • With these projects, you can keep the report length shorter, to about 1-2 pages, describing your improvements on the specific lab, your design choices, and testing strategy.

  2. Extend the threaded-concurrent server you’ve built in Lab 2 to run using event-driven concurrency with select.

  3. Build Go-Back-N and Selective Repeat - reliable transport functionality to Lab 6.

Network Security Labs

I will provide you with lab start-up code and a write-up if you choose to undertake any of the following labs.

  1. Enhance the DNS infrastructure using DNSSEC: DNSSEC is a set of extension to DNS, aiming to provide authentication and integrity checking on DNS data. With DNSSEC, all the answers from DNSSEC protected zones are digitally signed. By checking the digital signature, a DNS resolver is able to check if the information is authentic or not. DNSSEC prevents DNS cache poisoning attacks can be defeated. In this project, you will be provided with a miniature DNS system developed with DNSSEC. Your task is to configure each of the nameservers, so they all support DNSSEC.

  2. Launch the Kaminsky, a DNS Cache poisoning attack: This attack launches a remote DNS cache poisoning attack. Unlike the DNS rebinding attack, here the attacker is not on-path, and cannot sniff packets over the same local area network. Assuming DNSSEC is not enabled, your task is to poison the DNS cache and misdirect users to visit malicious destinations by remapping the hostname to IP mapping. Here is a link to a sample lab writeup.

  3. Launch attacks on TCP (The Mitnick attack) The Mitnick attack is a type of TCP session hijacking attack, that spoofs TCP session sequence numbers, to gain access to a remote system. Read up on the full attack here. Here is a link to a sample lab write-up.

The labs that follow are developed by Prof. Fraida Fund at NYU Tandon School of Engineering. She thinks deeply about Computer Networking Education and is an amazing educator! Some of these labs require a Federated Testbed account, and I can help you set that up :)!
The following "Tutorial" style labs are developed by APNIC (Regional Internet Registry administering IP addresses for the Asia Pacific), and will give you experience on configuring real networks. If you want to run these labs, please talk to me about how many of these "Tutorials" would contribute to a project.
  1. APNIC Labs. To take a look at the instructiosn for each lab, you can create a free account with APNIC.

5.2. Dataset Analysis based on Network Measurements

The projects in this list are based on data analysis of real-world network measurements. These projects will involve:

  • understanding and parsing the formats of these datasets

  • experimenting with how to visualize data

  • replicating existing results, or generating basic statistics of the measurements you’ve observed.

  • for this project, understanding and parsing the dataset, and reporting on the results can take up half of your report. The other half of your report should be dedicated to

    • why this problem is important, and

    • presenting a short discussion of your results: what the key observations that this dataset in related literature, and your results in context.

If you would like to investigate one of these topics, setup a meeting with me to getting started with the data analysis, and the types of results you plan to visualize before Checkpoint 2.

5.3. Literature Review Projects

The projects in this list involve an in-depth analysis of a specific research topic related to Networks. This would have little or no implementation and testing, but would involve an in-depth literature investigation of a topic and an in-depth written report on what you learned that would include an extensive bibliography (5 - 10 references).

  • The topics presented in the list are broad, as a part of your checkpoint 1 submission, you should narrow down the problem statement, to a specific aspect of these topics that you would like to investigate.

  • To do so, you might want to identify a topic that interests all group members, and perform a preliminary literature search using Google Scholar to find recent and relevant literature on this topic.

  • Since your report is primarily based on a literature review, or a case-study, your report should have the following components:

    • Motivation & Introduction

    • Problem Statement

    • Up to 3 topics that you investigate within this problem statement

    • Discussion & Concluding remarks

Some possible topics include (but are not limited to):

  • Privacy aspects of Internet-of-Things

  • Event-driven vs. Thread-driven Concurrency

  • Security aspects of DNSSEC, TLS, IP-SEC, Security in BGP, Public-Private Keys

  • End-to-End argument: Violations in System Design

  • Network Ossification: "Protocols set in stone and hard to change"

  • TCP fairness in the wild.

  • Differentiating Packets in the Network Core.

  • Network Neutrality: Arguments for and against, and perspectives.

  • Equitable Internet Access across the globe

  • Public vs. Private Internet (e.g. Google’s Network Infrastructure)

  • Software Defined Networking: Improvements, Deployment.

  • Special Topics: Data-Center Computing, Mobile Networks and Roaming

7. Grade

This project will count for 15% of your grade.

Your grade is not based on how novel your results are, but rather in your ability to convey your understanding of the problem, and how to properly frame and analyze your discussion or experimental results.

The final grade for for this is based on

  • the design and execution of the experiment (regardless of outcome) or report argument

  • the thoroughness and readability of the report.