Chapter 5
Development Environment
5.1 Introduction
The domain of the project being networking required us to work on a SDN
enabled physical environment with support for the OpenFlow protocol. But in
absence of the aforementioned environment, we shifted our focus to the use of
software simulation and emulation tools. Which enabled us to analyse network
models and understand OpenFlow protocol functioning by creating the desired
networks virtually.
5.2 The Network Controller
5.2.1 Need for A Controller
An OpenFlow controller is an application that manages flow control in a SDN
environment. Most current
SDN controllers are based on the
OpenFlow protocol. The SDN controller serves as a sort of operating system
(OS) for the network. All communications between applications and devices
have to go through the controller. The OpenFlow protocol connects controller
software to network devices so that the server software can tell switches where
to send packets.
5.2.2 Choice of Controller
With increase in adoption of SDN networks the variety of controller software
available for use is quite diverse.
Various controller software available today are
Floodlight
Open Daylight
NOX
POX
Out of the available software we decided to use Open Daylight as our controller
software due to the availability of SDNi interface app. Which enables us to get
topology information in multi-controller environments. Thereby making Open
Daylight an obvious choice for our domain of work.
5.2.3 Open Daylight
Hosted by the Linux Foundation, Open Daylight Project (ODL) is an open
source SDN project aimed at enhancing software-defined networking (SDN) by
offering a community-led and industry-supported framework for the Open
Daylight Controller. It includes support for the OpenFlow protocol, but can also
support other open SDN standards. The Open Daylight Controller can be
deployed in a variety of network environments. It can support a modular
controller framework, but can provide support for other SDN standards and
upcoming protocols. The modular frame work allows the controller to be open
to change dynamically wherein services can be deployed and removed from the
network at runtime, without affecting the basic network connectivity.
The Open Daylight Controller exposes open northbound APIs, which are used
by applications. These applications use the Controller to collect information
about the network, run algorithms to conduct analytics, and then use the Open
Daylight Controller to create new rules throughout the network. The Open
Daylight Controller is implemented solely in software, and is kept within its
own Java Virtual Machine (JVM). This means it can be deployed on hardware
and operating system platforms that support Java.
5.2.4 Controller Usage
The controller can be downloaded as a zip file from the following URL:
https://www.opendaylight.org/downloads
The directory structure of the controller is contained within a folder
named distribution.
The controller needs no installation on the system and can be run
independently.
To run the controller, go to directory /target/assembly/bin and execute the
file named karaf.
5.3 The Network Emulator
5.3.1 What is Network Emulation
Network emulation is a technique for testing the performance of real
applications over a virtual network. This is different from network
simulation where purely mathematical models of traffic, network models,
channels and protocols are applied. The aim is to assess performance, predict
the impact of change, or otherwise optimize technology decision-making.
5.3.2 Need for Emulation
The domain of our project required considerable testing and analysis of network
parameters which required either the presence of a physical network with
support for OpenFlow or an emulation environment which could provide us
with a virtual platform for fulfilment of our analysis needs. Thereby making
emulation necessary.
5.3.3 Mininet
Mininet is a software emulator for prototyping a large network on a single
machine. Mininet can be used to quickly create a realistic virtual network
running actual kernel, switch and software application code on a personal
computer. Mininet allows the user to quickly create, interact with, customize
and share a software-defined network (SDN) prototype to simulate a network
topology that uses OpenFlow switches.
Provides a simple and inexpensive network testbed for developing
OpenFlow applications
Enables multiple concurrent developers to work independently on the
same topology
Supports system-level regression tests, which are repeatable and easily
packaged
Enables complex topology testing, without the need to wire up a physical
network
Includes a CLI that is topology-aware and OpenFlow-aware, for
debugging or running network-wide tests
5.3.4 The CPqD Switch
OpenFlow has brought the opportunity to perform a wide range of new
experiments in a network. Currently there is a good number of hardware
switches to try OpenFlow, but most of them still implements only the version
1.0 of the protocol, lacking the new features from the most recent versions. So,
in order to not have innovation dependent of hardware software switches are
being deployed since the most primitive OpenFlow versions. The OpenFlow 1.3
software switch is built upon the Stanford OpenFlow 1.0 reference
switch and Ericsson's Traffic Lab OpenFlow 1.1 switch and is intended for fast
experimentation purposes.
The following components are available in it:
Ofdatapath: the switch implementation
Oflib: a library for converting to/from 1.3 wire format
Dpctl: a tool for configuring the switch from the console
We used the CPqD switch for the support it provides for OpenFlow 1.3 protocol
and in particular for supporting insertion of meters into the switches for
limiting bandwidth.
5.3.5 Environment Setup
Mininet is available as
http://mininet.org/download/
virtual
machine
from
the
URL
The provided virtual image needs to be imported into any hypervisor
software, which in our case was virtual box.
In order for the host to communicate with Mininet we need to setup a
host only network which acts as a dedicated interface for host , Mininet
communication on virtual box.
In order to setup the host only network on Mininet run command: sudo
dhclient ethx . where x is the host only interface number.
To install CPqD switches into Mininet we referred to the URL
https://github.com/CPqD/ofsoftswitch13/wiki