Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
bf41c54
Add dns forwarder l2 extension
daikk115 May 30, 2025
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
b50aa85
Validate [DEFAULT] setproctitle while loading config files
kajinamit Jun 4, 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
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
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
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
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
17 changes: 16 additions & 1 deletion 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 @@ -167,5 +180,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>`_.
Loading