-
Notifications
You must be signed in to change notification settings - Fork 0
Home
We support currently controller handlers for the following versions of OpenDaylight
- OpenDaylight Boron SR2 controller
- OpenDaylight Boron controller
- OpenDaylight Beryllium SR3 controller
- OpenDaylight Beryllium controller
- OpenDaylight Lithium SR3 controller
- OpenDaylight Lithium SR2 controller
- OpenDaylight Lithium SR1 controller
- OpenDaylight Helium SR3 controller
However in the
For testing the aforementioned handlers, a container based testing environment
can either be downloaded directly from dockerhub or built from the tools
available at the /deploy
folder
- essential tool: docker (v.1.12.1 or later) should be installed on your host machine
- Give non-root access to docker daemon
- Add the docker group if it doesn't already exist sudo groupadd docker
- Add the connected user "${USER}" to the docker group. Change the user name to match your preferred user
sudo gpasswd -a ${USER} docker
- Restart the Docker daemon:
sudo service docker restart
docker pull intracom/nstat-sdn-controllers
For running a container once the intracom/nstat-sdn-controllers
is locally
available
docker run -it intracom/nstat-sdn-controllers /bin/bash
password: root123
then make a git clone of the nstat-sdn-controllers repository within the container
git clone -b master https://github.com/intracom-telecom-sdn/nstat-sdn-controllers.git
and start testing all available controller handlers under /controllers
directory
Currently the supported controller is OpenDaylight. There is a common API in the controller handling logic, followed by all versions of this controller. Next, we describe this common API logic for the controller handlers.
-
change_persistence.py
:- expected behaviour: handler disabling the persistence mode in the configuration
of the controller. Changes the persistence attribute to false which is
present at the
org.opendaylight.controller.cluster.datastore.cfg
of OpenDaylight. In this case the controller will not backup datastore on the disk - prereqs: should be executable
- input arguments: none
- exit status:
0
in case of success,1
otherwise - usage example:
- expected behaviour: handler disabling the persistence mode in the configuration
of the controller. Changes the persistence attribute to false which is
present at the
-
change_stats_period.py:
- expected behaviour: changes controller statistics interval
- prereqs: should be executable
- input arguments: statistic period (in ms)
- exit status: not checked
- usage example:
-
change_stats_period.py:
- expected behaviour: configures OpenDaylight controller for flow
modifications. It currently changes controller configuration files in order to
achieve mac-to-mac flow installation for Packet_INs with ARP payload.
-
<controller base dir>/etc/opendaylight/karaf/54-arphandler.xml
: changes the value of keyis-proactive-flood-mode
fromtrue
tofalse
. -
<controller base dir>/etc/opendaylight/karaf/58-l2switchmain.xml
: changes the values of keysreactive-flow-idle-timeout
andreactive-flow-hard-timeout
to 1.
-
- prereqs: should be executable
- input arguments: no input arguments required
- exit status: not checked
- usage example:
- expected behaviour: configures OpenDaylight controller for flow
modifications. It currently changes controller configuration files in order to
achieve mac-to-mac flow installation for Packet_INs with ARP payload.
-
get_controller.sh:
- expected behaviour: gets the pre-built version of the OpenDaylight controller.
- prereqs: should be executable
- input arguments: none
- exit status:
0
in case of success,non-zero
otherwise - usage example:
-
get_flows.py:
- expected behaviour: returns the number of installed flows of a topology, connected to the controller. This information is extracted from the controller's operational datastore, using RESTCONF.
- prereqs: should be executable
- input arguments: controller IP address in form, controller restconf port number in form, username for restconf authorization in form password for restconf authorization in form
- exit status:
- usage example:
-
get_hosts.py:
- expected behaviour:
- prereqs:
- input arguments:
- exit status:
- usage example:
-
get_links.py:
- expected behaviour:
- prereqs:
- input arguments:
- exit status:
- usage example:
-
get_switches.py:
- expected behaviour:
- prereqs:
- input arguments:
- exit status:
- usage example:
-
start.sh:
- expected behaviour: starts the controller so that a switch can connect to it
- prereqs: should be executable
- input arguments: none
- exit status:
0
in case of success,non-zero
otherwise - usage example:
-
status.sh:
- expected behaviour: queries the controller status
- prereqs: should be executable
- input arguments: none
- output:
1
if controller is running,0
otherwise - exit status: not checked
- usage example:
-
stop.sh:
- expected behaviour: stops the controller so that no switch can connect to it
- prereqs: should be executable
- input arguments: none
- exit status:
0
in case of success,non-zero
otherwise - usage example:
Controller handlers can be directly executed on your local machine provided
that necessary tools/libraries prerequisite within the *.sh
, *.py
handler files are properly installed. However. for keeping your local machine
clean, a container based testing environment is provided or can be built as
desrcibed below.