Software Defined Networking Lab

CS 4270 / CS 8803 SDN, Fall 2014

This course introduces software defined networking, an emerging paradigm in computer networking that allows a logically centralized software program to control the behavior of an entire network.

Separating a network's control logic from the underlying physical routers and switches that forward traffic allows network operators to write high-level control programs that specify the behavior of an entire network, in contrast to conventional networks, whereby network operators must codify functionality in terms of low-level device configuration.

Logically centralized network control makes it possible for operators to specify more complex tasks that involve integrating many disjoint network functions (e.g., security, resource control, prioritization) into a single control framework, allowing network operators to create more sophisticated policies, and making network configurations easier to configure, manage, troubleshoot, and debug.

This course provides a path for students with a broad diversity in backgrounds to learn programming and computer science, including those considering a computer science major. Students will use a problem-driven approach to build complex, interactive software systems. The course includes an introduction to a wide variety of issues relating to software, including design, problem-solving, development processes, and broader issues such as security, performance, and ethics.

Prof. Nick Feamster
<my last name>

Russ Clark <firstname.lastname>

TA: Arpit Gupta

Class Location and Time:
CCB 102. Fridays, 1:00pm-4:00pm

Technology Requirements:
You are strongly encouraged to bring a laptop to every class.

Course Format

Classroom time will be used for lecture, discussion, and in-class lab time.

The first half of each session will be devoted to paper and topic discussion. You should read the paper, watch the videos, and participate in online discussion before coming to class.

The "lab" portion of the course will allow for class-time to gain hands-on experience with SDN-related tools and concepts.

Assignments for the course will be lab-based programming assignments, building off of the Mininet software developed at Stanford University, which can run SDNs in emulated environments on networks of virtual machines. We will provide a course virtual machine with most (if not all) of the necessary software installed.

Recommended Background

Students should have taken at least an undergraduate-level networking course and have programming experience in a high-level programming language, such as Python or Java. Experience with virtual machines and other virtual networking environments may also be useful.

Getting Started

There are some useful videos available online; these might be a good starting point for many people: You may find the additional reading useful for introductory material:



Grading is based on participation, completion of the lab assignments, a quiz, and the final project.

Participation includes:

  • Participating in online discussion on Piazza.
  • Responding to thought questions in advance on Piazza.
  • Attending class and leading paper discussions.
  • Watching the videos (if applicable).

Important: You must read the papers, watch the videos, and participate in the class forum discussion before class on the specified day. The video playlist is here.
Date Modules Hands-On Activity Readings

August 29

Module 1: History and evolution of SDN

Virtual Box/Mininet Setup

September 5

Module 2: Control and data plane separation

Mininet API

September 12

Module 3: SDN Control Plane

Hub, Switch, Firewall in POX

September 19

Module 4: Virtual networking

Virtualizing Network Control

September 26

Module 5: Programmable Data Planes


October 3

Module 6: Programming SDNs

Hub, Switch Firewall in Pyretic

October 10

Module 7: Verification and Troubleshooting

IDS in Kinetic

October 17

Module 8: Use Cases


October 17 Project Office Hours
October 24 Interim Project Presentations
November 7 Project Office Hours
November 14 In-Class Quiz
November 21 Final Project Presentations

Course Resources

  • Piazza Online Discussion Forum
  • YouTube SDN Playlist: Videos for the lectures, which you should watch ahead of time.
  • Supplementary Videos
    • Structure and Design of SDN (Teemu Koponen)
    • The Frenetic Programming Language (Jennifer Rexford)
    • Event-Driven SDN Control (Nick Feamster)
  • Hands-On Programming Assignments (Linked from the schedule tab; will be done in-class.)
  • Connection Management Blog: Blog where various SDN topics will be discussed during the course.

Software Resources



  • Feamster, Nick, Jennifer Rexford, and Ellen Zegura. "The Road to SDN."  ACM Queue 11.12 (2013): 20.

Control and Data Plane Separation

Control Plane

Network Virtualization

Data Plane

Programming SDNs


Use Cases