OpenDaylight Integration with OpenStack has merged into Icehouse!

As OpenStack marches towards it’s Icehouse release this spring, some work I’ve been doing has finally merged upstream. This week, both the OpenDaylight ML2 MechanismDriver and devstack support for OpenDaylight merged upstream. This was a huge effort which spans the efforts of many people. This was the first step in solidifying the integration of OpenDaylight with OpenStack Neutron, and we have many additional things we can do. To get a first taste of running the two together, please see the video of the OpenDaylight Summit presentation myself, Madhu Venugopal, and Brent Salisbury did in early February.

Taking OpenDaylight For a Test Run With OpenStack Neutron

Now that the patches have merged upstream, trying this out is extremely simple. If you’re running a single node, you can simple setup the Neutron portion of your local.conf as follows and OpenDaylight will be downloaded and run as a top-level devstack service:

# ODL WITH ML2
Q_PLUGIN=ml2
Q_ML2_PLUGIN_MECHANISM_DRIVERS=opendaylight,logger
enable_service odl-server odl-compute

That’s all that’s required. When you run “stack.sh”, you will see a screen called “odl-server” which will be OpenDaylight. And Neutron will use OpenDaylight to satisfy the requirements of virtual tenant networks.

If you’re trying this with a multi-node setup, you can use the above for your controller. And on your compute nodes, try this addition to local.conf:

enable_service odl-compute

That will configure the host to use Open vSwitch and set it up to point at OpenDaylight. It will also ensure Nova is setup to use Neutron for networking API calls.

Running OpenDaylight Outside of devstack

If you’re running OpenDaylight outside of devstack, you can configure your control node like this:

Q_PLUGIN=ml2
Q_ML2_PLUGIN_MECHANISM_DRIVERS=opendaylight,logger
enable_service odl-compute
ODL_MGR_IP=x.x.x.x

Just replace x.x.x.x in the ODL_MGR_IP line with the IP of your running OpenDaylight instance.

For compute hosts, all you need to add is this:

enable_service odl-compute
ODL_MGR_IP=x.x.x.x

Again, just replace x.x.x.x in the ODL_MGR_IP line with the IP of your running OpenDaylight instance. Your control and compute nodes will now utilize an external OpenDaylight controller.

Additional Configuration Values

There are some additional things you can configure for OpenDaylight. They are:

  • ODL_ARGS: This value can be set to options to pass OpenDaylight. The default is “-XX:MaxPermSize=384m”. An example would be like this:ODL_ARGS=”-Xmx1024m -XX:MaxPermSize=512m”
  • ODL_BOOT_WAIT: This value indicates how long to sleep after starting OpenDaylight before proceeding with the rest of devstack. The default value is 60 seconds. An example is like this:
    ODL_BOOT_WAIT=70

The Future of Open Source SDN

OpenDaylight is progressing at a very fast pace. The current release being worked on (Helium) is going to stabilize and scale the platform even more. With features like Group Policy being added, the future looks increasingly awesome for OpenDaylight. And now you can use it to scale your Neutron networks as well. How cool is that?

28 Responses to OpenDaylight Integration with OpenStack has merged into Icehouse!

  1. Hi Kyle,

    I have a question regarding the VTN module of ODL controller. Can this module be integrated and used from openstack frontend? If yes please share the details. My perspective is that I create the network using openstack after integrating it with ODL and then create the VTN through Openstack which will get integrated with the ODL VTN service.

    Looking for a response.

  2. Hey Kyle,

    I just got all of this to work (on RHEL 6.5), but only after adding a [ml2_odl] section with the ODL url, username, and password in the ml2 config file (/etc/neutron/plugins/ml2/ml2_conf.ini)… That’s because devstack failed to start Neutron without it, and I saw a complaint about a “missing ml2_odl).
    I wrote it manually in the devstack ml2 plugin file since I’m not sure if it would be doable through the local.conf.

    Is this a missing piece, or did I do something wrong that prevented this piece to be applied?

  3. Hey Kyle,

    Great article! Very helpful for those of us who are trying to integrate OpenDaylight with Neutron.

    Is there any chance that this integration would be possible using RDO, or even RHEL’s OSP? I’d definitely be interested in having the integration done in the latter… If no one has done it before, could you point me in the right direction to do it myself?

    Many thanks.

    • Hi Nabil:

      Your best bet for this is to check in #opendaylight-ovsdb on Freenode. I believe Red Hat had some folks working on adding ODL support into RDO.

      Thanks!
      Kyle

  4. Hi Kyle,

    First of all, many thanks for all the good work you’ve done for the integrating of ODL with OpenStack Neutron.

    I’m trying to follow your instructions with a single node (see my local.conf [1]) but I’m facing a couple of issues:
    1/ nobody takes care of creating br-int so when I try to boot a VM, the Nova compute service fails to spawn the instance because br-int is missing.
    2/ if I create br-int manually before running stack.sh then it fails again because Nova compute doesn’t receive the “network-vif-plugged” event from Neutron.

    Do you have any clue of what I’m missing?

    Thanks for your help!

    Simon

    [1] http://paste.openstack.org/show/74740/

    • Hi Simon:

      Are you running OpenDaylight outside of Neutron? Otherwise, you need to also enable the odl-compute and/or odl-server services in your local.conf like this:

      enable_service odl-server odl-compute

      Give that a shot and it should create the bridges you need.

      Kyle

  5. Pingback: Dell Open Source Ecosystem Digest #38 (englischsprachig) - TechCenter - Blog - TechCenter - Dell Community

  6. Pingback: Dell Open Source Ecosystem Digest #38 - Dell TechCenter - TechCenter - Dell Community

  7. I followed this blog. Now I am able to integrate ODL with Devstack and in single node setup, stack.sh was completed properly without any errors. Created networks using Neutron.

    I made sure both ODL (server, compute) and Openstack were running properly. However, I am unable to launch any VM and the error I am getting is “Host not available”.

    Any pointers please.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>