-
Notifications
You must be signed in to change notification settings - Fork 19
Home
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
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
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!
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:
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.
Students discussed project ideas for the GENI competition and worked on writing code related to data structures, packet sniffers, and multi-threading.
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.
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:
- Lecture 7: SDNs
- POX SDN Controller
- OpenFlow Tutorial Using POX
- Open vSwitch
- If someone finds a good OVS tutorial or list of useful commands, let me know and I will add it.
If you wish to use any of the content on this site for your own course, please contact Tim Wood.
This course is supported in part by NSF grant CNS-1422362.