Skip to content

Commit 4bab646

Browse files
committed
OSDOCS-14356-New: Added bond best practices info to networking docs
1 parent 29a9301 commit 4bab646

13 files changed

+107
-25
lines changed

_topic_maps/_topic_map.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,6 +1754,8 @@ Topics:
17541754
File: verifying-connectivity-endpoint
17551755
- Name: Changing the cluster network MTU
17561756
File: changing-cluster-network-mtu
1757+
- Name: Network bonding considerations
1758+
File: network-bonding-considerations
17571759
- Name: Using Stream Control Transmission Protocol
17581760
File: using-sctp
17591761
- Name: Associating secondary interfaces metrics to network attachments

installing/installing_bare_metal/ipi/ipi-install-installation-workflow.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ include::modules/creating-manifest-file-customized-br-ex-bridge.adoc[leveloffset
3838
// Scale each machine set to compute nodes
3939
include::modules/creating-scaling-machine-sets-compute-nodes-networking.adoc[leveloffset=+2]
4040

41-
// Enabling OVS balance-slb mode for your cluster
42-
include::modules/enabling-OVS-balance-slb-mode.adoc[leveloffset=+1]
43-
4441
// Establishing communication between subnets
4542
include::modules/ipi-install-establishing-communication-between-subnets.adoc[leveloffset=+1]
4643

installing/installing_bare_metal/upi/installing-bare-metal-network-customizations.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,6 @@ include::modules/creating-manifest-file-customized-br-ex-bridge.adoc[leveloffset
7979
// Scale each machine set to compute nodes
8080
include::modules/creating-scaling-machine-sets-compute-nodes-networking.adoc[leveloffset=+2]
8181

82-
// Enabling OVS balance-slb mode for your cluster
83-
include::modules/enabling-OVS-balance-slb-mode.adoc[leveloffset=+1]
84-
8582
include::modules/installation-infrastructure-user-infra.adoc[leveloffset=+1]
8683

8784
[role="_additional-resources"]

installing/installing_bare_metal/upi/installing-bare-metal.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,6 @@ include::modules/creating-manifest-file-customized-br-ex-bridge.adoc[leveloffset
100100
// Scale each machine set to compute nodes
101101
include::modules/creating-scaling-machine-sets-compute-nodes-networking.adoc[leveloffset=+2]
102102

103-
// Enabling OVS balance-slb mode for your cluster
104-
include::modules/enabling-OVS-balance-slb-mode.adoc[leveloffset=+1]
105-
106103
include::modules/installation-infrastructure-user-infra.adoc[leveloffset=+1]
107104

108105
[role="_additional-resources"]

installing/installing_bare_metal/upi/installing-restricted-networks-bare-metal.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,6 @@ include::modules/creating-manifest-file-customized-br-ex-bridge.adoc[leveloffset
9494
// Scale each machine set to compute nodes
9595
include::modules/creating-scaling-machine-sets-compute-nodes-networking.adoc[leveloffset=+2]
9696

97-
// Enabling OVS balance-slb mode for your cluster
98-
include::modules/enabling-OVS-balance-slb-mode.adoc[leveloffset=+1]
99-
10097
include::modules/installation-infrastructure-user-infra.adoc[leveloffset=+1]
10198

10299
[role="_additional-resources"]

modules/enabling-OVS-balance-slb-mode.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ The following diagram shows `balance-slb` mode on a simple cluster infrastructur
2020
.OVS `balance-slb` mode operating on a localnet with two NADs
2121
image::552_OpenShift_slb_mode_0625.png[OVS `balance-slb` mode ` operating on a localnet with two NADs]
2222

23+
[NOTE]
24+
====
25+
Consider that an OVS bond with `balance-slb` mode enabled might experience issues if the bond forwards unknown unicast traffic from one physical network interface controller (NIC) into the phsycial network through another NIC. This situation can result in an Layer 2 loop, or _bridge loop_, that in turn causes _MAC flapping_.
26+
27+
MAC flapping causes the same MAC address to exist in many network locations for a period of time. For example, a remote switch does not learn the MAC address for the destination of a unicast packet and this causes the packet to exist on all links available on the SLB bond configuration. As a workaround for this issue, you can set the bond to `active-backup` mode during MAC address assignment and then switch the bond to use `balance-slb` mode.
28+
====
29+
2330
You can integrate the `balance-slb` mode interface into primary or secondary network types by using OVS bonding. Note the following points about OVS bonding:
2431

2532
* Supports the OVN-Kubernetes CNI plugin and easily integrates with the plugin.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * networking/advanced_networking/network-bonding-considerations.adoc
4+
5+
:_mod-docs-content-type: PROCEDURE
6+
[id="enabling-active-backup-mode_{context}"]
7+
= Enabling active-backup mode for your cluster
8+
9+
The `active-backup` mode provides fault tolerance for network connections by switching to a backup link where the primary link fails. The mode specifies the following ports for your cluster:
10+
11+
* An active port where one physical interface sends and receives traffic at any given time.
12+
* A standby port where all other ports act as backup links and continously monitor their link status.
13+
14+
During a failover process, if an active port or its link fails, the bonding logic switches all network traffic to a standby port. This standby port becomes the new active port. For failover to work, all ports in a bond must share the same Media Access Control (MAC) address.
15+

modules/installation-network-user-infra.adoc

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,13 @@ During the initial boot, the machines require an IP address configuration that i
8989

9090
[NOTE]
9191
====
92-
* It is recommended to use a DHCP server for long-term management of the cluster machines. Ensure that the DHCP server is configured to provide persistent IP addresses, DNS server information, and hostnames to the cluster machines.
92+
* Consider using a DHCP server for long-term management of the cluster machines. Ensure that the DHCP server is configured to provide persistent IP addresses, DNS server information, and hostnames to the cluster machines.
9393
9494
* If a DHCP service is not available for your user-provisioned infrastructure, you can instead provide the IP networking configuration and the address of the DNS server to the nodes at {op-system} install time. These can be passed as boot arguments if you are installing from an ISO image. See the _Installing {op-system} and starting the {product-title} bootstrap process_ section for more information about static IP provisioning and advanced networking options.
9595
====
9696
endif::ibm-z[]
9797

98-
The Kubernetes API server must be able to resolve the node names of the cluster
99-
machines. If the API servers and worker nodes are in different zones, you can
100-
configure a default DNS search zone to allow the API server to resolve the
101-
node names. Another supported approach is to always refer to hosts by their
102-
fully-qualified domain names in both the node objects and all DNS requests.
98+
The Kubernetes API server must be able to resolve the node names of the cluster machines. If the API servers and worker nodes are in different zones, you can configure a default DNS search zone to allow the API server to resolve the node names. Another supported approach is to always refer to hosts by their fully-qualified domain names in both the node objects and all DNS requests.
10399
endif::azure,gcp[]
104100

105101
ifndef::ibm-z,azure[]
@@ -114,9 +110,7 @@ endif::ibm-z,azure[]
114110
[id="installation-network-connectivity-user-infra_{context}"]
115111
== Network connectivity requirements
116112

117-
You must configure the network connectivity between machines to allow {product-title} cluster
118-
components to communicate. Each machine must be able to resolve the hostnames
119-
of all other machines in the cluster.
113+
You must configure the network connectivity between machines to allow {product-title} cluster components to communicate. Each machine must be able to resolve the hostnames of all other machines in the cluster.
120114

121115
This section provides details about the ports that are required.
122116

modules/installation-user-infra-machines-static-network.adoc

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,9 @@ ifndef::ibm-z-kvm[]
220220

221221
=== Bonding multiple network interfaces to a single interface
222222

223-
Optional: You can bond multiple network interfaces to a single interface by using the `bond=` option. Refer to the following examples:
223+
As an optional configuration, you can bond multiple network interfaces to a single interface by using the `bond=` option. To apply this configuration to your cluster, complete the procedure steps for each node that runs on your cluster.
224+
225+
.Procedure
224226

225227
* The syntax for configuring a bonded interface is: `bond=<name>[:<network_interfaces>][:options]`
226228
+
@@ -287,9 +289,9 @@ ifndef::ibm-z[]
287289

288290
=== Bonding multiple SR-IOV network interfaces to a dual port NIC interface
289291

290-
Optional: You can bond multiple SR-IOV network interfaces to a dual port NIC interface by using the `bond=` option.
292+
As an optional configuration, you can bond multiple SR-IOV network interfaces to a dual port NIC interface by using the `bond=` option.
291293

292-
On each node, you must perform the following tasks:
294+
.Procedure
293295

294296
ifndef::installing-ibm-power[]
295297
. Create the SR-IOV virtual functions (VFs) following the guidance in link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_virtualization/managing-virtual-devices_configuring-and-managing-virtualization#managing-sr-iov-devices_managing-virtual-devices[Managing SR-IOV devices]. Follow the procedure in the "Attaching SR-IOV networking devices to virtual machines" section.
@@ -308,12 +310,13 @@ The following examples illustrate the syntax you must use:
308310

309311
* When you create a bonded interface using `bond=`, you must specify how the IP address is assigned and other information for the bonded interface.
310312

311-
** To configure the bonded interface to use DHCP, set the bond's IP address to `dhcp`. For example:
313+
** To configure the bonded interface to use DHCP, set the `ip` parameter to `dhcp` as demonstrated in the following example:
312314
+
313315
[source,terminal]
314316
----
315317
bond=bond0:eno1f0,eno2f0:mode=active-backup
316318
ip=bond0:dhcp
319+
fail_over_mac=0
317320
----
318321

319322
** To configure the bonded interface to use a static IP address, enter the specific IP address you want and related information. For example:

modules/nw-kernel-bonding.adoc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * networking/advanced_networking/network-bonding-considerations.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="nw-kernel-bonding.adoc_{context}"]
7+
= Kernel bonding
8+
9+
Kernel bonding is a built-in Linux kernel function where link aggregation can exist among many Ethernet interfaces to create a single logical physical interface. Kernel bonding is the default mode if no bond interfaces depend on OVS bonds. This bonding type does not give the same level of customization as supported OVS bonding.
10+
11+
For `kernel-bonding` mode, the bond interfaces exist outside, which means they are not in the data path, of the bridge interface. Network traffic in this mode is not sent or received on the bond interface port but instead requires additional bridging capabilities for MAC address assignment at the kernel level.
12+
13+
If you enabled `kernel-bonding` mode on network controller interfaces (NICs) for your nodes, you must specify a Media Access Control (MAC) address failover. This configuration prevents node communication issues with the bond interfaces, such as `eno1f0` and `eno2f0`.
14+
15+
Red Hat supports only the following value for the `fail_over_mac` parameter:
16+
17+
* `0`: Specifies the `none` value and this is the default value that disables MAC address failover so that all compute nodes receive the same MAC address as the bond interface. With this setting, packets might be sent to inactive nodes.
18+
19+
Red Hat does not support the following values for the `fail_over_mac` parameter:
20+
21+
* `1`: Specifies the `active` value and sets the MAC address of the primary bond interface to always remain the same as active nodes. If during a failover, the MAC address of a node changes, the MAC address of the bond interface changes to match the new MAC address of the node.
22+
* `2`: Specifies the `follow` value so that during a failover, an active node gets the MAC address of the bond interface and a formerly active node receives the MAC address of the newly active node.
23+

0 commit comments

Comments
 (0)