Commit Graph

50 Commits (72c7a90b55a3d233b32f133fcaf631a076e76e04)

Author SHA1 Message Date
Daniel Alvarez ad1fea3e7b Metadata agent support in networking-ovn
Initial implementation

Changes in the mechanism driver:

    * Automatically create a port with device_owner=network:dhcp to
      serve metadata and eventually DHCP.
    * Auto-allocate an IP for the metadata port on subnet creation.
    * Push static route for in DHCP options.
    * Wait until metadata service is provisioned in the chassis where
      a port resides before sending the event to Nova.


    * Implementation of [0].

Devstack plugin:

    * Starts networking-ovn-agent with the proper config files.
    * Disables config drive in nova.conf for tempest against master
    * Enables TEMPEST_RUN_VALIDATION for tempest against master branch.

In order to test this patch out we need to make these changes to

    * [DEFAULT] section:
      force_config_drive = False
    * [neutron] section:
      service_metadata_proxy = True

This patch depends on [1] and [2] (already merged into OVS master).
NOTE: Metadata tests are only enabled for the non-voting tempest job
      which runs against OVS master branch. The release job runs against
      OVS 2.7 which doesn't include [1][2] so those tests are disabled
      until OVS 2.8 is released.


Change-Id: Ife2fd18f2f88050429e70c7e557fa41d2d54b034
6 years ago
Jenkins 0e6e96f1f9 Merge "Fix bug of trunk plugin loading" 6 years ago
Lucas Alvares Gomes bb191fcde9 DevStack local.conf.sample: Disable Cinder and reference Horizon
Cinder is not needed for testing we can disable it to speed up the
DevStack setup a bit.

This patch keeps Horizon enabled but add a note about disabling it if
the user doesn't want to use it.

Change-Id: I6ead17a0e964447aa911e8ea0b83c7e6ae02a10b
6 years ago
Dong Jun dded3a0be9 Fix bug of trunk plugin loading
IncompatibleTrunkPluginConfiguration: Cannot load trunk plugin: no
compatible core plugin configuration is found.

Change-Id: I44c8a527f3291297ba1c125f79a1946669869ee2
Closes-Bug: #1686433
6 years ago
Jenkins a10075421c Merge "Remove DHCP and L3 agent remnants." 6 years ago
Daniel Mellado b7c7ee6b7b Enhance local.conf.sample documentation
This commits further explains why discover_hosts_in_cells_interval
setting is needed in the nova postconf on the sample devstack local.conf

Change-Id: Ifb4504dea2cf4c76f07789da2d0a31029246a945
6 years ago
Russell Bryant ac226200ab Remove DHCP and L3 agent remnants.
Both the L3 and DHCP agents are no longer supported.  Remove many more
remnants from when they were supported.

Change-Id: If71489f9ac56c7c26746d0fbfb4640e570591f26
Signed-off-by: Russell Bryant <>
6 years ago
Han Zhou 77edbc1dab Update local.conf.sample to enable automatic host discovery for cell
Cell is enabled by default since Ocata. Because of the change, when
a new compute node is added the host needs to be discovered by the
cell. Otherwise, there will be nova scheduler error when booting a
vm: host xxx is not mapped to any cell. Discovery can be done either
manually or by enabling automatic discovery. This patch is to enable
the automatic discovery, to avoid unexpected error when following the
steps in [1].


Change-Id: I1719fc8e3d0a0e6b5a003a73087886df18fc08ea
6 years ago
zhangyanxian 1aedd827c4 Optimize the link address for fetching git code
Use https instead of http to ensure the safety without containing our
account/password information

Change-Id: I1f6b32a5323571f584efd194e0bd404bd6758af5
6 years ago
Russell Bryant f394b5494e local.conf.sample: Disable q-meta.
We do not use the neutron metadata service, so disable it in the sample
devstack configuration file.

Change-Id: I2463b0b11afd33b5d299cc106bd527d12b967e83
Signed-off-by: Russell Bryant <>
6 years ago
Russell Bryant 92952f0165 Clarify that native L3 is always used.
Remove all remaining remnants of L3 agent support.

Change-Id: Ia9e97837e6eb1a23435f2def74060032ce0e5409
Closes-bug: 1626717
Signed-off-by: Russell Bryant <>
6 years ago
Dong Jun 06890430ce Support distributed NAT in networking-ovn native L3 routing
This is a patch for supporting distributed NAT with centralized NAT rules
in networking-ovn native L3 routing.

Remove transit network
Support scheduling gateway port by setting redirect-chassis
Support gateway sNAT
Support gateway default route
Support floating IP
Support full sync including sNAT, gateway route and floating IP

Unit tests of syncing sNAT and FIP
Gratuitous ARP for sNAT and FIP

Closes-Bug: #1658622
Change-Id: I217d6c391140fa4392ae1cea0bc21c9ea0521796
Signed-off-by: Dong Jun <>
Co-authored-by: Guoshuai Li <>
6 years ago
Dong Jun 5fefcf0b45 Remove redundant comment in local.conf.sample
Remove redundant comment "For multi-node deployments, the controller node."

Change-Id: Idb0578738e770c389f0bc809da0f2685f1686501
Signed-off-by: Dong Jun <>
7 years ago
da52700 3bb9426031 Fix typo in devstack/local.conf.sample
Fix typo in devstack/local.conf.sample

Change-Id: Ifd10ed46abebe02a8caa561c98ee86939580eb23
7 years ago
Chandra S Vejendla b40f1dda47 NAT support (SNAT, FloatingIP)
This commit introduces the NAT support for networking-ovn. The proposal for
NAT support can be found @ [1]

1. Add functional test cases (To be followed up in a different patch)
2. Add sync code (Opened a bug to track this)
3. Add unit tests for the new ovsdb APIs (Opened a bug to track this)


Change-Id: I9b78ceb6b42e96c1ba58ed269e369b46113edd7e
Closes-Bug: 1514995
Closes-Bug: 1551717
7 years ago
Richard Theis 2ed6da5aa8 Deployment fixes for DHCP and metadata support
OVN native L3 and DHCP don't provide metadata support so config drive
must be used when both are enabled. However, if the conventional DHCP
agent is enabled it can be configured to provide metadata support.

This patch set provides the necessary DevStack and Vagrant deployment
fixes to properly configure DHCP and metadata support. In addition,
documentation and release notes have been updated accordingly. And
finally, the q-meta service was removed from devstackgatekuryrrc,
since the gate job is setup for OVN native services.

Co-Authored-By: Matt Kassawara <>
Change-Id: I9f6b23247df01c40c127b0e9daecd12f5721ff50
Related-Bug: #1514488
7 years ago
Numan Siddique f4ab65d384 Support native OVN DHCPv4
OVN has added a new DHC_Options table in OVN NB DB to define
DHCP options. Logical Switch ports refer to this table if
DHCP is to be enabled.

This patch creates rows for DHCP_Options for each of the
subnets and adds the reference to the ports when created.

If extra DHCP options are defined for a port, a new
DHCP_Options row is created for the port.

Change-Id: Ia3e229f86bf66f5b9b0d867ff41f56ed4be2e8f4
Closes-bug: #1514488
7 years ago
Amitabha Biswas 2030c299df Add OVN L3 Router Scheduler
This patch provides the infrastructure for the OVN L3 to schedule
the router gateway port. The OVN hypervisor administrator can
set aside certain hypervisors to be used for scheduling router
gateway ports. This is the corresponding WIP patch at the moment:

For now it is assumed that any hypervisor/chassis can host a router
gateway port.

There are 2 types of schedulers defined at the moment
(1) RandomChoice
(2) LeastLoaded

The Chassis (add/delete/update) event is used to schedule router
gateway ports which have not been bound to any chassis.

A future patch will add functional tests.

Change-Id: I83fb561cee642b90c4de41bb8e472f47fa807191
Related-Bug: 1514995
7 years ago
Jenkins c230897698 Merge "Remove 'origin/' in OVN_BRANCH" 7 years ago
chen-li 57a9538db2 Remove 'origin/' in OVN_BRANCH
When use origin/master, if we re-installed the
devstack with a RECLONE=True, an error will happen
with the error message:
  [ERROR] /opt/stack/devstack/functions-common:560 origin/master is neither branch nor tag

Use the branch name without 'origin/' works the same.

Change-Id: I89008b92e0ec355c36c7ae969e3cb97cd0517d97
7 years ago
Ryan Moats 22f1a4370f Make provider networking devstack examples work
The devstack/*.local.conf.sample files included example
blocks for enabling provider networks.  Update these
blocks to ensure that devstack "just works" when
provider networks are used.

Side-effect: Moved post-configuration blocks to the
end of the files so that they will also "just work"
when uncommented.

Note: the db-local.conf.sample file has not been updated

Change-Id: I5c3e51cd94a5848f8fb917d75ec49eac8dfdc35f
Signed-off-by: Ryan Moats <>
7 years ago
Richard Theis d6c544c449 Convert core plugin to ML2 mechanism driver
This patch set converts networking-ovn from a core
plugin to an ML2 mechanism driver.

This patch set completes the following conversion work:
- DevStack and Vagrant deployment updates for ML2
- Documentation and release note updates for ML2
- Removes core plugin code and refactors remaining code
  over to ML2 mechanism driver

The conversion work remains:
- Resolve the ML2 unit test TODOs
- Resolve concerns about ML2 mechanism driver _ovn
  property raised in [1].


Co-Authored-By: Richard Theis <>
Co-Authored-By: John Kasperski <>

Change-Id: Iffa596baa5c7520c1ca5ecddaab790c52e761460
Closes-Bug: #1578198
Closes-Bug: #1550278
7 years ago
John Kasperski e508ea2d2e Add QoS support to ML2 driver
Add QoS support to the OVN ML2 mechanism driver.  Since OVN does not
have an neutron L2 agent, the Qos agent extension driver framework can
not be used.

All of the QoS logic has been moved out of the mechanism driver and into
a separate module to make it easier to maintain.

 - Create port with qos policy
 - Update port with qos policy
 - Update network with qos policy
 - Update qos policy
 - Unit tests

Change-Id: I888d86f00a53ba6d204905fe69cbae7bc1d3f9da
Partial-Bug: #1578198
7 years ago
Aaron Rosen 87c01e5fde Add comment on local.conf.sample on how to enable ml2 plugin
Change-Id: I45245d5a2213d6f5c5c591a278391016101c96c3
7 years ago
Russell Bryant d1892952e3 devstack: Tweak sample config.
The commented out value for OVN_BUILD_MODULES should be False.  The
default is True.  With this change, you only have to uncomment this line
to disable building the ovs kernel module.

Change-Id: I97c2382466d1d9fe8deb89c41c58e04271510fa2
Signed-off-by: Russell Bryant <>
7 years ago
Russell Bryant 6ccc3f8e48 devstack: Enable skydive-agent in local.conf.sample.
local.conf.sample is setup to be both a controller and compute host.  We
should run both skydive-analyzer and skydive-agent.

Change-Id: I8bf1093fd494f784baa487f4982339b832a5b732
Signed-off-by: Russell Bryant <>
7 years ago
Li, Chen 253ac1dc8c Add Provider Network enabling for devstack
This change allow users to enable provider network when they use devstack.
A provider network will be created instead of the default private network.
In a multi node set up, user still need to add the physical interface to
provider bridge by hand.

Change-Id: I74bc673e99fcc18fa2ecdf903d80cb1b6e57250a
7 years ago
Kyle Mestery f46f8ed1de devstack: Add Skydive for OVN devstack
Skydive [1] is a network topology and protocol analyzer which aims
to enable easier debugging and visibility into OVS and OVN networks.
Skydive is disabled by default.

We can merge this now since it's disabled by default, but for
Skydive to work with multi-node devstack, we need the patches
in this [2] series to merge into the Skydive repository.


Change-Id: Ifebb74a33413518cadf392644aed1d62a6a87b13
7 years ago
RYAN D. MOATS 35398d6ee8 Handle OVN NB and SB databases with separate ovsdb-server procs
To help with scale issues, default devstack to use ovn-ctl to
spawn separate ovsdb-server processes for the ovn databases and
to spawn ovn-northd.  As a side effect, there will be three
ovsdb-server processes running on an AIO node (the third process
serves the openvswitch configuration db)

Closes-Bug: 1542005

Change-Id: Iaa04cbe0dcf9661c9ee23f4f94e3db795b08c167
Signed-off-by: RYAN D. MOATS <>
7 years ago
Richard Theis 92e637cd4e Network availability zone deployment support
Add network availability support for DHCP agents to the devstack and
vagrant deployments. By default, all DHCP agents will use the default
availability zone (nova) with the ability to customize the availability
zone name.

Change-Id: I43f50473d9deae99fbdf7aa61676caa4c3d10687
Related-Bug: #1539274
7 years ago
Gal Sagie b8dee8f126 Change OVN_L3_MODE default to True
Depends-On: 3c1657eca450d82eadcb545c535047c58cf3744c
Change-Id: Ief00cbefaec4fc531994da362120cc25a88d172b
7 years ago
Jenkins 7598e2cf54 Merge "Devstack: Improve DHCP and metadata agents" 7 years ago
Matthew Kassawara a22e4b0580 Devstack: Improve DHCP and metadata agents
Improve the deployment of DHCP and metadata agents:

1) Add an option with documentation to enable the DHCP and
   metadata agents on compute node(s) for multi-node
2) Add documentation to controller/single-node
   configuration in regards to disabling the DHCP and
   metadata agents for multi-node deployments.
3) Enable the DHCP agent to provide a route for metadata
   to instances.

Change-Id: Ib99b42adb19a92b9af9c685fb2d8f6f0f9fd8315
7 years ago
venkatamahesh 011dd5c792 Use uppercase 'S' in word "OpenStack"
Change-Id: Ide67c059134118df6714f5f9e45532da0d6b183f
7 years ago
Richard Theis 316d42360f Update DevStack testing documentation
Update DevStack testing documentation for the following:
  -- OVN distributed L3 support enabled by default in local.conf
  -- New cirros image names
  -- Minor typos

Change-Id: Ic165678a9e2e611e8c511a67794b49cc39cc0a53
7 years ago
Kyle Mestery 3aba78e52d Vagrant: Completely redo the Vagrant configuration
This is a fundamental change to the networking-ovn Vagrant configuration.
It does the following:

* Adds another Vagrant node to run ovn-northd and the central OVN DBs.
* Add swap space to each Vagrant node.
* Provisions another host only interface on each Vagrant node and sets
  up a provider network to make use of this.
* Sets promiscuous mode on the third NIC of each Vagrant box. This is
  required to get provider networks working.
* Configures devstack on each node to set OVN_REMOTE to the IP address
  of the ovn-db node.

In addition, it makes some changes to OVN devstack:

* Enables OVN_L3 mode by default.
* Bumps the max FDs that ovs-vswitchd can have open to 32000.

This change allows for the succesful running of OVN tests found here [1],
which create 2400 networks, 2400 subnets, 4800 ports, and 1200 routers.


Change-Id: I787b387f4b23ad7311be02917d6875d3b9a9ff3a
Signed-off-by: Kyle Mestery <>
7 years ago
Russell Bryant 60c46efe8c devstack: Add config for building ovs modules.
We load custom ovs modules to make sure we have ovs+conntrack support.
That support was first available in the upstream kernel in version 4.3.
Add a config option that lets you skip building custom modules and just
use the one included with the kernel.

Change-Id: I05cde6f43303324505fb533e42a3cf3212aa0893
Signed-off-by: Russell Bryant <>
8 years ago
Russell Bryant 52add072e6 Note that you should disable q-l3 with OVN_L3_MODE.
Add a note to devstack/local.conf.sample that you should disable q-l3 if
you enable OVN_L3_MODE.  Also make the devstack plugin fail if q-l3 is
enabled with OVN_L3_MODE set to True.

Change-Id: I60d9e9415e193924b5a258268eda84bc7e461dc2
Signed-off-by: Russell Bryant <>
8 years ago
Chandra S Vejendla 35746b4189 Add/delete router interfaces
This patch set adds support for add/delete router interfaces.
Adding router port involves:
    - Create row in logical_router_port table
    - Update the ports in logical_router table with the
    logical_router_port added above
    - Update the options column in logical_port table with
    {router-port: "UUID of logical_router_port"}
    - set the type column in the logical_port table to "router"

Deleting router ports:
    - Look for port_id if port_id not present in incoming request
    - Delete the router port from the logical_router table
    The logical_router_port entry will be garbage collected

Added a config variable OVN_L3_MODE which when set to false,
will default to using q-l3 instead of OVN L3. This is a temporary fix
until we resolve OVN l3 issues.

Closes-Bug: #1514649
Change-Id: I6fd9ac4ab04be14796422087d3ff716cd4d81e55
Co-Authored-By: Gal Sagie <>
Co-Authored-By: Amitabha Biswas <>
8 years ago
Russell Bryant 6b5a7004a3 devstack: Remove API_WORKERS from local.conf.sample
Our devstack plugin sets this config option automatically, so we don't
need to include in local.conf.sample anymore.

Change-Id: Ie7da945927eba74d2fc99a16b2768bcaad567ced
Signed-off-by: Russell Bryant <>
8 years ago
Russell Bryant acd80e4e9f Don't set MYSQL_DRIVER in local.conf.sample.
local.conf.sample set MYSQL_DRIVER=MySQL-python to match what was
being done in OpenStack CI for Neutron.  This is no longer the case as
the related issues in Neutron have mostly been solved.

OpenStack CI for OVN was already running on the new MYSQL_DRIVER
default, but this change will make local runs of devstack use the new
default, too.

Change-Id: Ie3ac5f0e8e23559884bef7bb234448b1bca2515e
Signed-off-by: Russell Bryant <>
8 years ago
Russell Bryant f043730c82 Set MYSQL_DRIVER=MySQL-python in local.conf.sample
Set MYSQL_DRIVER to make local devstack config match what's used in
OpenStack CI.

Change-Id: I0c61c82f472bf0955c047a15184308db6d4cf41e
Signed-off-by: Russell Bryant <>
8 years ago
Russell Bryant 5ba37b4b6c Set API_WORKERS=0 in local.conf.sample
Change-Id: Iae25da68efa300faaf679abf318a9ed025bb09b3
Signed-off-by: Russell Bryant <>
8 years ago
Russell Bryant 102b8537f3 Updates to reflect move from stackforge to openstack
The move has been completed, so update all stackforge references to

Change-Id: I47854615fd9762783bb60da36582d02d8bad609e
8 years ago
Russell Bryant a5070c3005 devstack: enable q-meta
Enable the neutron metadata service in the primary sample local.conf.
I have no idea if this works, but conceptually it's needed.

Testing has worked fine so far without it because config-drive is
being used.  However, our setup should still allow metadata API
access, as well.

Change-Id: I9a93776c70238fde80a28a44c4c98f82ff4ecbf5
8 years ago
Russell Bryant 50330ca5cf devstack: Add multi-node support
Instead of having a single "ovn" service that can be enabled, this
patch makes it so you can enable "ovn-controller" and "ovn-northd"
separately.  This is important for multi-node devstack testing, as you
only want to run ovn-controller on a compute node.  Documentation and
sample configuration has been updated to reflect how to use these

This patch also adds two new devstack config variables: OVN_REMOTE and

The default for OVN_REMOTE should be fine except on hosts where
ovn-controller is enabled.  In that case, it should be set such that
the host knows to talk to the proper host running ovsdb-server with
the OVN databases (the one running ovn-northd).

OVN_UUID is optional.  Normally a random UUID is generated (and saved
for re-use), but it can be specified if you desire to use a specific
one for some reason.

Change-Id: Iaf040fe17b26c9b7d0b61daa0bec1b3acbee3806
8 years ago
Gal Sagie 612d815ce5 Fix local.conf example
Point to correct git repository

Change-Id: I4d5b65899097b87947e51fb45181814d65da77c4
8 years ago
Russell Bryant a51cc3784b devstack: Give example of custom ovs git repo.
Provide an example of how to configure a custom OVS git repo.  This is
useful at the moment as the latest patches to make OVN work are not
all merged, so you may want to test from a branch that has them
applied already.

Change-Id: Ic1cacbee2d05c0889d2cc10f0d96d0fa1f45d60e
8 years ago
Russell Bryant 72acc62a28 local.conf.sample: Enable the rest of OpenStack
Most OpenStack services were disabled in this sample local.conf.
There is enough OVN code available now to do end to end testing, so go
ahead and re-enable everything.

Change-Id: Ie26a6a17042f7a94763aa9ea6ff5da7102d732f9
8 years ago
Russell Bryant 7e522214df devstack: install and run ovs+ovn
This patch updates the devstack integration to install ovs+ovn from
source.  It creates the ovs, ovn, and ovn-nb databases and runs
ovsdb-server and ovs-vswitchd.  Once ovn-nbd and ovn-controller exist,
they will be run, as well.

This also includes some other assorted changes made while I was
getting this to work.

Change-Id: I8eb4f88aed2101f60382fb8307265154066dc482
8 years ago