Skip to content

Commit 66c4046

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 b6477ae commit 66c4046

10 files changed

Lines changed: 175 additions & 79 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 & 13 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_advertise: 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
@@ -65,16 +70,30 @@ data:
6570
domain: {{ dns_search_domains }}
6671
addresses:
6772
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
73+
- type: ovs_bridge
74+
name: {{ bgp_bridges[0] }}
7075
use_dhcp: false
76+
use_dhcpv6: true # needed to enable IPv6 on bridges
7177
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
78+
- ip_netmask: {{ bgpnet0_ip }}/30
79+
defroute: false
80+
members:
81+
- type: interface
82+
name: nic3
83+
# force the MAC address of the bridge to this interface
84+
primary: true
85+
- type: ovs_bridge
86+
name: {{ bgp_bridges[1] }}
7587
use_dhcp: false
88+
use_dhcpv6: true # needed to enable IPv6 on bridges
7689
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
90+
- ip_netmask: {{ bgpnet1_ip }}/30
91+
defroute: false
92+
members:
93+
- type: interface
94+
name: nic4
95+
# force the MAC address of the bridge to this interface
96+
primary: true
7897
- type: interface
7998
name: lo
8099
addresses:
@@ -85,7 +104,6 @@ data:
85104
edpm_sshd_configure_firewall: true
86105
gather_facts: false
87106
neutron_physical_bridge_name: br-ex
88-
neutron_public_interface_name: eth1
89107
networks:
90108
- defaultRoute: true
91109
name: CtlPlane
@@ -120,9 +138,6 @@ data:
120138
ansible:
121139
ansibleHost: 192.168.122.100
122140
ansibleVars:
123-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
124-
- 100.64.0.1
125-
- 100.65.0.1
126141
edpm_frr_bgp_peers:
127142
- 100.64.0.1
128143
- 100.65.0.1
@@ -155,8 +170,7 @@ data:
155170
- reboot-os
156171
- install-certs
157172
- ovn
158-
- neutron-metadata
159-
- ovn-bgp-agent
173+
- neutron-ovn
160174
- libvirt
161175
- nova
162176
nova:

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

Lines changed: 27 additions & 13 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_advertise: 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
@@ -65,16 +70,30 @@ data:
6570
domain: {{ dns_search_domains }}
6671
addresses:
6772
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
73+
- type: ovs_bridge
74+
name: {{ bgp_bridges[0] }}
7075
use_dhcp: false
76+
use_dhcpv6: true # needed to enable IPv6 on bridges
7177
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
78+
- ip_netmask: {{ bgpnet0_ip }}/30
79+
defroute: false
80+
members:
81+
- type: interface
82+
name: nic3
83+
# force the MAC address of the bridge to this interface
84+
primary: true
85+
- type: ovs_bridge
86+
name: {{ bgp_bridges[1] }}
7587
use_dhcp: false
88+
use_dhcpv6: true # needed to enable IPv6 on bridges
7689
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
90+
- ip_netmask: {{ bgpnet1_ip }}/30
91+
defroute: false
92+
members:
93+
- type: interface
94+
name: nic4
95+
# force the MAC address of the bridge to this interface
96+
primary: true
7897
- type: interface
7998
name: lo
8099
addresses:
@@ -85,7 +104,6 @@ data:
85104
edpm_sshd_configure_firewall: true
86105
gather_facts: false
87106
neutron_physical_bridge_name: br-ex
88-
neutron_public_interface_name: eth1
89107
networks:
90108
- defaultRoute: true
91109
name: CtlPlane
@@ -120,9 +138,6 @@ data:
120138
ansible:
121139
ansibleHost: 192.168.123.100
122140
ansibleVars:
123-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
124-
- 100.64.1.1
125-
- 100.65.1.1
126141
edpm_frr_bgp_peers:
127142
- 100.64.1.1
128143
- 100.65.1.1
@@ -155,8 +170,7 @@ data:
155170
- reboot-os
156171
- install-certs
157172
- ovn
158-
- neutron-metadata
159-
- ovn-bgp-agent
173+
- neutron-ovn
160174
- libvirt
161175
- nova
162176
nova:

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

Lines changed: 27 additions & 13 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_advertise: 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
@@ -65,16 +70,30 @@ data:
6570
domain: {{ dns_search_domains }}
6671
addresses:
6772
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
73+
- type: ovs_bridge
74+
name: {{ bgp_bridges[0] }}
7075
use_dhcp: false
76+
use_dhcpv6: true # needed to enable IPv6 on bridges
7177
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
78+
- ip_netmask: {{ bgpnet0_ip }}/30
79+
defroute: false
80+
members:
81+
- type: interface
82+
name: nic3
83+
# force the MAC address of the bridge to this interface
84+
primary: true
85+
- type: ovs_bridge
86+
name: {{ bgp_bridges[1] }}
7587
use_dhcp: false
88+
use_dhcpv6: true # needed to enable IPv6 on bridges
7689
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
90+
- ip_netmask: {{ bgpnet1_ip }}/30
91+
defroute: false
92+
members:
93+
- type: interface
94+
name: nic4
95+
# force the MAC address of the bridge to this interface
96+
primary: true
7897
- type: interface
7998
name: lo
8099
addresses:
@@ -85,7 +104,6 @@ data:
85104
edpm_sshd_configure_firewall: true
86105
gather_facts: false
87106
neutron_physical_bridge_name: br-ex
88-
neutron_public_interface_name: eth1
89107
networks:
90108
- defaultRoute: true
91109
name: CtlPlane
@@ -120,9 +138,6 @@ data:
120138
ansible:
121139
ansibleHost: 192.168.124.100
122140
ansibleVars:
123-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
124-
- 100.64.2.1
125-
- 100.65.2.1
126141
edpm_frr_bgp_peers:
127142
- 100.64.2.1
128143
- 100.65.2.1
@@ -155,8 +170,7 @@ data:
155170
- reboot-os
156171
- install-certs
157172
- ovn
158-
- neutron-metadata
159-
- ovn-bgp-agent
173+
- neutron-ovn
160174
- libvirt
161175
- nova
162176
nova:

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

Lines changed: 27 additions & 13 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_advertise: 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
@@ -65,16 +70,30 @@ data:
6570
domain: {{ dns_search_domains }}
6671
addresses:
6772
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
68-
- type: interface
69-
name: nic3
73+
- type: ovs_bridge
74+
name: {{ bgp_bridges[0] }}
7075
use_dhcp: false
76+
use_dhcpv6: true # needed to enable IPv6 on bridges
7177
addresses:
72-
- ip_netmask: {{ bgpnet0_ip }}/30
73-
- type: interface
74-
name: nic4
78+
- ip_netmask: {{ bgpnet0_ip }}/30
79+
defroute: false
80+
members:
81+
- type: interface
82+
name: nic3
83+
# force the MAC address of the bridge to this interface
84+
primary: true
85+
- type: ovs_bridge
86+
name: {{ bgp_bridges[1] }}
7587
use_dhcp: false
88+
use_dhcpv6: true # needed to enable IPv6 on bridges
7689
addresses:
77-
- ip_netmask: {{ bgpnet1_ip }}/30
90+
- ip_netmask: {{ bgpnet1_ip }}/30
91+
defroute: false
92+
members:
93+
- type: interface
94+
name: nic4
95+
# force the MAC address of the bridge to this interface
96+
primary: true
7897
- type: interface
7998
name: lo
8099
addresses:
@@ -86,7 +105,6 @@ data:
86105
edpm_sshd_configure_firewall: true
87106
gather_facts: false
88107
neutron_physical_bridge_name: br-ex
89-
neutron_public_interface_name: eth1
90108
networks:
91109
- defaultRoute: true
92110
name: CtlPlane
@@ -121,9 +139,6 @@ data:
121139
ansible:
122140
ansibleHost: 192.168.122.200
123141
ansibleVars:
124-
edpm_ovn_bgp_agent_local_ovn_peer_ips:
125-
- 100.64.0.5
126-
- 100.65.0.5
127142
edpm_frr_bgp_peers:
128143
- 100.64.0.5
129144
- 100.65.0.5
@@ -157,8 +172,7 @@ data:
157172
- reboot-os
158173
- install-certs
159174
- ovn
160-
- neutron-metadata
161-
- ovn-bgp-agent
175+
- neutron-ovn
162176
nova:
163177
migration:
164178
ssh_keys:

0 commit comments

Comments
 (0)