Select Page

Technologies and Topics

  • Ryu Controller and Python
  • VirtualBox with Ubuntu
  • Postman – Interactive tools set for OpenFlow REST API
  • Mininet with scripts to build realistic datacenter Networks
  • Atom IDE
  • Ryu Simple Switch (L2 Learning Switch)
  • Reimagined Simple Switch – multi-table, extensible L2 Learning Switch (inspired by Faucet)

Tutorial Learning Outcomes:

After working with this article you will be able to:

  • Create an comprehensive development workspace for crafting and testing SDN controller application based on OpenFlow and the Ryu Controller
    • Install VirtualBox and create a Virtual workspace
    • Install Ubuntu, Python, Ryu Controller, Python dependencies and Atom IDE within the virtual workspace
  • Install and use Postman application to interact with a OpenFlow switch using the Ryu REST API
  • Use Mininet to build a realistic topology model and manage with an L2 Learning Ryu Application
    • Datacenter topology is multi-rack, multi-host within a rack, aggregator switch(s) and network redundancy
  • Conduct Datacenter wide ping tests to validate the each host can communicate with all the other hosts

See the detailed learning outcomes presented for each article below.

Core OpenFlow Technical Track

This Core OpenFlow Technical Track is a tutorial designed to build SDN programming skills using OpenFlow switches and the Ryu Controller. In a series of How-To articles key technologies are introduced. These articles build skills for infrastructure management, OpenFlow programming, and realistic test operations. Each article has a specific set of Learning Objective identified and these are presented below.

The goal of the Core OpenFlow Technical Track is to enable the user to acquire a solid foundation of skills covering all aspects of what is required to become a productive SDN developer using OpenFlow and the Ryu Controller. This includes creating a virtual workspace for OpenFlow development that controls all the technology interdependence. For training materials, distribution of application examples and portability, this virtual workspace has to perform identically across all the popular workstation opening systems.

The sequence of Core Technology articles presented below on this page are:

  1. Ryu for Rapid Prototyping

  2. Creating a Development Workspace

  3. Interactive Ryu with Postman

  4. Custom Mininet Topologies and Introducing Atom

  5. Understanding the Ryu API: Dissection Simple Switch

  6. Understanding the Ryu API: Reimagining Simple Switch

How to Use this Technical Track Tutorial

The articles in this track are designed to present the technical details of the broad topic of SDN concepts and OpenFolw implementation in a sequence. Each article builds of the concepts presented and skills learned in the preceding articles. Therefore, if you are new to OpenFlow we suggest the you work through the articles in sequence. Depending on starting skills this Core OpenFlow Technical Track is a 2 to 4 day course.

If you already have some familiarity with OpenFlow, review the Technologies and Topics plus Learning Outcomes presented below for each article to select which article will add values for you. However, we do recommend that you at least browse all the articles. There may be impotent nuggets of knowledge even in an area  that you already have some familiarity with.

Ryu for Rapid Prototyping

This is a short article presenting why Inside OpenFlow selected Ryu as the controller for the initial Inside OpenFlow Tracts. The article discusses key features of Ryu that make it an idea learning and rapid prototyping technology. Go to article.

Technologies and Topics

  • Ryu Controller
  • OpenFlow versions supported
  • Close mapping between Python base Ryu classes and OpenFlow rules
  • Python coding language

Tutorial Learning Outcomes

After working through this tutorial you will be able to:

  • Present why the Ryu Controller is an excellent selection for an OpenFlow learning or Rapid Prototyping environment
  • Communicate the OpenFlow specification levels supported by Ryu

Creating a Development Workspace

This is a “keystone” article. It is a step-by-step process that guides you through building the virtual Development Environment that will be used as the development environment for all the Inside OpenFlow posts.     Go to the article.

Technologies and Topics

  • VirtualBox
  • Ubuntu
  • VirtualBox Guest Additions
  • git
  • Mininet
  • pip
  • Python
  • Ryu Controller
  • Ryu python dependencies – libxml2-dev, libxsltt1-dev, libffi-dev, lxml, paramiko, ovs

Tutorial Learning Outcomes

After working through this tutorial you will be able to:

  • Install and configure VirtualBox for an OpenFlow development environment
  • Load Ubuntu Linux as the Operating System for the development VM
  • Install VirtualBox Guest Additions in your new VM
  • Install full Mininet environment in developer VM
  • Run installation verification for Mininet  – POX controller, one switch, 2 hosts and pingall test.
  • Install pip in your development VM
  • Install Ryu python dependencies in you development VM
  • Install Ryu Controller in your development VM

Interactive Ryu with Postman

This article provides the tools for a developer to see inside OpenFlow switches and modify its behavior via the Ryu REST API. Querying the REST API for all OpenFlow switches in the network, a switch’s description, retrieving flow entries, etc is presented in step-by-step detail. The REST API messages for modifying current flows, adding flows and deleting flows are also presented.

The article presents a tool – Postman –  that make the task of crafting REST API messages easy. Using Postman to create massages for all the above REST interactions is presented in detail. How to save these messages into Postman Collections in covers.

The example REST messing is run on the MiniNet environment presented in the Creating a Development Workspace article above. Go to article.

 

Technologies and Topics

  • Chrome browser
  • postman for Chrome
  • Ryu REST API
  • JSON
  • Postman collections
  • Packaged set of Postman scripts to interact with OpenFlow switch via Ryu
  • Test Suite for Postman Collection

Tutorial Learning Outcomes

After working through this tutorial you will be able to:

  • Install the Chrome browse in you development VM
  • Install the Postman application in Chrome on your development VM
  • Utilize the Ryu multi-component design by launching a Ryu application and the Ryu REST API at the same time
  • Probe for network OpenFlow switches with a Postman crafted Ryu REST message
  • Probe for switch description and flow status with Postman crafted Rye REST messages
  • Add, modify, and delete flows in a switch with Postman crafted Rye REST messages
  • Dynamically observe and change OpenFlow switch behavior with Postman crafted Rye REST messages
  • Create a Postman collection and save Postman requites into the collection.
  • Run tests program for Postman Collection of REST messages

 

Custom Mininet Topologies and Introducing Atom

This article provides the tools for creating virtual OpenFlow networks and the code that automate the process. The article specifically introduces how to visualize realistic datacenter network topologies. Two new technologies – mininet for creating virtual networks and the atom IDE for editing code -are integrated into the Inside OpenFlow Development Workspace.

The article develops 5 topology models for creating virtual datacenter networks. These increase in complexity and configuration from the “Basic” configurationwith one aggregator switch connected to racks with one top-of-rack switch and a configurable number of Host to the “Fully Redundant” configuration with multiple aggregator switches connected to multiple rack each containing 2 ToR switches and multiple Hosts.     Go to article.

 

Technologies and Topics

  • Mininet virtual OpenFlow network envirnment
  • Mininet Python libraries
  • Python scripts for automaton of building Mininet networks
  • Virtual models of Datacenter networks
  • Atom IDE for creation and maintenance of Python Mininet scripts

Tutorial Learning Outcomes

After working through this tutorial you will be able to:

  • Install the Mininet virtual network platform
  • Install Atom IDE and extension
  • Create a Mininet project in the Atom
  • Build and run a Python Ryu application script for the Simple Topology model
  • Build and run a Python Ryu application script for the Basic Datacenter topology model
  • Build and run a Python Ryu application script for the Configurable Datacenter topology model
  • Build and run a Python Ryu application script for the Fully Redundant Datacenter topology model

 

Understanding the Ryu API: Dissecting Simple Switch

In our previous articles, we covered pretty much everything needed to get started with SDN development using Ryu and Mininet. Now that our virtual workspace has all the development tools we need, it is now time to look into the real meat of Ryu: its API. Follow along as we discuss the detailed inner workings of Simple Switch as an existing example using the Ryu API with detailed documentation and code references in this continuation of our OpenFlow Core Tutorial Track. Go to article.

 

 

Technologies and Topics

  • Anatomy of a Ryu Controller Application
  • Structure of L2 Switch
  • Terminology and Icon Legend
  • Introduction of Ryu Event Handlers
  • Detail links from Python application code to Ryu Modules, Classes, Attributes,  Functions, etc.

 

 

 

Tutorial Learning Outcomes

After working through this tutorial you will be able to:

  • Articulate the core structure of Ryu Controller Applications
  • Articulate the functions of an L2 switch
  • Articulate the terminology and icon used by Inside OpenFlow in dissecting Ryu applications
  • Drill-down on New Switch Handler event code to find specific Ryu source code and documentation
  • Drill-down on Packet-In Handler and Packet Dissection Handler to find specific Ryu source code and documentation
  • Drill-down on  Constructing and Adding a Flow Entry to find specific Ryu source code and documentation

 

Understanding the Ryu API: Reimagining Simple Switch

This article “reimagines” the L2 Simple Switch using features found in the modern OpenFlow 1.3 or later controllers and switches. Two huge changes are made to the architecture: 1) a multi-table design is used, and 2) the mac learning state is completely moved to the OpenFlow switches. The multi-table design enables a more sophisticated solution that includes ACLs and packet filtering. Moving the large MAC learning tables out of the controller make for the application scalable.

Simple Switch Reimagined is heavily influenced by Faucet, an Open Source commercial-grade OpenFlow controller application for Ryu. Our purpose was not to rewrite Faucet, but to write a more limited, easy-to-understand controller application for learning more advanced OpenFlow concepts. Simple Switch 2 is also a great starting point for understanding the architectural concepts of Faucet. Go to article.

 

Technologies and Topics

  • Multi-table OpenFlow pipeline
  • Non-blocking packet to Controller algorithm
  • Stateless L2 Controller Application

Tutorial Learning Outcomes

After working through this tutorial you will be able to:

  • Install Simple Switch 2 in a “VirtualBox environment
  • create a realistic, virtual Data Center network Mininet
  • Test Simple Switch 2 using the virtual Data Center network
  • Simulate a Host moving from one network segment to another and validate that Simple Switch 2 handles the event
  • Use Postman with the Inside OpenFlow quires to probe the internal state of the the OpenFlow switches
Share This