Commit Graph

10 Commits

Author SHA1 Message Date
Lucas Alvares Gomes 114ca0f1be Fix IGMP inconsistency across drivers
Prior to this patch, ML2/OVS and ML2/OVN had inconsistent IGMP
configurations. Neutron only exposed one configuration option for IGMP:
igmp_snooping_enabled.

Other features such as IGMP flood, IGMP flood reports and IGMP flood
unregistered were hardcoded differently on each driver (see LP#2044272
for a more details).

These hardcoded values has led to many changes over the years tweaking
them to work on different scenarios but they were never final because
the fix for one case would break the other.

This patch introduces 3 new configuration options for these other IGMP
features that can be enabled or disabled on both backends. Operators
can now fine tune their deployments in the way that will work for them.

As a consequence of the hardcoded values for each driver we had to break
some defaults and, in the case of ML2/OVS, if operators want to keep
things as they were before this patch they will need to enable the new
mcast_flood and mcast_flood_unregistered configuration options.

That said, the for ML2/OVS there was also an inconsistency with the help
string of igmp_snooping_enabled configuration option as it mentioned
that enabling snooping would disable flooding to unregistered ports but
that was not true anymore after the fix [0].

[0] https://bugs.launchpad.net/neutron/+bug/1884723

Closes-Bug: #2044272
Change-Id: Ic4dde46aa0ea2b03362329c87341c83b24d32176
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
2023-12-15 09:05:19 +00:00
Brian Haley 831ac3152d Fix a number of configuration typos
It started with just fixing a missing trailing space,
but I decided to just go through all the config option
help messages and fix typos and grammatical issues as
well.

Trivialfix

Change-Id: Ie94154652f79eb808cb9a88e6a750e7ece40cca4
2023-03-22 18:35:43 -04:00
LIU Yulong 62d3f91f92 openflow_processed_per_port should be ovs-agent only
"conf/agent/ovs_conf.py" has some common options for ovs agent and
L3/dhcp/metadata agent [1] to handle records on ovsdb, mostly for ovsdb
related action only when the interface driver is 'openvswitch' [2][3].
The options of "conf/plugins/ml2/drivers/ovs_conf.py" are mainly
for ovs-agent. The "openflow_processed_per_port" is in
wrong place, because L3/DHCP/metadata agent will never try to
"install flows per port".

The option ``openflow_processed_per_port`` is still in [OVS] section
for openvswitch agent.

[1] https://github.com/openstack/neutron/blob/master/neutron/opts.py#L209
[2] https://codesearch.openstack.org/?q=from%20neutron.conf.agent%20import%20ovs_conf&i=nope&literal=nope&files=&excludeFiles=&repos=
[3] https://codesearch.openstack.org/?q=ovs_conf.register_ovs_agent_opts&i=nope&literal=nope&files=&excludeFiles=&repos=

Change-Id: I43756c81ba3eede2ff8b1f4c6ead4c9426d78f90
2022-06-02 02:41:13 +00:00
Rodolfo Alonso Hernandez 430c220d05 [OVS] Add "Open Flow processing considerations" doc section
Added "Open Flow processing considerations" in the OVS firewall
driver page. This section describes the [OVS] configuration option
"openflow_processed_per_port". A script to meassure the Open Flow
rule processing time is provided.

Related-Bug: #1934917

Change-Id: Id4936b6d36abb6edc250aaf1cbc7e9af3fd0fae5
2022-05-07 06:22:09 +00:00
Rodolfo Alonso Hernandez ab84b7fb2b Allow to process FW OF rules belonging to a port in a single operation
This patch adds a new configuration variable to control the OVS
OpenFlow rule processing operations:

* ``openflow_processed_per_port``: by default "False". If enabled,
  all OpenFlow rules associated to a port will be processed at once,
  in one single transaction. If disabled, the flows will be processed
  in batches of "AGENT_RES_PROCESSING_STEP=100" number of OpenFlow
  rules.

With ``openflow_processed_per_port`` enabled, all Firewall
OpenFlow rules related to a port are processed in one transaction
(executed in one single command). That ensures the rules are written
atomically and apply all of them at the same time.

That means all needed rules to handle the ingress and egress traffic
of a port using the Open vSwitch Firewall, are committed in the OVS
DB at the same time. That will prevent from partially applied OpenFlow
sets in the Firewall and inconsistencies when applying new SG rules or
during the OVS agent restart.

That will override, if needed, the hard limit of
"AGENT_RES_PROCESSING_STEP=100" OpenFlow rules that could be
processed in OVS at once.

If the default configuration values are not modified, the behaviour of
the OVS library does not change.

Closes-Bug: #1934917

Change-Id: If4984dece266a789d607725f8497f1aac3d73d23
2022-05-09 16:49:29 +00:00
Slawek Kaplonski 5b341150e2 Add "igmp_snooping_enable" config option for OVS agent
Neutron-ovs-agent can now enable IGMP snooping in integration bridge
if config option "igmp_snooping_enable" in OVS section in config will
be set to True.
It will also set mcast-snooping-disable-flood-unregistered=true
so flooding of multicast packets to all unregistered ports will be
disabled also.
Both changes are applied on integration bridge.

Change-Id: I12f4030a35d10d1715d3b4bfb3ed5efb9aa28f2b
Closes-Bug: #1840136
2019-11-02 13:46:13 +01:00
Brian Haley cf37563c83 Remove deprecated vsctl ovsdb_interface api
This was deprecated in https://review.openstack.org/#/c/503070/
so remove all the vsctl-related code, leaving just the native
ovsdb api.

Also removed renamed ovs_vsctl_timeout value, which was changed
to ovsdb_timeout in https://review.openstack.org/#/c/518391/

Change-Id: I50dfcea3deb41df1bd01fd06b76522453a6ba50b
2018-10-11 14:59:34 -04:00
Slawek Kaplonski 1f8378e0ac [OVS] Add mac-table-size to be set on each ovs bridge
By default number of MAC addresses which ovs stores in memory
is quite low - 2048.

Any eviction of a MAC learning table entry triggers revalidation.
Such revalidation is very costly so it cause high CPU usage by
ovs-vswitchd process.

To workaround this problem, higher value of mac-table-size
option can be set for bridge. Then this revalidation will happen
less often and CPU usage will be lower.
This patch adds config option for neutron-openvswitch-agent to allow
users tune this setting in bridges managed by agent.
By default this value is set to 50000 which should be enough for most
systems.

Change-Id: If628f52d75c2b5fec87ad61e0219b3286423468c
Closes-Bug: #1775797
2018-06-08 16:26:35 +02:00
Ihar Hrachyshka a82d945f9f Renamed ovs_vsctl_timeout into ovsdb_timeout
It's not specific to cli implementation of ovsdb interface.

Also moved the option under [agent] section.

Change-Id: Ic5e38d0c36ae29a9fef23038a9262d14ef1ede90
2017-11-10 14:47:29 -08:00
Aradhana Singh d4a9d2c046 Refactoring config options of agent/common/ovs_lib
Refactoring oslo config options for agent/common/ovs_lib
in neutron/conf/agent/ovs_conf. This would allow centralization of
all configuration options and provides easy way to import.

Change-Id: If833a52efc0da406d0ee24fcc5dd4e05898aa094
2016-07-31 13:39:52 +00:00