All posts by Sreenivas Makam

Cloud Computing

Cloud Computing is the most talked about buzzword today. Though there is a deluge of information available in Cloud computing everywhere, I found it difficult to pick the practical and relevant information I need. Following are some topics that I will explore in the next series of blogs(not in the same order). I am not an expert in any of these topics, I am writing this blog as I am learning more on each of these topics.

  • Types of Cloud
  • Cloud service categories
  • Cloud provider comparison
  • Cloud hardware architecture
  • Cloud OS comparison
  • AWS Services overview – Getting started with AWS
  • PaaS – Why startups love it?
  • How to build Cloud application?
  • Openstack – Getting started with Openstack
  • Hybrid clouds and migrating between Clouds
  • Cloud management software
  • Network Virtualization

Continue reading Cloud Computing

Openflow history and some hands-on

In this blog, I will cover the evolution of Openflow(from 1.0-1.4). Also, I will cover the hands-on stuff that I tried with Openflow.

Openflow is a protocol by which we can control a Switch’s data plane with the Switch exposing flow tables as mentioned in Openflow protocol. Flow tables provide an abstraction and It is not necessary to expose internals of the switch.

Continue reading Openflow history and some hands-on

Virtualbox and VM management

In 1 of the previous posts, I had indicated that its difficult to resize the VM hard disk that was created during VM creation. My friend pointed me to few links on how to do this. It turned out be pretty straightforward.

Also, I learnt that when we try different applications and different configurations in the VM, its very easy for the VM OS to be screwed up and it is necessary to either take snapshots, backups, clones and restore them to be on the safe side.

In this blog, I will try to cover some of the common tasks that we would need from VM management perspective like VM backup and restore, resizing VM hard disk. I will say this in the context of Virtualbox, lot of these would apply to other VM hosting software like VMware player, etc. Also, I will cover some things that I have learnt in Virtual box along the way..

Continue reading Virtualbox and VM management

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