Introduction to Software Defined Networking
Duration: 5 Days
Course Background
Developments in cloud computing and virtualisation technologies, combined with the development of new ASICs (Application Specific Integrated Circuits) for efficiently processing and forwarding of network packets have made it possible to approach the task of managing network services in such a way as to separate the component that decides where traffic is to be sent (the control plane) from the systems that forward traffic to the required destination (the data plane). This in turn makes it possible to specify network services, without coupling them to specific network interfaces, which, in turn makes it possible to move service entities between interfaces without requiring them to change identities. Hence it is possible to define networks in software (SDN) and create a logical network control plane in which the hardware is physically decoupled from the hardware responsible for forwarding. This approach makes it possible to devise network switches that purely forward packets whilst a separate server runs the network control plane. It is the goal of this course to not only explore the concepts and technologies underlying software defined networking, but also to explore the kinds of applications that can be developed using such an approach. The practical examples in this course will make use of a simulated SDN Mininet for which there is a Pythonic API and which will allow various SDN scenarios to be explored.
This course lays the foundations for developing real software defined networks e.g.
Course Prerequisites and Target Audience
Attendees are expected to have a sound basic knowledge of TCP/IP and of python programming.
Course Outline
- SDN - History and Essential Background Concepts
- Traditional IP networks are made up of Autonomous Systems (AS)
- Issues in controlling QoS (Quality of Service) in AS type IP networks
- Three layers of SDN
- SDN layer
- Controller
- Physical Network
- The Planes of SDN
- Control Plane
- Data Plane
- Management Plane
- OpenFlow
- The OpenNetworking foundation and OpenFlow
- OpenFlow as an SDN standards
- Overview of OpenFlow capable products
- OpenStack and OpenFlow SDN
- Virtual Networking
- Network virtualisation - Key concepts
- Applications of Network Virtualisation
- Overview of OpenFlow capable products
- Introduction to the Mininet Simulator
- Overview of the Mininet Python API
- Experimenting with virtual networking using Mininet
- The Control Plane
- Features and Overview
- Example SDN controllers
- Control Plane Customisation
- Switching and the Control Plane
- Firewalls and the Control Plane
- Data Planes
- Software aspects of Data Planes
- Hardware aspects of Data Planes
- Designing and implementing programmable hardware
- Programmable SDNs and Northbound APIs
- Rationale underlying Northbound APIs
- SDN Programming and SDN Programming Languages
- Introduction to the Frenetic and Pyretic SDN Programming Languages
- Composing SDNs
- Resonance - Event Driven Control for SDN
- PyResonance - an implementation of Resonance in Pyretic
- SDN Use Cases
- Data Centers
- Composing SDNs
- Internet Exchange Points
- SDN Advanced Topics
- Network Monitoring
- Programmable Network Taps
- Service Insertion
- DoS Mitigation
- Scale-Out Load Balancing