|
| 1 | +# RHOSO Deployed Topology - BGP-L3-XL DT - Kernel routing and OVN NB DB driver |
| 2 | + |
| 3 | +This document describes a scaled out BGP Deployed Topology (DT), used to test the |
| 4 | +BGP Dynamic Routing functionality on Red Hat OpenStack Services on OpenShift |
| 5 | +(RHOSO). |
| 6 | + |
| 7 | +The CRs included within this DT should be applied on an environment where EDPM |
| 8 | +and OCP nodes are connected through a spine/leaf network. The BGP protocol |
| 9 | +should be enabled on those spine and leaf routers. |
| 10 | + |
| 11 | +## Purpose |
| 12 | + |
| 13 | +This BGP DT (l3-xl) tests default BGP configuration: |
| 14 | +* Kernel routing (instead of OVN routing) |
| 15 | +* OVN NB DB driver (instead of OVN SB DB driver) |
| 16 | + |
| 17 | +The OCP cluster consists on the following nodes: |
| 18 | +* 3 OCP master nodes |
| 19 | +* 9 OCP worker nodes |
| 20 | +* 1 OCP worker node with special configuration (OCP tester node) |
| 21 | + |
| 22 | +This DT creates an OCP cluster that includes both master and worker nodes, |
| 23 | +instead of the usual master/worker combo nodes. The reason for this is to run |
| 24 | +disruptive tests only on the OCP workers, which host the Openstack Control |
| 25 | +Plane services, avoiding potential issues when OCP master nodes are disrupted |
| 26 | +that would not be relevant when testing RHOSO high availability scenarios. |
| 27 | + |
| 28 | +The extra OCP worker (OCP tester) is needed to run tests from it because: |
| 29 | +* disruptive tests can be run from this worker on the other workers without |
| 30 | + affecting the test exection |
| 31 | +* this worker is connected to the spine/leaf routers with a special routing |
| 32 | + configuration, so that it can reach the Openstack provider network |
| 33 | +The OCP tester is configured so that only test pods (created by the |
| 34 | +Openstack test-operator) run on it. |
| 35 | + |
| 36 | +This DT configures both compute and networker EDPM nodes. So far, networker |
| 37 | +nodes are needed when BGP is used on RHOSO, in order to expose routes to SNAT |
| 38 | +traffic (OVN Gateway IPs). In other words, when RHOSO is used with BGP, the OCP |
| 39 | +workers cannot be configured as OVN Gateways. |
| 40 | + |
| 41 | +The OCP and EDPM nodes deployed with this DT are distributed into three |
| 42 | +different racks. Each rack is connected to two leaves. |
| 43 | +Hence, the distribution of the nodes in the racks is the following one: |
| 44 | +* rack0: r0-compute-0, r0-compute-1, r0-networker-0, ocp-master-0, ocp-worker-0, leaf-0, leaf-1 |
| 45 | +* rack1: r1-compute-0, r1-compute-1, r1-networker-0, ocp-master-1, ocp-worker-1, leaf-2, leaf-3 |
| 46 | +* rack2: r2-compute-0, r2-compute-1, r2-networker-0, ocp-master-2, ocp-worker-2, leaf-4, leaf-5 |
| 47 | + |
| 48 | +The OCP tester (ocp-worker-3) is not included into any rack. It is not |
| 49 | +connected to any leaves, but to a router connected to the spines, due to the |
| 50 | +reasons described before (it needs special connectivity to reach the provider |
| 51 | +network). |
| 52 | + |
| 53 | +## Node topology |
| 54 | +| Node role | bm/vm | amount | |
| 55 | +| ----------------------- | ----- | ------ | |
| 56 | +| Openshift master nodes | vm | 3 | |
| 57 | +| Openshift worker nodes | vm | 10 | |
| 58 | +| Openstack Computes | vm | 6 | |
| 59 | +| Openstack Networker | vm | 3 | |
| 60 | +| Leaf routers | vm | 6 | |
| 61 | +| Spine routers | vm | 2 | |
| 62 | +| External routers | vm | 1 | |
| 63 | +| Ansible Controller | vm | 1 | |
| 64 | + |
| 65 | +### Networks |
| 66 | + |
| 67 | +| Name | Type | CIDR | |
| 68 | +| ------------------------ | -------- | ---------------- | |
| 69 | +| Controlplane rack0 | untagged | 192.168.122.0/24 | |
| 70 | +| Controlplane rack1 | untagged | 192.168.123.0/24 | |
| 71 | +| Controlplane rack2 | untagged | 192.168.124.0/24 | |
| 72 | +| Provider network | untagged | 192.168.133.0/24 | |
| 73 | +| RH OSP | untagged | 192.168.111.0/24 | |
| 74 | +| edpm/ocp to left leaves | untagged | 100.64.x.y/30 | |
| 75 | +| edpm/ocp to right leaves | untagged | 100.65.x.y/30 | |
| 76 | + |
| 77 | +## Services, enabled features and configurations |
| 78 | + |
| 79 | +| Service | configuration | Lock-in coverage? | |
| 80 | +| ---------------- | ---------------- | ------------------ | |
| 81 | +| Glance | Swift | Must have | |
| 82 | +| Swift | (default) | Must have | |
| 83 | +| Octavia | (default) | Must have | |
| 84 | +| Heat | (default) | Must have | |
| 85 | +| frr | dataplane | Must have | |
| 86 | +| ovn-bgp-agent | dataplane | Must have | |
| 87 | + |
| 88 | +## Considerations/Constraints |
| 89 | + |
| 90 | +1. Virtual networks should be created to connect the nodes to the routers. |
| 91 | +2. All the VMs that are neither Openstack nor Openshift nodes, i.e. those that |
| 92 | + act as routers, need to be properly configured in order to support the BGP |
| 93 | + protocol. |
| 94 | +3. The spine/leaf topology separates the nodes into different L2 |
| 95 | + network segments, called racks. Each rack includes two leaves, some OCP |
| 96 | + nodes and some EDPM nodes. |
| 97 | +4. The Openstack services running on the EDPM nodes are installed using the BGP |
| 98 | + network, i.e. the Openstack services running on OCP nodes connect to the |
| 99 | + Openstack services running on EDPM nodes using BGP. There is no direct L2 |
| 100 | + network connectivity between them. OCP version 4.18 or higher is required |
| 101 | + because the Openstack Operators use the frr-k8s feature for this and frr-k8s |
| 102 | + is not available in OCP 4.16. |
| 103 | +5. Once Openstack is installed on them, both dataplane and controlplane |
| 104 | + connections are achieved using the BGP protocol. |
| 105 | +6. Tests are executed from the OCP worker to verify external connectivity. |
| 106 | + |
| 107 | +## Stages |
| 108 | + |
| 109 | +All stages must be executed in the order listed below. Everything is required unless otherwise indicated. |
| 110 | + |
| 111 | +1. [Configure taints on the OCP worker](configure-taints.md) |
| 112 | +2. [Disable RP filters on OCP nodes](disable-rp-filters.md) |
| 113 | +3. [Install the OpenStack K8S operators and their dependencies](../../common/) |
| 114 | +4. [Apply metallb customization required to run a speaker pod on the OCP tester node](metallb/) |
| 115 | +5. [Configuring networking and deploy the OpenStack control plane](control-plane.md) |
| 116 | +6. [Create BGPConfiguration after controplane is deployed](bgp-configuration.md) |
| 117 | +7. [Configure and deploy the dataplane - networker and compute nodes](data-plane.md) |
0 commit comments