Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
86416d2
ip_conntrack: include allowed_address_pairs in CT_MARK_INVALID cleanup
pulchart Sep 10, 2025
0880e87
Remove NEUTRON_DEPLOY_MOD_WSGI from zuul jobs
brianphaley Apr 24, 2026
bf41c54
Add dns forwarder l2 extension
daikk115 May 30, 2025
1443008
Remove setting of enforce_scope in unit tests
brianphaley Apr 30, 2026
7bbadcb
Fix issues in _check_router_interface_not_in_use()
brianphaley Jun 2, 2026
d10035d
ovn: pass gateway LRPs to _check_external_ips_changed
ralonsoh Jun 3, 2026
26c1405
ovn: avoid nested transaction in ``_delete_port`` virtual parent check
ralonsoh Jun 3, 2026
637444b
ovn: read LSP ``up`` state from IDL cache in ``update_lsp_host_info``
ralonsoh Jun 4, 2026
d2732d3
Add generic RangeAllocator and VNI/VLAN allocation
otherwiseguy May 29, 2026
c695003
Use idl.has_lock instead of idl.is_lock_contended for OVSDB lock checks
ralonsoh Jun 3, 2026
7a70217
[OVN] Fix race condition during floating ip deletion
felixmoebius May 7, 2026
b50aa85
Validate [DEFAULT] setproctitle while loading config files
kajinamit Jun 4, 2026
342bca3
Add a neutron dependency change detection tool
otherwiseguy Jun 7, 2026
db196cf
Fix Update response after updating PVLAN properties
elvgarrui Jun 3, 2026
f0aad94
Use policy check strings from neutron-lib
slawqo Jun 8, 2026
2232cd1
epvn: Split Svd into generic and Evpn specific
cubeek Jun 5, 2026
022c7bd
Remove contrib module from neutron.tests
slawqo Jun 8, 2026
2064a39
Enable PVLAN service plugin in DevStack
fyanac Jun 8, 2026
25c8c8f
evpn: Implement OVN portion
cubeek May 21, 2026
1bce68e
Merge "Validate [DEFAULT] setproctitle while loading config files"
Jun 8, 2026
8b636c7
Merge "Remove contrib module from neutron.tests"
Jun 8, 2026
b54f664
doc: Add missing zero quota information in subnetpools
winiciusallan Jun 8, 2026
6d43aab
Integrated SVD into OVN Agent EVPN Extension
Jun 2, 2026
d8eb719
evpn: Pass VLAN ID in port binding events to FSM
otherwiseguy Jun 4, 2026
4bb1a29
FRR driver for a EVPN router
mtomaska Apr 30, 2026
012c9e6
Frr should write running config to memory to persist reboots
mtomaska Jun 3, 2026
c50ec76
Merge "Add dns forwarder l2 extension"
Jun 9, 2026
e0959b4
Merge "Enable PVLAN service plugin in DevStack"
Jun 9, 2026
06aaa4c
quota: Fix quota details API error with unloaded service plugins
ralonsoh Jun 8, 2026
b7ef8bb
Merge "Add generic RangeAllocator and VNI/VLAN allocation"
Jun 9, 2026
ed7a151
Merge "evpn: Implement OVN portion"
Jun 9, 2026
8a4a4b1
ovs: skip OF operations for ports with invalid ofport
ralonsoh Jun 9, 2026
16fadc5
Remove the unused ``api_workers`` config knob
ralonsoh Jun 8, 2026
8ccf3f9
Fix ``update_router:enable_default_route_*`` policies
ralonsoh Jun 9, 2026
2a2f92e
Merge "Use policy check strings from neutron-lib"
Jun 9, 2026
9a0829f
Merge "ovn: read LSP ``up`` state from IDL cache in ``update_lsp_host…
Jun 9, 2026
8ca5a1d
Merge "doc: Add missing zero quota information in subnetpools"
Jun 9, 2026
1035806
BGP job: move to experimental pipeline
eduolivares Jun 9, 2026
f379dea
evpn: Set HA chassis group on EVPN LRP
cubeek Jun 9, 2026
911b213
Merge "ovs: skip OF operations for ports with invalid ofport"
Jun 9, 2026
c1c73ca
Merge "epvn: Split Svd into generic and Evpn specific"
Jun 9, 2026
5a04b57
Merge "Integrated SVD into OVN Agent EVPN Extension"
Jun 9, 2026
4459661
evpn: Remove EVPN_VRF_NAME_LEN constant
cubeek Jun 9, 2026
d8beced
Merge "BGP job: move to experimental pipeline"
Jun 9, 2026
1fc95d9
Add RandomRangeAllocator for random VNI selection
otherwiseguy Jun 3, 2026
5e2cda2
Merge "FRR driver for a EVPN router"
Jun 9, 2026
905d7eb
Merge "Frr should write running config to memory to persist reboots"
Jun 9, 2026
8fc35a1
Merge "evpn: Pass VLAN ID in port binding events to FSM"
Jun 10, 2026
276b69e
Merge "Use idl.has_lock instead of idl.is_lock_contended for OVSDB lo…
Jun 10, 2026
e5d06f7
Merge "quota: Fix quota details API error with unloaded service plugins"
Jun 10, 2026
ae7e7b5
Switch from setting LSP.tag to LSP.tag_request
otherwiseguy Jun 7, 2026
83f1d83
Ensure MaintenanceWorker lock set before connect
otherwiseguy Jun 9, 2026
8f1f4b8
Merge "evpn: Remove EVPN_VRF_NAME_LEN constant"
Jun 10, 2026
b252d4a
[functional tests] Handle frrinit.sh path for CentOS
karelyatin Jun 10, 2026
7f986bb
Integrate FrrDriver into OVN Agent EVPN Extension
mtomaska Jun 8, 2026
8836289
doc: Document runtime ``uwsgi`` Python module in WSGI guide
ralonsoh Jun 10, 2026
101b07c
Merge "Fix ``update_router:enable_default_route_*`` policies"
Jun 10, 2026
7ebcce0
ovs: defer ports with invalid ofport in ``_process_port``
ralonsoh Jun 10, 2026
13b62f4
Add PVLAN extension policy rules
elvgarrui Jun 9, 2026
a43b9a1
Merge "Integrate FrrDriver into OVN Agent EVPN Extension"
Jun 10, 2026
983a612
Merge "[functional tests] Handle frrinit.sh path for CentOS"
Jun 10, 2026
5c3ada6
Merge "Ensure MaintenanceWorker lock set before connect"
Jun 10, 2026
43d5034
Merge "Fix Update response after updating PVLAN properties"
Jun 10, 2026
91ac758
Merge "evpn: Set HA chassis group on EVPN LRP"
Jun 10, 2026
1427e59
Merge "doc: Document runtime ``uwsgi`` Python module in WSGI guide"
Jun 10, 2026
b3fc9cf
Merge "Switch from setting LSP.tag to LSP.tag_request"
Jun 10, 2026
e1cb410
Merge "ovs: defer ports with invalid ofport in ``_process_port``"
Jun 10, 2026
b1e698a
Merge "Add RandomRangeAllocator for random VNI selection"
Jun 10, 2026
aee9ca0
Merge "Add PVLAN extension policy rules"
Jun 11, 2026
56f707b
Merge "ovn: avoid nested transaction in ``_delete_port`` virtual pare…
Jun 11, 2026
de087e8
Merge "ovn: pass gateway LRPs to _check_external_ips_changed"
Jun 11, 2026
6ffe505
policy: remove ``OwnershipValidationHook``, update ``create_port`` rule
ralonsoh Jun 11, 2026
c40909a
Bump os-ken to 4.2.1 version
ralonsoh Jun 12, 2026
5d598cf
pecan: Optimize ``_exclude_attributes_by_policy`` on list responses
ralonsoh Jun 12, 2026
b2f6cb8
l3: Remove unused ``ha_keepalived_state_change_server_threads`` confi…
ralonsoh Jun 12, 2026
25a7c59
Remove UnknownNetworkType InvalidAddressRequest and IPAllocationFailed
ralonsoh Jun 12, 2026
75b6c30
Fix EVPN Port_Binding events
otherwiseguy Jun 12, 2026
a8feb94
More tag_request fixes
otherwiseguy Jun 12, 2026
129e88e
Explicitly create log directories in the FrrFixture
mtomaska Jun 13, 2026
cea1a8a
Frrinit.sh scripts spawns background deamons
mtomaska Jun 11, 2026
92181b3
Guard tun_br in _restore_local_vlan_map when no br-tun
xtrusia Jun 12, 2026
fa408cd
doc: fix RST formatting in ``modify_fields_to_db`` and ``modify_field…
ralonsoh Jun 15, 2026
7e68631
Rootwrap filters for vtysh
mtomaska Jun 13, 2026
b4c1144
Call static method ``RangeAllocator._make_params``
ralonsoh Jun 15, 2026
c6a821a
Merge "pecan: Optimize ``_exclude_attributes_by_policy`` on list resp…
Jun 15, 2026
6dce3c9
Merge "policy: remove ``OwnershipValidationHook``, update ``create_po…
Jun 15, 2026
9ffb4ca
Merge "More tag_request fixes"
Jun 15, 2026
897c920
Merge "l3: Remove unused ``ha_keepalived_state_change_server_threads`…
Jun 15, 2026
d8de4a7
Merge "Call static method ``RangeAllocator._make_params``"
Jun 15, 2026
07c07d9
Skip test for vrf delete on Centos9 with frr 8.5
mtomaska Jun 13, 2026
b877e9b
Fix superfluous-parens pylint warnings
brianphaley Jun 16, 2026
80f9f68
Merge "Guard tun_br in _restore_local_vlan_map when no br-tun"
Jun 16, 2026
73bf712
Merge "Skip test for vrf delete on Centos9 with frr 8.5"
Jun 16, 2026
6cad80b
Merge "[OVN] Fix race condition during floating ip deletion"
Jun 16, 2026
0634d28
Merge "Bump os-ken to 4.2.1 version"
Jun 16, 2026
82c4be6
Merge "Add a neutron dependency change detection tool"
Jun 16, 2026
ad15787
Re-install extension flows lost during ovs restart
rubasov Apr 9, 2026
2467144
Merge "Fix issues in _check_router_interface_not_in_use()"
Jun 16, 2026
f3368a5
Merge "ip_conntrack: include allowed_address_pairs in CT_MARK_INVALID…
Jun 16, 2026
8223b24
Merge "Remove NEUTRON_DEPLOY_MOD_WSGI from zuul jobs"
Jun 16, 2026
0b8c424
Drop redundant validation of ha_vrrp_auth_password
kajinamit Jul 2, 2025
9f92812
Merge "Fix EVPN Port_Binding events"
Jun 16, 2026
e528d8b
Remove the OVN Metadata agent grenade and n-t-p CI jobs
ralonsoh Jun 16, 2026
f95e8ce
Remove unused CI job definitions
ralonsoh Jun 16, 2026
4355bb2
Merge "Rootwrap filters for vtysh"
Jun 16, 2026
84a79cf
Merge "Remove the unused ``api_workers`` config knob"
Jun 16, 2026
b4d3fe6
Merge "Fix superfluous-parens pylint warnings"
Jun 16, 2026
5c095ee
Merge "Drop redundant validation of ha_vrrp_auth_password"
Jun 16, 2026
35ce788
Merge "Remove UnknownNetworkType InvalidAddressRequest and IPAllocati…
Jun 17, 2026
319761f
Merge "Explicitly create log directories in the FrrFixture"
Jun 17, 2026
d70bdc9
[metadata] cleanup response headers
pshchelo Dec 11, 2025
425f97d
FrrDriver Vtysh accepts --vty_socket argument
mtomaska Jun 15, 2026
91abb5e
Only set the maintenance worker lock on the worker
otherwiseguy Jun 17, 2026
b2e5bdd
Merge "Remove the OVN Metadata agent grenade and n-t-p CI jobs"
Jun 18, 2026
73969ab
Merge "Remove unused CI job definitions"
Jun 18, 2026
a8856b7
Add security-groups-default-statefulness API extension
ralonsoh Apr 12, 2026
0a2042c
Merge "doc: fix RST formatting in ``modify_fields_to_db`` and ``modif…
Jun 18, 2026
953495b
Delete ``FloatingIPDNS`` row on FIP disassociation
ralonsoh Jun 18, 2026
a6c4f5e
Merge "Only set the maintenance worker lock on the worker"
Jun 18, 2026
4f23dbf
Merge "FrrDriver Vtysh accepts --vty_socket argument"
Jun 18, 2026
cc31dc5
Merge "Add security-groups-default-statefulness API extension"
Jun 18, 2026
83d71da
Merge "Remove setting of enforce_scope in unit tests"
Jun 19, 2026
53f099e
Merge "[metadata] cleanup response headers"
Jun 19, 2026
7c6b99e
Merge "Re-install extension flows lost during ovs restart"
Jun 19, 2026
f1a6d73
Merge "Delete ``FloatingIPDNS`` row on FIP disassociation"
Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ disable=
invalid-name,
missing-docstring,
singleton-comparison,
superfluous-parens,
ungrouped-imports,
wrong-import-order,
consider-using-f-string,
Expand Down
42 changes: 42 additions & 0 deletions devstack/etc/frr_with_evpn/daemons
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
bgpd=yes
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
pbrd=no
bfdd=no
fabricd=no
vrrpd=no
pathd=no

#
# If this option is set the /etc/init.d/frr script automatically loads
# the config via "vtysh -b" when the servers are started.
# Check /etc/pam.d/frr if you intend to use "vtysh"!
#
vtysh_enable=yes
zebra_options=" -A 127.0.0.1 -s 90000000"
bgpd_options=" -A 127.0.0.1"
ospfd_options=" -A 127.0.0.1"
ospf6d_options=" -A ::1"
ripd_options=" -A 127.0.0.1"
ripngd_options=" -A ::1"
isisd_options=" -A 127.0.0.1"
pimd_options=" -A 127.0.0.1"
ldpd_options=" -A 127.0.0.1"
nhrpd_options=" -A 127.0.0.1"
eigrpd_options=" -A 127.0.0.1"
babeld_options=" -A 127.0.0.1"
sharpd_options=" -A 127.0.0.1"
pbrd_options=" -A 127.0.0.1"
staticd_options="-A 127.0.0.1"
bfdd_options=" -A 127.0.0.1"
fabricd_options="-A 127.0.0.1"
vrrpd_options=" -A 127.0.0.1"
4 changes: 4 additions & 0 deletions devstack/etc/frr_with_evpn/frr.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
frr defaults traditional
hostname devstack
log file /var/log/frr/frr.log informational
log timestamp precision 3
6 changes: 6 additions & 0 deletions devstack/lib/dns_forwarder_ovs_ext
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
function configure_ovs_dns_forwarder {
plugin_agent_add_l2_agent_extension "dns_forwarder"
iniset /$NEUTRON_CORE_PLUGIN_CONF dns_forwarder upstream_dns_server_ports $UPSTREAM_DNS_SERVER_PORTS
iniset /$NEUTRON_CORE_PLUGIN_CONF dns_forwarder upstream_dns_query_timeout $UPSTREAM_DNS_QUERY_TIMEOUT
iniset /$NEUTRON_CORE_PLUGIN_CONF dns_forwarder client_dns_server_ports $CLIENT_DNS_SERVER_PORTS
}
15 changes: 13 additions & 2 deletions devstack/lib/frr
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,26 @@ function install_frr {
install_package frr
}

function install_frr_vrf_modules {
if is_ubuntu; then
install_package linux-modules-extra-$(uname -r)
elif is_fedora; then
install_package kernel-modules-extra-$(uname -r)
fi
sudo modprobe vrf
}

function configure_frr {
echo_summary "Configuring FRR"

# Create the configuration dir
sudo install -d -o $STACK_USER $FRR_CONF_DIR

# Configure frr daemons
if [[ "$FRR_USE_BFD" == "True" ]]; then
if [[ "$FRR_USE_EVPN" == "True" ]]; then
sudo install -o root -g root -m 644 $FRR_ETC_SRC_DIR/frr_with_evpn/* $FRR_CONF_DIR/
install_frr_vrf_modules
elif [[ "$FRR_USE_BFD" == "True" ]]; then
sudo install -o root -g root -m 644 $FRR_ETC_SRC_DIR/frr_with_bfd/* $FRR_CONF_DIR/
else
sudo install -o root -g root -m 644 $FRR_ETC_SRC_DIR/frr/* $FRR_CONF_DIR/
Expand Down Expand Up @@ -69,4 +81,3 @@ function cleanup_frr {
# Clean the FRRt configuration dir
sudo rm -rf $FRR_CONF_DIR
}

3 changes: 3 additions & 0 deletions devstack/lib/pvlan
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function configure_pvlan {
neutron_service_plugin_class_add "pvlan"
}
1 change: 1 addition & 0 deletions devstack/ovn-local.conf.sample
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ enable_service q-dns
enable_service q-port-forwarding
enable_service q-qos
enable_service neutron-segments
enable_service neutron-pvlan
enable_service q-log

# Enable neutron tempest plugin tests
Expand Down
10 changes: 10 additions & 0 deletions devstack/plugin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ source $LIBDIR/tag_ports_during_bulk_creation
source $LIBDIR/octavia
source $LIBDIR/loki
source $LIBDIR/local_ip
source $LIBDIR/pvlan
source $LIBDIR/port_trusted_vif
source $LIBDIR/frr
source $LIBDIR/dns_forwarder_ovs_ext

# source the OVS/OVN compilation helper methods
source $TOP_DIR/lib/neutron_plugins/ovs_source
Expand Down Expand Up @@ -72,6 +74,9 @@ if [[ "$1" == "stack" ]]; then
if is_service_enabled neutron-segments; then
configure_segments_extension
fi
if is_service_enabled neutron-pvlan; then
configure_pvlan
fi
if is_service_enabled neutron-network-segment-range; then
configure_network_segment_range
fi
Expand All @@ -85,6 +90,11 @@ if [[ "$1" == "stack" ]]; then
configure_ovs_metadata_path
fi
fi
if is_service_enabled q-dns-forwarder neutron-dns-forwarder; then
if [ $Q_AGENT = openvswitch ]; then
configure_ovs_dns_forwarder
fi
fi
if is_service_enabled neutron-local-ip; then
configure_local_ip
fi
Expand Down
2 changes: 1 addition & 1 deletion doc/source/admin/config-neutron-server-processes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ The following table summarizes the Neutron server-side processes:
- ``neutron-rpc-server`` (spawns ``rpc worker`` and
``rpc reports worker`` child processes)
- When agents require RPC
- ``api_workers``, ``rpc_workers``, ``rpc_state_report_workers``
- uWSGI ``processes``; Neutron ``rpc_workers`` and ``rpc_state_report_workers``
* - Periodic
- ``neutron-periodic-workers`` (runs plugin periodic tasks as threads)
- With any ML2 mechanism driver and WSGI API
Expand Down
4 changes: 3 additions & 1 deletion doc/source/admin/config-subnet-pools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ like a router, network, or a port, it uses one from your total quota.
With subnets, the resource is the IP address space. Some subnets take
more of it than others. For example, 203.0.113.0/24 uses 256 addresses
in one subnet but 198.51.100.224/28 uses only 16. If address space is
limited, the quota system can encourage efficient use of the space.
limited, the quota system can encourage efficient use of the space. If
the quota value is set as zero, it means that no quota will be
enforced when allocating a subnet from a subnet pool.

With IPv4, the default_quota can be set to the number of absolute
addresses any given project is allowed to consume from the pool. For
Expand Down
22 changes: 19 additions & 3 deletions doc/source/admin/config-wsgi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,19 @@ Start neutron-api:

.. end

uWSGI Python API
~~~~~~~~~~~~~~~~

When Neutron API workers run under uWSGI with the ``python3`` plugin, the
server injects a Python ``uwsgi`` module into each worker process at runtime.
This module is not a Neutron dependency and cannot be installed separately
with ``pip``; it exists only inside uWSGI-managed workers.

Neutron uses this module (via ``neutron.common.wsgi_utils``) to read uWSGI
configuration options such as ``start-time`` and to obtain the worker ID
(``uwsgi.worker_id()``). For the full list of available functions, see the
`uWSGI API documentation <https://uwsgi-docs.readthedocs.io/en/latest/API.html>`_.


Start Neutron RPC server
------------------------
Expand Down Expand Up @@ -140,10 +153,11 @@ further limited by available memory, and the number of RPC workers is set to
half that number.

It is strongly recommended that all deployers set these values themselves,
via the api_workers and rpc_workers configuration parameters.
via the uWSGI ``processes`` and Neutron ``rpc_workers`` configuration
parameters.

For a cloud with a high load to a relatively small number of objects,
a smaller value for api_workers will provide better performance than
a smaller value for API workers will provide better performance than
many (somewhere around 4-8.) For a cloud with a high load to lots of
different objects, then the more the better. Budget neutron-server
using about 2GB of RAM in steady-state.
Expand All @@ -167,5 +181,7 @@ in processing agents heartbeats.
.. note::
ML2/OVN uses the ``[uwsgi]start-time = %t`` parameter to create the OVN hash
ring registers during the initialization process. This value is populated
by the uWSGi process with the start time. For more information, check
by the uWSGi process with the start time and read via the runtime ``uwsgi``
Python module (see the uWSGI Python API subsection above). For more
information, check
`Configuring uWSGI <https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html>`_.
5 changes: 5 additions & 0 deletions etc/neutron/rootwrap.d/rootwrap.filters
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ keepalived_state_change_env: EnvFilter, env, root, PROCESS_TAG=, neutron-keepali
conntrackd: CommandFilter, conntrackd, root
conntrackd_env: EnvFilter, env, root, PROCESS_TAG=, conntrackd

# FRR
vtysh_cmd: RegExpFilter, vtysh, root, vtysh, --vty_socket, /[a-z/]+, -c, .*
vtysh_dryrun: RegExpFilter, vtysh, root, vtysh, --vty_socket, /[a-z/]+, --dryrun, -f, .*
vtysh_apply: RegExpFilter, vtysh, root, vtysh, --vty_socket, /[a-z/]+, -f, .*

# OPEN VSWITCH
ovs-ofctl: CommandFilter, ovs-ofctl, root
ovsdb-client: CommandFilter, ovsdb-client, root
2 changes: 1 addition & 1 deletion neutron/agent/l2/extensions/dhcp/ipv6.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ def get_dhcp_options(self, mac, ip_info, req_options, req_type):
# Client FQDN: host-<ip-v6-address>
fqdn_bin = struct.pack('!%ds' % len(fqdn), bytes(str(fqdn).encode()))
fqdn_str_len = struct.pack('!b', len(fqdn_bin))
dns_data = (dns_tag + fqdn_str_len + fqdn_bin)
dns_data = dns_tag + fqdn_str_len + fqdn_bin
option_list.append(
dhcp6.option(code=DHCPV6_OPTION_FQDN,
data=dns_data, length=len(dns_data)))
Expand Down
Loading