Skip to content

Commit 476965c

Browse files
committed
Enable OVN-native BGP in bgp_dt01
Replace ovn-bgp-agent with neutron-ovn (OVN agent) for BGP support: - Add ovn-bgp neutron service plugin to control plane configuration - Add neutron-ovn-extra-config ConfigMap with OVN agent BGP extension - Replace neutron-metadata and ovn-bgp-agent EDPM services with neutron-ovn - Remove edpm_ovn_bgp_agent_* ansible variables (no longer needed) - Modify edpm_network_config_template: br-bgp-0 and br-bgp-1 OVS bridges on top of nic3 and nic4 for each EDPM node and br-ex is removed - Update README.md services table OSPRH-25973 Assisted-By: Claude Opus 4.6 Signed-off-by: Eduardo Olivares <eolivare@redhat.com>
1 parent 69c8f18 commit 476965c

10 files changed

Lines changed: 175 additions & 109 deletions

File tree

examples/dt/bgp_dt01/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ network).
8383
| Octavia | (default) | Must have |
8484
| Heat | (default) | Must have |
8585
| frr | dataplane | Must have |
86-
| ovn-bgp-agent | dataplane | Must have |
86+
| neutron-ovn | dataplane | Must have |
8787

8888
## Considerations/Constraints
8989

examples/dt/bgp_dt01/control-plane/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ components:
88
resources:
99
- networking/nncp/values.yaml
1010
- service-values.yaml
11+
- neutron-ovn-extra-config.yaml
1112

1213
transformers:
1314
# Set namespace to OpenStack on all namespaced objects without a namespace
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: neutron-ovn-extra-config
6+
namespace: openstack
7+
data:
8+
99-neutron-ovn.conf: |
9+
[agent]
10+
extensions = metadata,ovn-bgp

examples/dt/bgp_dt01/control-plane/service-values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ data:
6767
neutron:
6868
customServiceConfig: |
6969
[DEFAULT]
70+
service_plugins = qos,ovn-router,trunk,segments,port_forwarding,log,placement,ovn-bgp
7071
vlan_transparent = true
7172
debug = true
7273
dns_domain = example.org.

examples/dt/bgp_dt01/edpm/computes/r0/values.yaml

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@ data:
2424
edpm_ovn_bridge_mappings:
2525
- "datacentre:br-ex"
2626
- "octavia:br-octavia"
27-
edpm_ovn_bgp_agent_expose_tenant_networks: true
2827
edpm_frr_bgp_ipv4_src_network: bgpmainnet
2928
edpm_frr_bgp_ipv6_src_network: bgpmainnetv6
3029
edpm_frr_bgp_neighbor_password: f00barZ
30+
edpm_frr_ovn_vrf_learn: ovnvrf10
31+
edpm_frr_ovn_vrf_expose: ovnvrf42
32+
bgp_bridges:
33+
- br-bgp-0
34+
- br-bgp-1
35+
edpm_neutron_ovn_agent_bgp_peer_bridges: "{{ bgp_bridges | join(',') }}"
3136
timesync_ntp_servers:
3237
- hostname: pool.ntp.org
3338
# conntrack is necessary for some tobiko tests
@@ -45,10 +50,6 @@ data:
4550
{%- endfor %}
4651
{% set min_viable_mtu = mtu_list | max %}
4752
network_config:
48-
- type: ovs_bridge
49-
name: {{ neutron_physical_bridge_name }}
50-
use_dhcp: false
51-
use_dhcpv6: true # needed to enable IPv6 on bridges
5253
- type: ovs_bridge
5354
name: br-octavia
5455
use_dhcp: false
@@ -65,16 +66,30 @@ data:
6566
domain: {{ dns_search_domains }}
6667
addresses:
6768
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
69+
- type: ovs_bridge
70+
name: {{ bgp_bridges[0] }}
7071
use_dhcp: false
72+
use_dhcpv6: true # needed to enable IPv6 on bridges
7173
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
74+
- ip_netmask: {{ bgpnet0_ip }}/30
75+
defroute: false
76+
members:
77+
- type: interface
78+
name: nic3
79+
# force the MAC address of the bridge to this interface
80+
primary: true
81+
- type: ovs_bridge
82+
name: {{ bgp_bridges[1] }}
7583
use_dhcp: false
84+
use_dhcpv6: true # needed to enable IPv6 on bridges
7685
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
86+
- ip_netmask: {{ bgpnet1_ip }}/30
87+
defroute: false
88+
members:
89+
- type: interface
90+
name: nic4
91+
# force the MAC address of the bridge to this interface
92+
primary: true
7893
- type: interface
7994
name: lo
8095
addresses:
@@ -84,8 +99,6 @@ data:
8499
- 192.168.122.0/24
85100
edpm_sshd_configure_firewall: true
86101
gather_facts: false
87-
neutron_physical_bridge_name: br-ex
88-
neutron_public_interface_name: eth1
89102
networks:
90103
- defaultRoute: true
91104
name: CtlPlane
@@ -120,9 +133,6 @@ data:
120133
ansible:
121134
ansibleHost: 192.168.122.100
122135
ansibleVars:
123-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
124-
- 100.64.0.1
125-
- 100.65.0.1
126136
edpm_frr_bgp_peers:
127137
- 100.64.0.1
128138
- 100.65.0.1
@@ -155,8 +165,7 @@ data:
155165
- reboot-os
156166
- install-certs
157167
- ovn
158-
- neutron-metadata
159-
- ovn-bgp-agent
168+
- neutron-ovn
160169
- libvirt
161170
- nova
162171
nova:

examples/dt/bgp_dt01/edpm/computes/r1/values.yaml

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@ data:
2424
edpm_ovn_bridge_mappings:
2525
- "datacentre:br-ex"
2626
- "octavia:br-octavia"
27-
edpm_ovn_bgp_agent_expose_tenant_networks: true
2827
edpm_frr_bgp_ipv4_src_network: bgpmainnet
2928
edpm_frr_bgp_ipv6_src_network: bgpmainnetv6
3029
edpm_frr_bgp_neighbor_password: f00barZ
30+
edpm_frr_ovn_vrf_learn: ovnvrf10
31+
edpm_frr_ovn_vrf_expose: ovnvrf42
32+
bgp_bridges:
33+
- br-bgp-0
34+
- br-bgp-1
35+
edpm_neutron_ovn_agent_bgp_peer_bridges: "{{ bgp_bridges | join(',') }}"
3136
timesync_ntp_servers:
3237
- hostname: pool.ntp.org
3338
# conntrack is necessary for some tobiko tests
@@ -45,10 +50,6 @@ data:
4550
{%- endfor %}
4651
{% set min_viable_mtu = mtu_list | max %}
4752
network_config:
48-
- type: ovs_bridge
49-
name: {{ neutron_physical_bridge_name }}
50-
use_dhcp: false
51-
use_dhcpv6: true # needed to enable IPv6 on bridges
5253
- type: ovs_bridge
5354
name: br-octavia
5455
use_dhcp: false
@@ -65,16 +66,30 @@ data:
6566
domain: {{ dns_search_domains }}
6667
addresses:
6768
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
69+
- type: ovs_bridge
70+
name: {{ bgp_bridges[0] }}
7071
use_dhcp: false
72+
use_dhcpv6: true # needed to enable IPv6 on bridges
7173
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
74+
- ip_netmask: {{ bgpnet0_ip }}/30
75+
defroute: false
76+
members:
77+
- type: interface
78+
name: nic3
79+
# force the MAC address of the bridge to this interface
80+
primary: true
81+
- type: ovs_bridge
82+
name: {{ bgp_bridges[1] }}
7583
use_dhcp: false
84+
use_dhcpv6: true # needed to enable IPv6 on bridges
7685
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
86+
- ip_netmask: {{ bgpnet1_ip }}/30
87+
defroute: false
88+
members:
89+
- type: interface
90+
name: nic4
91+
# force the MAC address of the bridge to this interface
92+
primary: true
7893
- type: interface
7994
name: lo
8095
addresses:
@@ -84,8 +99,6 @@ data:
8499
- 192.168.122.0/24
85100
edpm_sshd_configure_firewall: true
86101
gather_facts: false
87-
neutron_physical_bridge_name: br-ex
88-
neutron_public_interface_name: eth1
89102
networks:
90103
- defaultRoute: true
91104
name: CtlPlane
@@ -120,9 +133,6 @@ data:
120133
ansible:
121134
ansibleHost: 192.168.123.100
122135
ansibleVars:
123-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
124-
- 100.64.1.1
125-
- 100.65.1.1
126136
edpm_frr_bgp_peers:
127137
- 100.64.1.1
128138
- 100.65.1.1
@@ -155,8 +165,7 @@ data:
155165
- reboot-os
156166
- install-certs
157167
- ovn
158-
- neutron-metadata
159-
- ovn-bgp-agent
168+
- neutron-ovn
160169
- libvirt
161170
- nova
162171
nova:

examples/dt/bgp_dt01/edpm/computes/r2/values.yaml

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@ data:
2424
edpm_ovn_bridge_mappings:
2525
- "datacentre:br-ex"
2626
- "octavia:br-octavia"
27-
edpm_ovn_bgp_agent_expose_tenant_networks: true
2827
edpm_frr_bgp_ipv4_src_network: bgpmainnet
2928
edpm_frr_bgp_ipv6_src_network: bgpmainnetv6
3029
edpm_frr_bgp_neighbor_password: f00barZ
30+
edpm_frr_ovn_vrf_learn: ovnvrf10
31+
edpm_frr_ovn_vrf_expose: ovnvrf42
32+
bgp_bridges:
33+
- br-bgp-0
34+
- br-bgp-1
35+
edpm_neutron_ovn_agent_bgp_peer_bridges: "{{ bgp_bridges | join(',') }}"
3136
timesync_ntp_servers:
3237
- hostname: pool.ntp.org
3338
# conntrack is necessary for some tobiko tests
@@ -45,10 +50,6 @@ data:
4550
{%- endfor %}
4651
{% set min_viable_mtu = mtu_list | max %}
4752
network_config:
48-
- type: ovs_bridge
49-
name: {{ neutron_physical_bridge_name }}
50-
use_dhcp: false
51-
use_dhcpv6: true # needed to enable IPv6 on bridges
5253
- type: ovs_bridge
5354
name: br-octavia
5455
use_dhcp: false
@@ -65,16 +66,30 @@ data:
6566
domain: {{ dns_search_domains }}
6667
addresses:
6768
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
69+
- type: ovs_bridge
70+
name: {{ bgp_bridges[0] }}
7071
use_dhcp: false
72+
use_dhcpv6: true # needed to enable IPv6 on bridges
7173
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
74+
- ip_netmask: {{ bgpnet0_ip }}/30
75+
defroute: false
76+
members:
77+
- type: interface
78+
name: nic3
79+
# force the MAC address of the bridge to this interface
80+
primary: true
81+
- type: ovs_bridge
82+
name: {{ bgp_bridges[1] }}
7583
use_dhcp: false
84+
use_dhcpv6: true # needed to enable IPv6 on bridges
7685
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
86+
- ip_netmask: {{ bgpnet1_ip }}/30
87+
defroute: false
88+
members:
89+
- type: interface
90+
name: nic4
91+
# force the MAC address of the bridge to this interface
92+
primary: true
7893
- type: interface
7994
name: lo
8095
addresses:
@@ -84,8 +99,6 @@ data:
8499
- 192.168.122.0/24
85100
edpm_sshd_configure_firewall: true
86101
gather_facts: false
87-
neutron_physical_bridge_name: br-ex
88-
neutron_public_interface_name: eth1
89102
networks:
90103
- defaultRoute: true
91104
name: CtlPlane
@@ -120,9 +133,6 @@ data:
120133
ansible:
121134
ansibleHost: 192.168.124.100
122135
ansibleVars:
123-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
124-
- 100.64.2.1
125-
- 100.65.2.1
126136
edpm_frr_bgp_peers:
127137
- 100.64.2.1
128138
- 100.65.2.1
@@ -155,8 +165,7 @@ data:
155165
- reboot-os
156166
- install-certs
157167
- ovn
158-
- neutron-metadata
159-
- ovn-bgp-agent
168+
- neutron-ovn
160169
- libvirt
161170
- nova
162171
nova:

0 commit comments

Comments
 (0)