Skip to content
Tim Wood edited this page Feb 24, 2015 · 35 revisions

Welcome to CSCI 6907.11 Special Topics: Advanced Network Systems Programming!

This course will investigate two emerging network technologies, Software Defined Networking (SDN) and Network Function Virtualization (NFV), that are causing significant changes in how networks are built and managed. The course will be hands-on and project-intensive: a substantial portion of the class meetings will be dedicated to group work developing new applications to run within the network. Students will learn how to write software that inspects network traffic, controls how packets are routed, and manipulates packet data. Lectures will cover topics such as network protocols, traffic management algorithms, virtualization platforms, and achieving scalability on multi-core servers.

Timothy Wood
Computer Science Department
George Washington University


Week 1: Networking Overview (1/12/15)

In class we covered what networks are composed of and how we use abstraction layers to make networking more manageable. We reverse-engineered the HTTP protocol by studying packets in tcpdump, and we used telnet as a web browser.

Slides and Reference Material:

Homework:

  • Be sure that [email protected] has your github username and has added you as a member of the gwAdvNet2015 organization.
  • Read the GW CloudLab Style Guide, and plan to follow it for all code you write.
  • Read about how to Solve Issues! Then claim and solve at least two issue in the adv-net-samples Issue Tracker. You may do this individually or in a team of up to three people. If solving in a group, be sure to tag all students who helped with the @ sign in a comment on the issue.
    • Initial Pull Request must be submitted by Monday 1/19 at 11:59PM
    • PR must be resolved by Thursday 1/22 at 11:59PM

Week 2: No class because of MLK Day (1/19/15)

Check your github account for a new repository with a name like USERNAME-hw. This is where you will commit the files for your non-team based homework. The first assignment has been posted and is due Sunday 1/25!

Week 3: GENI Tutorial (1/26/15)

We learned the basics of the Global Environment for Network Innovations (GENI), a platform for experimenting with networks and servers. Guest lecture by Grace Liu.

Slides and Reference Material:

Week 4: Packets and the OS (2/2/15)

We discussed the IP, TCP, and UDP protocols to understand how abstraction layers can help support a diverse range of network applications. We learned to use ltrace and strace to observe what a program is doing, and dug deeper into how a packet traverses the operating system's network stack.

Slides and Reference Material:

Homework

  • Individually, or in groups of up to 3 students, solve issues in this repository's Issue Tracker.
  • Each group must finish at least one non-bug issue. If an issue is tagged as a bug and it refers to a piece of code you wrote previously, then you should fix it.
  • Teams with 2 or 3 people should try to solve at least two different issues. Each team must solve at least one non-bug issue.
  • Claim an issue by posting a comment listing all team members.
  • You must submit a preliminary Pull Request by Sunday 2/8 with your solution. It is OK if you haven't finished solving a hard issue by then, but you should at least create a PR that shows the code you have written thus far.

Week 5: Work Time (2/9/15)

Students discussed project ideas for the GENI competition and worked on writing code related to data structures, packet sniffers, and multi-threading.

Week 6: No Class (2/16/15)

Students used this time to continue working on Issues in the sample code repository and to plan and develop their GENI project.

Homework:

  • GENI Project Description - a one page writeup describing your GENI-related project. Due Wednesday 2/18.
  • Solve Issues - Due Sunday 2/22. Create your Pull Request early in case you need to make modifications. Also, be sure to update your repo with the main master so you get everyone else's updates.

Week 7: Software Defined Networking (2/23/15)

We (finally!) learned about software defined networking. We discussed how networks such as the telephone network and the Internet send both control messages and data, and what the benefits and drawbacks are of centralized and distributed control. We then used GENI to learn about Open vSwitch and the POX SDN controller. Students saw how hosts use ARP to determine the mapping between a MAC and an IP address, and how a switch can learn which ports are connected to which MAC addresses. We wrote a simple POX SDN control module that could either direct individual packets or could establish flow rules to be installed on the switch.

Slides and Reference Material:

Clone this wiki locally