@@ -6,7 +6,7 @@ BGP Multinode Tempest Job
66
77The ``neutron-ovn-bgp-tempest-multinode `` Zuul job is a CI job that validates
88Neutron with Native OVN BGP in a realistic leaf-spine network topology. It
9- deploys a four -node environment where VXLAN tunnels simulate the physical links
9+ deploys a five -node environment where VXLAN tunnels simulate the physical links
1010of a leaf-spine fabric, and FRR (Free Range Routing) provides BGP and BFD on
1111every network node. The job then runs the Neutron Tempest scenario tests to
1212verify that tenant workloads are reachable through dynamically advertised BGP
@@ -17,7 +17,7 @@ The job is defined in ``zuul.d/tempest-multinode-bgp.yaml``.
1717Network Topology
1818================
1919
20- The job provisions four nodes arranged in a leaf-spine topology.
20+ The job provisions five nodes arranged in a leaf-spine topology.
2121Because CI nodes only have IP-level connectivity to each other, the playbook
2222``playbooks/configure_bgp_networking.yaml `` builds the fabric links on top of
2323VXLAN tunnels carried over the nodepool underlay.
@@ -35,19 +35,24 @@ VXLAN tunnels carried over the nodepool underlay.
3535 | |
3636 +--------+-+ +-+--------+
3737 | Leaf-1 | | Leaf-2 |
38- | (AS 64999)| |(AS 64999)|
38+ |(AS 64999)| |(AS 64999)|
3939 | FRR/BGP | | FRR/BGP |
40- +-----+----+ +----+-----+
41- | |
42- VXLAN | | VXLAN
43- | |
44- +-----+----------------+-----+
45- | Controller |
46- | OpenStack control plane |
47- | OVN / Neutron / Nova |
48- | OVN agent (ovn-bgp ext.) |
49- | (br-bgp-0, br-bgp-1) |
50- +----------------------------+
40+ +---+--+---+ +---+--+---+
41+ | | | |
42+ VXLAN | | VXLAN VXLAN | | VXLAN
43+ | | | |
44+ +-------------------+ | | +-------------------+
45+ | Controller | | | | Compute1 |
46+ | OpenStack | | | | OpenStack |
47+ | control + compute+--|--------------+ | compute |
48+ | OVN agent | | | OVN agent |
49+ | (ovn-bgp ext.) | +-----------------+ (ovn-bgp ext.) |
50+ | (br-bgp-0/1) | | (br-bgp-0/1) |
51+ +-------------------+ +-------------------+
52+
53+ Both the controller and compute1 are dual-homed: each connects to **both **
54+ leaf-1 and leaf-2 through independent VXLAN tunnels (see the wiring table
55+ below for details).
5156
5257Every link in the diagram is a VXLAN tunnel terminated on an OVS bridge
5358(``br-infra ``) at each end. VLAN tags on ``br-infra `` isolate the individual
@@ -79,16 +84,37 @@ Key characteristics:
7984* The gateway chassis is **not ** assigned to the public bridge
8085 (``Q_ASSIGN_GATEWAY_TO_PUBLIC_BRIDGE: false ``), since BGP handles
8186 external reachability instead of the traditional ``br-ex `` path.
87+ * The OVN BGP agent (``q-ovn-bgp ``) manages OpenFlow rules on the BGP
88+ bridges. FRR redistributes routes via BGP.
89+
90+ Compute1
91+ --------
92+
93+ Compute1 runs as a second compute node. No OpenStack control plane services
94+ run on this node, but Nova instances can be scheduled onto it. Like the
95+ controller, it runs the **OVN agent ** with the ``ovn-bgp `` and ``metadata ``
96+ extensions, and FRR with BFD for BGP route advertisement.
97+
98+ Key characteristics:
99+
100+ * OVN is built from source (same pinned commits as the controller).
101+ * Two OVS bridges, ``br-bgp-0 `` and ``br-bgp-1 ``, connect to the leaf
102+ switches through VXLAN tunnels on ``br-infra ``, using the same veth-pair
103+ wiring as the controller.
104+ * Distributed floating IPs are enabled
105+ (``enable_distributed_floating_ip: True ``).
106+ * The OVN BGP agent (``q-ovn-bgp ``) manages OpenFlow rules on the BGP
107+ bridges. FRR redistributes routes via BGP.
82108
83109Leaf-1 and Leaf-2
84110-----------------
85111
86112The two leaf nodes act as Top-of-Rack (ToR) switches in the simulated
87- leaf-spine fabric. Each leaf has two BGP sessions:
113+ leaf-spine fabric. Each leaf has three BGP sessions:
88114
89- * **Downlink ** (to the controller) -- iBGP within AS 64999. The leaf is
90- configured as a route-reflector client toward the controller and
91- originates a default route.
115+ * **Downlinks ** (to the controller and compute1 ) -- iBGP within AS 64999.
116+ The leaf is configured as a route-reflector client toward both the
117+ controller and compute1, and originates a default route on each downlink .
92118* **Uplink ** (to the spine) -- eBGP peering between AS 64999 (leaf) and
93119 AS 65000 (spine).
94120
@@ -153,6 +179,14 @@ The pre-run playbook creates the following tunnels:
153179 - 10001
154180 - 1001
155181 - Controller (br-bgp-1) <-> Leaf-2 (controller-port)
182+ * - Compute1 <-> Leaf-1
183+ - 10020
184+ - 3000
185+ - Compute1 (br-bgp-0) <-> Leaf-1 (compute1-port)
186+ * - Compute1 <-> Leaf-2
187+ - 10021
188+ - 3001
189+ - Compute1 (br-bgp-1) <-> Leaf-2 (compute1-port)
156190 * - Spine <-> Leaf-1
157191 - 10010
158192 - 2000
@@ -165,19 +199,20 @@ The pre-run playbook creates the following tunnels:
165199BGP Route Flow
166200==============
167201
168- When the ``ovn-bgp `` extension on the controller detects a new tenant VM or
169- floating IP, the following sequence propagates the route to the spine:
202+ When the ``ovn-bgp `` extension on a compute node (the controller or compute1)
203+ detects a new tenant VM or floating IP, the following sequence propagates the
204+ route to the spine:
170205
171206#. The ``ovn-bgp `` extension adds a ``/32 `` (or ``/128 ``) route to the
172- controller 's kernel routing table and programs OpenFlow rules on
207+ node 's kernel routing table and programs OpenFlow rules on
173208 ``br-bgp-0 `` and ``br-bgp-1 ``.
174- #. FRR on the controller (via zebra) picks up the connected route and
209+ #. FRR on the node (via zebra) picks up the connected route and
175210 advertises it over the iBGP sessions to the leaf switches.
176211#. Each leaf, acting as a route-reflector, propagates the route over eBGP
177212 to the spine.
178213#. The spine installs the route into its FIB. Traffic from the Tempest runner
179214 on the spine can now reach the tenant VM by following the advertised path
180- back through the leaf to the controller .
215+ back through the leaf to the originating compute node .
181216
182217Test Scope
183218==========
0 commit comments