Tag Archives: Opendaylight

Openvswitch and ovsdb

In this blog, I will provide an overview of ovsdb, this is mainly a collection of information from various locations.

Openvswitch is a virtual switch targeted for virtualized environments to switch traffic between VMs.  Its integrated into the latest Linux kernel.

Following are the critical components of Openvswitch.

  • ovs-vswitchd, a daemon that implements the switch, along with a companion Linux kernel module for flow-based switching. We can talk to ovs-switchd using Openflow protocol.
  • ovsdb-server, a lightweight database server that ovs-vswitchd queries to obtain its configuration. External clients can talk to ovsdb-server using ovsdb management protocol.
  • control and management cluster contains client tools to talk to ovsdb-server and ovs-vswitchd.

Continue reading Openvswitch and ovsdb

Policy based forwarding application

In this blog, I will cover a policy based forwarding application that I wrote in Python.

Use case:

There are many scenarios where regular routing decisions do not suffice and customers want more fine grained control over paths their traffic takes. This could be because of security reasons, better link utilization, vpn concerns etc. Following scenarios are covered in the application.

  • Traffic type(Either cos based or L4 based)
  • Time of the day
  • Bandwidth based

Continue reading Policy based forwarding application

MuxDemux ODL application

Here, I will cover a simple ODL application that does multiplexing and demultiplexing of packet based on incoming vlan.

Use case for the application:

Test generator ports are always a premium because of the high cost associated with it. In our lab, we connect test generator to a switch and the switch is connected to all DUT. The advantage with this scheme is we can use low speed testgen ports(1G test ports are lot cheaper than 10G, 40G) and there is less need for recabling. There is a need to reprogram the switch based on which DUT we need the testgen port to be connected to and this application is a first step towards automating that process.

Continue reading MuxDemux ODL application

Python REST Library for Opendaylight

In this blog, I will cover Python REST library that I wrote to simplify writing Python ODL applications.

In an earlier blog, I had indicated that the primary programming language choice for ODL applications is either Java or Python.

Following is my experience in Python programming with Opendaylight.

  • Python programming model for ODL is using REST api to talk to Controller, so control is limited to what REST api provides. There are few things that are not possible(or atleast I have not figured out) like sending/receiving packets from the Controller, getting asynchronous event based callback to Python.
  • REST api returns data either in xml or json format. Python has in-built json parser that makes it very easy to manipulate data coming back from the controller.
  • Python has a lot of standard libraries so there is a lot of code reuse.
  • There is plenty of documentation and tutorials in the web for Python, so learning Python is straightforward. For folks familiar with C, Perl or any scripting language, learning Python should be straightforward. Python supports object-oriented programming though I have not used it.

Continue reading Python REST Library for Opendaylight

Programming with Opendaylight

In this blog, I will cover internals of programming with Opendaylight.

Opendaylight is mainly written in Java. OSGI framework is used that allows for bundles to be dynamically loaded and unloaded.

Following are the different layers of software from the lowest layer

  • Plugins – Like openflow, ovsdb.
  • SAL layer – Abstracts core modules from plugins
  • Core modules – like Topology manager, switchmanager, hosttracker, statistics manager etc.
  • Northbound interfaces – These expose REST api for applications to hook on.
  • Web front-end uses Spring MVC framework and java script.

Continue reading Programming with Opendaylight

Getting started with Opendaylight

Opendaylight is a opensource SDN controller project. In this blog, I will try to cover the steps to get started with Opendaylight. The steps indicated below are the ones that I followed, obviously there will be other ways of doing the same.

My system:

  • I have a Lenovo W520 system with Windows 7 Enterprise edition installed.
  • My system has 12GB memory. I started off with 4GB memory and I realized that my system started becoming too slow when I have 1 or 2 VMs running along with some desktop applications. After I added 8GB memory, I did not have any issues.
  • Its better to have atleast 32GB of harddisk space free. As you start trying out different things, hard disk space becomes critical…

Continue reading Getting started with Opendaylight