Enable Neutron DVR on overcloud in TripleO¶
Neutron distributed virtual routing should be able to be configured in TripleO.
To be able to enable distributed virtual routing in Neutron there needs to be
several changes to the current TripleO overcloud deployment. The overcloud
compute node(s) are constructed with the
element, which provides the
neutron-openvswitch-agent on the compute node.
In order to support distributed virtual routing, the compute node(s) must also
neutron-l3-agent installed. The
installation of the
neutron-dhcp-agent will need
also to be decoupled.
Additionally, for distributed virtual routing to be enabled, the
ml2_conf.ini all need to have
In the tripleo-image-elements, move the current
to an element named
neutron-router, which will be responsible for doing the
installation and configuration work required to install the
neutron-router element will list
neutron-openvswitch-agent in its element-deps. The
-node element will then become simply a ‘wrapper’ whose sole purpose is to list
the dependencies required for a network node (neutron,
Additionally, in the tripleo-image-elements/neutron element, the
plugins/ml2/ml2_conf.ini will be
modified to add the configuration variables required in each to support
distributed virtual routing (the required configuration variables are listed at
In the tripleo-heat-templates, the
overcloud-source.yaml files will be
modified to provide the correct settings for the new distributed virtual routing
variables. The enablement of distributed virtual routing will be determined by
a ‘NeutronDVR’ variable which will be ‘False’ by default (distributed virtual
routing not enabled) for backward compatibility, but can be set to ‘True’ if
distributed virtual routing is desired.
Lastly, the tripleo-incubator script
devtest_overcloud.sh will be modified
to: a) build the overcloud-compute disk-image with
neutron-openvswitch-agent, and b) configure the appropriate
parameter values to be passed in to the heat stack create for the overcloud so
that distributed routing is either enabled or disabled.
We could choose to make no change to the
neutron-router image-element and
it can be included as well in the list of elements arguments to the disk image
build for compute nodes. This has the undesired effect of also
including/configuring and starting the
neutron-dhcp-agent on each compute
node. Alternatively, it is possible to keep the
element as it is and create a
neutron-router element which is a copy of
most of the element contents of the
neutron-network-node element but without
the dependency on the
neutron-dhcp-agent element. This approach would
introduce a significant amount of code duplication.
Although TripleO installation does not use FWaaS, enablement of DVR currently is known to break FWaaS. See https://blueprints.launchpad.net/neutron/+spec/neutron-dvr-fwaas
Other End User Impact¶
The user will have the ability to set an environment variable during install which will determine whether distributed virtual routing is enabled or not.
Other Deployer Impact¶
The option to enable or disable distributed virtual routing at install time will be added. By default distributed virtual routing will be disabled.
- Primary assignee:
Erik Colnick (erikcolnick on Launchpad)
- Other contributors:
neutron-routerelement in tripleo-image-elements and move related contents from
neutron-network-nodeelement. Remove the
neutron-dhcp-agentdependency from the element-deps of the
neutron-routerelement as a dependency in the
element-depsfile becomes the only content in the
Add the configuration values indicated in https://wiki.openstack.org/wiki/Neutron/DVR/HowTo#Configuration to the
ml2_conf.inifiles in the
Add the necessary reference variables to the
nova-compute-instance.yamltripleo-heat-templates files in order to be able to set the new variables in the config files (from above item). Add definitions and default values in
devtest_overcloud.shscript to set the appropriate environment variables which will drive the configuration of neutron on the overcloud to either enable distributed virtual routers or disable distributed virtual routers (with disable as the default).
Existing TripleO CI will help ensure that as this is implemented, the current feature set is not impacted and that the default behavior of disabled distributed virtual routers is maintained.
Additional CI tests which test the installation with distributed virtual routers should be added as this implementation is completed.
Documentation of the new configuration option will be needed.