OpenDaylight Tutorial: Connecting OpenFlow Switches
In this excerpt from "OpenDaylight Cookbook," learn how to connect an OpenFlow switch to the open source SDN controller.
May 23, 2018
OpenDaylight is an open source project aiming to be a common tool across the networking industry - for enterprises, service providers, and manufacturers. It provides a highly available, multi-protocol infrastructure geared at building and managing software-defined networking deployments. Based on a Model Driven Service Abstraction Layer, the platform is extensible and allows users to create applications to communicate with a wide variety of south-bound protocols and hardware.
In other words, OpenDaylight is a framework used to solve networking-related use cases in both software-defined networking and network function virtualization domains.
To download the OpenDaylight software, select the Beryllium-SR4 release available at this link:
https://www.opendaylight.org/downloads
Download the ZIP or the tarball, and once extracted, get into that folder through the command line, and you are ready to play with the recipes.
The recipes in this chapter will present fundamental use cases that one can solve using OpenDaylight.
A common and widely used network emulator, Mininet, is going to be required to perform various recipes within this book.
Prior to any recipe, as a requirement, you will need a running version of Mininet. To achieve this, please follow the steps explained in the Mininet documentation: http://mininet.org/download/
For REST APIs access, user: admin and password: admin.
Connecting OpenFlow switches
OpenFlow is a vendor-neutral, standard communications interface defined to enable the interaction between the control and forwarding channels of an SDN architecture. The OpenFlowPlugin project intends to support implementations of the OpenFlow specification as it evolves. It currently supports OpenFlow versions 1.0 and 1.3.2. In addition, to support the core OpenFlow specification, OpenDaylight Beryllium also includes preliminary support for the table type patterns and OF-CONFIG specifications.
network concept.jpg
The OpenFlow southbound plugin currently provides the following components: Flow management; group management; meter management;and statistics polling
Let's connect an OpenFlow switch to OpenDaylight.
Getting ready
This recipe requires an OpenFlow switch. If you don't have any, you can use a Mininet-VM with OvS installed. You can download Mininet-VM from the following website:
https://github.com/mininet/mininet/wiki/Mininet-VM-Images
Any version should work.
The following recipe will be presented using a Mininet-VM with OvS 2.0.2.
How to do it...
Perform the following steps:
Start the OpenDaylight distribution using the karaf script. Using this script will give you access to the Karaf CLI:
$ ./bin/karaf
Install the user-facing feature responsible for pulling in all dependencies needed to connect an OpenFlow switch:
opendaylight-user@root>feature:install odl-openflowplugin-all
It might take a minute or so to complete the installation.
Connect an OpenFlow switch to OpenDaylight.
As mentioned in the Getting ready section, we will use Mininet-VM as our OpenFlow switch as this VM runs an instance of OpenVSwitch:
Log in to Mininet-VM using:
Username: mininet
Password: mininet
Let's create a bridge:
mininet@mininet-vm:~$ sudo ovs-vsctl add-br br0
Now let's connect OpenDaylight as the controller of br0:
mininet@mininet-vm:~$ sudo ovs-vsctl set-controller br0 tcp: ${CONTROLLER_IP}:6633
Let's look at our topology:
mininet@mininet-vm:~$ sudo ovs-vsctl show 0b8ed0aa-67ac-4405-af13-70249a7e8a96
Bridge "br0"
Controller "tcp: ${CONTROLLER_IP}:6633" is_connected: true
Port "br0" Interface "br0"
type: internal ovs_version: "2.0.2"
${CONTROLLER_IP} is the IP address of the host running OpenDaylight.
We're establishing a TCP connection. For a more secure connection, we could use TLS protocol; however, this will not be included in this book as this is beyond the scope of the book.
Have a look at the created OpenFlow node..
Once the OpenFlow switch is connected, send the following request to get information regarding the switch:
Type: GET
Headers:
Authorization: Basic YWRtaW46YWRtaW4=
URL:
http://localhost:8181/restconf/operational/opendaylight-inve ntory:nodes/
This will list all the nodes under the opendaylight-inventory subtree of MD-SAL that stores OpenFlow switch information. As we connected our first switch, we should have only one node there. It will contain all the information that the OpenFlow switch has, including its tables, its ports, flow statistics, and so on.
How it works...
Once the feature is installed, OpenDaylight is listening to connections on port 6633 and 6640. Setting up the controller on the OpenFlow-capable switch will immediately trigger a callback on OpenDaylight. It will create the communication pipeline between the switch and OpenDaylight so they can communicate in a scalable and non-blocking way.
This tutorial is an excerpt from "OpenDayLight Cookbook" by Mathieu Lemay & Alexis de Talhouet and published by Packt. Use the code ORNCE09 at checkout to get the ebook for just $9 until June 15.
About the Author
You May Also Like