Network planning

To make informed network design decisions before deploying RHOSO, take inventory of your networking requirements and overall environment.

Default physical networks

You can securely provision, manage, and isolate your OpenStack services by using the default physical networks on the control and data planes. These standard configurations connect your deployment to external networks and segment project resources.

A RHOSO deployment includes the following networks:

  • Control plane network
  • Designate network (optional)
  • Designate external network (optional)
  • External network (optional)
  • Internal API network
  • Octavia network (optional)
  • Storage management network (optional)
  • Storage network
  • Tenant (project) network

Network isolation

To secure system traffic and prevent performance bottlenecks, plan your RHOSO network isolation strategy. You can design isolated networks by defining subnets, selecting your IP protocol version, and configuring the physical NIC layout.

The RHOSO control plane services run as a Red Hat OpenShift Container Platform (RHOCP) workload. On the control plane, you use the NMState Operator to connect the worker nodes to the required isolated networks. You create a NetworkAttachmentDefinition (NAD) custom resource (CR) for each isolated network to attach service pods to the isolated networks, where needed. You use the MetalLB Operator to expose internal service endpoints on the isolated networks. By default, the public service endpoints are exposed as RHOCP routes.

You must also create an L2Advertisement resource to define how the VIPs are announced, and an IpAddressPool resource to configure which IPs can be used as VIPs. In layer 2 mode, one node assumes the responsibility of advertising a service to the local network.

To create the data plane network, you define a NetConfig custom resource (CR) and specify all the subnets for the data plane networks. You must define at least one control plane network for your data plane. You can also define VLAN networks to create network isolation for composable networks, such as Internal API, Storage, and External. Each network definition must include the IP address assignment.

IP address requirements

You can prevent IP address exhaustion and ensure your subnets are appropriately sized by planning your IP address allocations before deployment.

You must allocate addresses for several distinct address groups:

  • Virtual IP addresses (VIPs) for service endpoints.
  • IP addresses for control plane service pods.
  • IP addresses for data plane nodes.
  • IP addresses for node network configuration policies (NNCP).

IP address pool types

A RHOSO deployment uses four types of IP address pools that must not overlap.

MetalLB IPAddressPool for VIPs

The MetalLB Operator uses these IP addresses to expose internal service endpoints on the isolated networks. Each RHOSO service that requires network access gets a VIP from the appropriate network’s IPAddressPool. You configure these pools in the IPAddressPool custom resource (CR).

A typical deployment requires approximately 10-15 VIP addresses per isolated network, depending on which services you deploy. Services such as keystone, nova, neutron, cinder, glance, placement, and heat each require VIPs on the Internal API network.

Note

These services can share VIPs if their target ports are different.

The dnsmasq service typically requires a VIP on the ctlplane network. Additional services such as designate might require VIPs on other networks.

NetworkAttachmentDefinition IPAM ranges

The Whereabouts CNI IPAM plugin uses these IP addresses to assign to control plane service pods that are attached to the isolated networks. You configure these ranges in the NetworkAttachmentDefinition (net-attach-def) CR for each network.

The number of IP addresses required depends on the number of replicas for each service and the pod churn rate in your environment. A typical deployment allocates 40-50 IP addresses per network to accommodate multiple pod replicas and allow for pod recreation during updates or failures. Also, networks can have unique requirements that require pods to connect to them, which require additional IP addresses.

NetConfig allocation range for data plane nodes

The data plane network configuration uses these IP addresses to assign static IP addresses to data plane Compute, Networker, and Storage nodes. You configure these ranges in the NetConfig CR for each network.

The number of IP addresses required equals the number of data plane nodes that connect to each network. For example, if you have 100 compute nodes, you need at least 100 IP addresses per network attached to the nodes or node sets.

NodeNetworkConfigurationPolicy (NNCP) ranges for RHOCP worker nodes

The NMState Operator uses these IP addresses to assign static IP addresses to the Red Hat OpenShift Container Platform (RHOCP) worker node interfaces for the isolated networks. You configure these IP addresses in the NodeNetworkConfigurationPolicy (nncp) CR for each worker node.

The number of IP addresses required equals the number of RHOCP worker nodes in your cluster. Each worker node requires one IP address per isolated network that requires worker node connectivity. For example, if you have 3 worker nodes, you need at least 3 IP addresses from the NNCP range for each applicable network, such as internalapi, storage, and tenant. A typical deployment allocates 10-15 IP addresses per network to allow for additional worker nodes.

Note

Not all isolated networks require NNCP configuration. Networks such as external and octavia typically do not require static IP addresses on the RHOCP worker nodes.

Sizing considerations

When planning your IP address ranges, consider these factors:

  • Minimum subnet size: Use at least a /24 (256 addresses) subnet for each isolated network to provide sufficient addresses for all three pool types and allow for growth.
  • Service pod replicas: High-availability deployments run multiple replicas of each service, increasing the number of IP addresses required in the NetworkAttachmentDefinition IPAM ranges.
  • Pod recreation: During updates or failures, new pods might be created before old pods are terminated, temporarily requiring additional IP addresses from the NetworkAttachmentDefinition IPAM ranges.
  • Future growth: Plan for additional compute nodes, storage nodes, and services that you might deploy later.
  • Non-overlapping ranges: Ensure that the pool types do not overlap. A common practice is to allocate:
    • Data plane node addresses at the upper end of the subnet (for example, .100-.250)
    • VIP addresses in the higher range (for example, .80-.90)
    • Control plane pod addresses in the middle range (for example, .30-.70)
    • Node network configuration policy (NNCPs) addresses at the lower end (for example, .10-.20)

Example IP address allocation

The following example shows how to allocate IP addresses from a 172.17.0.0/24 subnet for the internalapi network:

  • Data plane nodes (NetConfig): 172.17.0.100 - 172.17.0.250 (151 addresses)
  • VIPs (IPAddressPool): 172.17.0.80 - 172.17.0.90 (11 addresses)
  • Control plane pods (net-attach-def): 172.17.0.30 - 172.17.0.70 (41 addresses)
  • RHOCP worker nodes (nncp): 172.17.0.10 - 172.17.0.20 (11 addresses)
Note

The IP address allocations for VIPs and control plane pods depends on the usage of the specific network per service.

IP version support

To meet your network addressing and compliance needs, you can deploy either IPv4 or IPv6 across your physical networks. For certain use cases, dual-stack (IPv4 and IPv6) is also supported.

There is one exception. After RHOSO deployment, external networks that use floating IPs must use IPv4 or dual-stack (IPv4 and IPv6). IPv6 uses Global Unicast Addresses (GUAs) instead of NAT and floating IP addresses. The Networking (neutron) service expects the IPv6 addressing between project networks to use GUAs, with no overlap in GUAs across the project networks, and therefore can be routed without NAT. With dual-stack, you can use floating IP addresses to only reach the IP addresses on IPv4 subnets.

In addition to supporting both IPv4 and IPv6, Provider, Provisioning, and Tenant (Project) networks also support dual-stack (IPv4 and IPv6) for the use cases described in the following table:

Table 1. Internet Protocol (IP) version support for Provider, Provisioning, and Tenant networks
Network Use case Supported IP versions

Provider

Networking

* Dual-stack

* IPv6

* IPv4

Provisioning

Bare Metal Provisioning service (ironic) on the data plane

* IPv6

Provisioning

PXE and DHCP

* Dual-stack

* IPv6

* IPv4

Provisioning

IPMI, other BMC interfaces [1]

* Dual-stack

* IPv6

* IPv4

Tenant (Project)[2]

Networking

* Dual-stack

* IPv6

* IPv4

Tenant (Project)

Network endpoints [3]

* Dual-stack

* IPv6 [4]

* IPv4

[1] RHOSO communicates with baseboard management controller (BMC) interfaces over the Provisioning network. If BMC interfaces support IPv4, IPv6, or dual-stack, tools that are not part of RHOSO can use IPv6 to communicate with the BMCs.

[2] You configure tenant (project) networks after RHOSO deployment.

[3] Endpoints refer to the IP address of the network hosting the project network tunnels, not the project networks themselves.

[4] IPv6 for network endpoints supports only Geneve.

NIC requirements

You can isolate control plane traffic and support a compact RHOSO deployment by provisioning at least two physical network interface cards (NICs) on each RHOSO control plane worker node.

One NIC on each worker node serves OpenShift. It provides connection between OpenShift components in the OpenShift cluster network.

The other NIC serves OpenStack. It connects the OpenStack services running on the worker nodes to the isolated networks on the RHOSO data plane.

NICs and OVN gateways

A deployment can have OVN gateways for external network traffic. You can deploy OVN gateways on the control plane or the data plane.

If deploy gateways on the control plane, gateway requires a dedicated NIC on a control plane node.

You can also deploy OVN gateways on dedicated Networker nodes on the data plane. Each Networker node has at least one NIC to connect the Networker node to the control plane and the external network.

When you run gateway services on the control plane, OVN version updates might cause some disruption of gateway traffic, because OpenShift requires service restarts for OVN updates. Data plane nodes, controlled by RHEL, do not require service restart after an OVN version updates.

NICs and scaling considerations

Network requirements vary based on environment and business requirements. For example, you might require the following networking capabilities:

  • Dedicated NICs on control plane nodes for particular RHOSP isolated networks.
  • Port switches with VLANs for the required isolated networks.

Consult with your RHOCP and network administrators about whether these are requirements in your deployment. Each Compute node requires at least one NIC. You can scale up to provide connections to the isolated networks.

os-net-config network providers

RHOSO uses os-net-config to configure network properties on your data plane nodes. You can choose between two os-net-config providers: the legacy ifcfg provider and its replacement, the nmstate provider. Eventually, support of the ifcfg provider will be deprecated and removed.

In most cases, you should use the nmstate provider. If you rely on features available in the ifcfg provider but not yet available in the nmstate provider, contact your Red Hat support representative. In this RHOSO release, the default os-net-config provider in RHOSO is nmstate. To use the ifcfg provider instead, set edpm_network_config_nmstate: false in your OpenStackDataPlaneNodeSet CR.

Network functions virtualization

Network functions virtualization (NFV) is a software-based solution that helps communication service providers (CSPs) to move beyond the traditional, proprietary hardware to achieve greater efficiency and agility and to reduce operational costs.

Using NFV in a Red Hat OpenStack Services on OpenShift (RHOSO) environment allows for IT and network convergence by providing a virtualized infrastructure that uses the standard virtualization technologies to virtualize network functions (VNFs) that run on hardware devices such as switches, routers, and storage. An NFV environment takes advantage of Data Plane Development Kit (DPDK) and Single Root I/O Virtualization (SR-IOV) technologies to improve packet processing speeds.