zur Startseite

Fachpraktikum - SDN (WS17/18)

Software-defined Networking
Dozent Dr. rer. nat. Frank Dürr
Umfang4 SWS
Sprache Englisch
Studiengänge Informatik, Softwaretechnik, INFOTECH
Zielgruppe Master

Software-defined networking (SDN) is a popular technology to increase the flexibility and efficiency of communication networks that caught a lot of attention and support from academia and industry (e.g., Google, Microsoft, NEC, Cisco, VMWare).

SDN increases flexibility and efficiency by out-sourcing network control (e.g., routing) from network elements (switches) to a network controller running on standard servers. The network controller has a global view onto the network (logical centralization) and facilitates the implementation of network control logic “in software” using standard languages like C, Python, Java, or even declarative approaches.

With OpenFlow, a first standard protocol for SDN is available that is implemented by hardware switches from several vendors and also software switches like Open vSwitch as typically used in data centers to connect virtual machines on hosts. Moreover, several open source controller implementations exist.

In this lab course, we will introduce the basic principles of SDN, and students will gain practical knowledge and experience in programming software-defined networks using realistic examples. In detail, this course covers the following aspects:

  • Introduction to the OpenFlow standard
  • SDN controller concepts and interfaces using the OpenDaylight controller (Java-based implementation; REST interface, OSGI module interface)
  • Topology discovery and statistics (counters)
  • Implementation of centralized static and dynamic routing protocols
  • Control plane distribution for increased availability and scalability
  • Testing and performance evaluation using software switches (Open vSwitch), hardware switches, and network emulation (Mininet)
  • Basic knowledge of computer networks (OSI model; Internet protocols like IP, TCP/UDP, ARP)
  • Programming languages: Java or C/C++, Python