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:

enable_service odl-server odl-compute

That’s all that’s required. When you run “”, 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:

enable_service odl-compute

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

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:

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?

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

  1. Pingback: OpenDaylight and OpenStack: Now With Helium! | Silicon Loons

  2. Hi Kyle,

    Thanks for sharing your expertise on integrating ODL with OpenStack.

    Mine is working fine when followed your steps, but I bit confused on the router (br-ex) do I need to add more NIC or more network adapter on separate NAT? (referring to VBox) As currently it has two, which will recreate the br-ex after running the devstack. When I put the PUBLIC_NETWORK_GATEWAY to my existing gateway(IP), it will not continue run the script.

    Hope you can enlighten my confusion.

  3. I have installed Openstack Icehouse(Branch:stable/icehouse) and integrated the same with ODL, both are running on a same machine.
    Neutron calls for Networks,Subnets and ports[create and update] are reaching to ODL and are working fine.
    But delete calls for the same are not reaching to ODL neutron interface.

    While trying to debug this, I have found out the following errors in screen-q-svc.log .

    2014-08-05 12:27:31.436 DEBUG neutron.plugins.ml2.drivers.mechanism_odl [req-f934a1c3-abef-4192-a83b-88fbd2f42ac1 admin eed33e647e58471293887ce335dfb76a] Networks not found (7e547f40-4315-4905-b032-9c2e2d508363) from (pid=24155) sync_single_resource /opt/stack/neutron/neutron/plugins/ml2/drivers/

    It seems it is not able to get the network from ODL. I verified the sameby getting the same network using the ODL Rest and the same is available there.

    Attacing the log file for your refrence.
    Can anyone give me any clue what is causing this issue.


  4. 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.

  5. 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?

  6. 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.


  7. 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 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!



    • 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.


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

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

  10. I followed this blog. Now I am able to integrate ODL with Devstack and in single node setup, 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>