Skip to content

Commit 1e179f5

Browse files
committed
OSDOCS-14356-New: Added bond best practices info to networking docs
1 parent c63a8f6 commit 1e179f5

15 files changed

+147
-49
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
@@ -84,9 +84,6 @@ include::modules/creating-manifest-file-customized-br-ex-bridge.adoc[leveloffset
8484
// Scale each machine set to compute nodes
8585
include::modules/creating-scaling-machine-sets-compute-nodes-networking.adoc[leveloffset=+2]
8686

87-
// Enabling OVS balance-slb mode for your cluster
88-
include::modules/enabling-OVS-balance-slb-mode.adoc[leveloffset=+1]
89-
9087
include::modules/installation-infrastructure-user-infra.adoc[leveloffset=+1]
9188

9289
[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
@@ -99,9 +99,6 @@ include::modules/creating-manifest-file-customized-br-ex-bridge.adoc[leveloffset
9999
// Scale each machine set to compute nodes
100100
include::modules/creating-scaling-machine-sets-compute-nodes-networking.adoc[leveloffset=+2]
101101

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

107104
[role="_additional-resources"]

modules/configuring-localnet-switched-topology.adoc

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
[role="_abstract"]
1010
The switched `localnet` topology interconnects the workloads created as Network Attachment Definitions (NADs) through a cluster-wide logical switch to a physical network.
1111

12-
You must map a secondary network to the OVS bridge to use it as an OVN-Kubernetes secondary network. Bridge mappings allow network traffic to reach the physical network. A bridge mapping associates a physical network name, also known as an interface label, to a bridge created with Open vSwitch (OVS).
12+
You must map a secondary network to the ovs-bridge to use it as an OVN-Kubernetes secondary network. Bridge mappings allow network traffic to reach the physical network. A bridge mapping associates a physical network name, also known as an interface label, to a bridge created with Open vSwitch (OVS).
1313

1414
You can create an `NodeNetworkConfigurationPolicy` (NNCP) object, part of the `nmstate.io/v1` API group, to declaratively create the mapping. This API is provided by the NMState Operator. By using this API you can apply the bridge mapping to nodes that match your specified `nodeSelector` expression, such as `node-role.kubernetes.io/worker: ''`. With this declarative approach, the NMState Operator applies secondary network configuration to all nodes specified by the node selector automatically and transparently.
1515

@@ -18,6 +18,11 @@ When attaching a secondary network, you can either use the existing `br-ex` brid
1818
- If your nodes include only a single network interface, you must use the existing bridge. This network interface is owned and managed by OVN-Kubernetes and you must not remove it from the `br-ex` bridge or alter the interface configuration. If you remove or alter the network interface, your cluster network stops working correctly.
1919
- If your nodes include several network interfaces, you can attach a different network interface to a new bridge, and use that for your secondary network. This approach provides for traffic isolation from your primary cluster network.
2020
21+
[NOTE]
22+
====
23+
As a postinstallation task, you cannot make configuration changes to the `br-ex` bridge or its underlying interfaces in the `NodeNetworkConfigurationPolicy` (NNCP) resource. As a workaround, use a secondary network interface connected to your host or switch.
24+
====
25+
2126
The `localnet1` network is mapped to the `br-ex` bridge in the following sharing-a-bridge example:
2227

2328
[source,yaml]
@@ -35,17 +40,16 @@ spec:
3540
- localnet: localnet1
3641
bridge: br-ex
3742
state: present
38-
# ...
3943
----
40-
44+
+
4145
where:
42-
43-
`name`:: The name for the configuration object.
46+
+
47+
`metadata.name`:: The name for the configuration object.
4448
`node-role.kubernetes.io/worker`:: A node selector that specifies the nodes to apply the node network configuration policy to.
4549
`localnet`:: The name for the secondary network from which traffic is forwarded to the OVS bridge. This secondary network must match the name of the `spec.config.name` field of the `NetworkAttachmentDefinition` CRD that defines the OVN-Kubernetes secondary network.
4650
`bridge`:: The name of the OVS bridge on the node. This value is required only if you specify `state: present`.
4751
`state`:: The state for the mapping. Must be either `present` to add the bridge or `absent` to remove the bridge. The default value is `present`.
48-
52+
+
4953
The following JSON example configures a localnet secondary network that is named `localnet1`. Note that the value for the `mtu` parameter must match the MTU value that was set for the secondary network interface that is mapped to the `br-ex` bridge interface.
5054

5155
[source,json]
@@ -96,18 +100,18 @@ spec:
96100
bridge: ovs-br1
97101
state: present
98102
----
99-
103+
+
100104
where:
101-
102-
`name`:: Specifies the name of the configuration object.
105+
+
106+
`metadata.name`:: Specifies the name of the configuration object.
103107
`node-role.kubernetes.io/worker`:: Specifies a node selector that identifies the nodes to which the node network configuration policy applies.
104108
`interfaces.name`:: Specifies a new OVS bridge that operates separately from the default bridge used by OVN-Kubernetes for cluster traffic.
105109
`mcast-snooping-enable`:: Specifies whether to enable multicast snooping. When enabled, multicast snooping prevents network devices from flooding multicast traffic to all network members. By default, an OVS bridge does not enable multicast snooping. The default value is `false`.
106-
``port.name`:: Specifies the network device on the host system to associate with the new OVS bridge.
107-
`bridge-mappings.localnet`:: Specifies the name of the secondary network that forwards traffic to the OVS bridge. This name must match the value of the `spec.config.name` field in the `NetworkAttachmentDefinition` CRD that defines the OVN-Kubernetes secondary network.
108-
`bridge-mappings.bridge`:: Specifies the name of the OVS bridge on the node. The value is required only when `state: present` is set.
109-
`bridge-mappings.state`:: Specifies the state of the mapping. Valid values are `present` to add the bridge or `absent` to remove the bridge. The default value is `present`.
110-
110+
`port.name`:: Specifies the network device on the host system to associate with the new OVS bridge.
111+
`localnet`:: Specifies the name of the secondary network that forwards traffic to the OVS bridge. This name must match the value of the `spec.config.name` field in the `NetworkAttachmentDefinition` CRD that defines the OVN-Kubernetes secondary network.
112+
`bridge`:: Specifies the name of the OVS bridge on the node. The value is required only when `state: present` is set.
113+
`state`:: Specifies the state of the mapping. Valid values are `present` to add the bridge or `absent` to remove the bridge. The default value is `present`.
114+
+
111115
The following JSON example configures a localnet secondary network that is named `localnet2`. Note that the value for the `mtu` parameter must match the MTU value that was set for the `eth1` secondary network interface.
112116

113117
[source,json]
@@ -125,4 +129,3 @@ The following JSON example configures a localnet secondary network that is named
125129
"excludeSubnets": "10.100.200.0/29"
126130
}
127131
----
128-

modules/configuring-ovnk-use-second-ovs-bridge.adoc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ Currently, MEG is unsupported for use with other egress features, such as egress
1717

1818
You must define the additional bridge in an interface definition of a machine configuration manifest file. The Machine Config Operator uses the manifest to create a new file at `/etc/ovnk/extra_bridge` on the host. The new file includes the name of the network interface that the additional OVS bridge configures for a node.
1919

20+
[IMPORTANT]
21+
====
22+
Do not use the `nmstate` API to make configuration changes to the secondary interface that is defined in the `/etc/ovnk/extra_bridge` directory path. The `configure-ovs.sh` configuration script creates and manages OVS bridge interfaces, so any interruptive changes to these interfaces by the `nmstate` API can lead to network configuration instability.
23+
====
24+
2025
After you create and edit the manifest file, the Machine Config Operator completes tasks in the following order:
2126

2227
. Drains nodes in singular order based on the selected machine configuration pool.
@@ -39,9 +44,9 @@ For more information about useful situations for the additional `br-ex1` bridge
3944
+
4045
[IMPORTANT]
4146
====
42-
Do not use the Kubernetes NMState Operator to define or a `NodeNetworkConfigurationPolicy` (NNCP) manifest file to define the additional interface.
47+
Do not use the Kubernetes NMState Operator or a `NodeNetworkConfigurationPolicy` (NNCP) manifest file to define the additional interface. Ensure that the additional interface or sub-interfaces when defining a `bond` interface are not used by an existing `br-ex` OVN Kubernetes network deployment.
4348

44-
Also ensure that the additional interface or sub-interfaces when defining a `bond` interface are not used by an existing `br-ex` OVN Kubernetes network deployment.
49+
As a postinstallation task, you cannot make configuration changes to the `br-ex` bridge or its underlying interfaces. As a workaround, use a secondary network interface connected to your host or switch.
4550
====
4651
+
4752
.. Create the following interface definition files. These files get added to a machine configuration manifest file so that host nodes can access the definition files.

modules/creating-manifest-file-customized-br-ex-bridge.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ endif::postinstall-bare-metal[]
2121
ifdef::postinstall-bare-metal[]
2222
As an alternative to using the `configure-ovs.sh` shell script to set a `br-ex` bridge on a bare-metal platform, you can create a `NodeNetworkConfigurationPolicy` (NNCP) custom resource (CR) that includes an NMState configuration file.
2323

24+
[NOTE]
25+
====
26+
As a postinstallation task, do not make configuration changes to the `br-ex` bridge or its underlying interfaces.
27+
====
28+
2429
The Kubernetes NMState Operator uses the NMState configuration file to create a customized `br-ex` bridge network configuration on each node in your cluster.
2530

2631
[IMPORTANT]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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="enable-active-backup-mode_{context}"]
7+
= Enable active-backup mode for your cluster
8+
9+
[role="_abstract"]
10+
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:
11+
12+
* An active port where one physical interface sends and receives traffic at any given time.
13+
* A standby port where all other ports act as backup links and continously monitor their link status.
14+
15+
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.
16+

modules/installation-network-user-infra.adoc

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

9595
[NOTE]
9696
====
97-
* 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.
97+
* 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.
9898
9999
* 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.
100100
====
101101
endif::ibm-z[]
102102

103-
The Kubernetes API server must be able to resolve the node names of the cluster
104-
machines. If the API servers and worker nodes are in different zones, you can
105-
configure a default DNS search zone to allow the API server to resolve the
106-
node names. Another supported approach is to always refer to hosts by their
107-
fully-qualified domain names in both the node objects and all DNS requests.
103+
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.
108104
endif::azure,gcp[]
109105

110106
ifndef::ibm-z,azure[]
@@ -119,9 +115,7 @@ endif::ibm-z,azure[]
119115
[id="installation-network-connectivity-user-infra_{context}"]
120116
== Network connectivity requirements
121117

122-
You must configure the network connectivity between machines to allow {product-title} cluster
123-
components to communicate. Each machine must be able to resolve the hostnames
124-
of all other machines in the cluster.
118+
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.
125119

126120
This section provides details about the ports that are required.
127121

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

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ endif::[]
4545
[id="installation-user-infra-machines-static-network_{context}"]
4646
= Advanced {op-system} installation reference
4747

48+
[role="_abstract"]
4849
This section illustrates the networking configuration and other advanced options that allow you to modify the {op-system-first} manual installation process. The following tables describe the kernel arguments and command-line options you can use with the {op-system} live installer and the `coreos-installer` command.
4950

5051
[id="installation-user-infra-machines-routing-bonding_{context}"]
@@ -172,7 +173,6 @@ ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
172173
ip=::::core0.example.com:enp2s0:none
173174
----
174175

175-
176176
=== Combining DHCP and static IP configurations
177177

178178
You can combine DHCP and static IP configurations on systems with multiple network interfaces, for example:
@@ -183,7 +183,6 @@ ip=enp1s0:dhcp
183183
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
184184
----
185185

186-
187186
=== Configuring VLANs on individual interfaces
188187

189188
Optional: You can configure VLANs on individual interfaces by using the `vlan=` parameter.
@@ -220,7 +219,9 @@ ifndef::ibm-z-kvm[]
220219

221220
=== Bonding multiple network interfaces to a single interface
222221

223-
Optional: You can bond multiple network interfaces to a single interface by using the `bond=` option. Refer to the following examples:
222+
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.
223+
224+
.Procedure
224225

225226
* The syntax for configuring a bonded interface is: `bond=<name>[:<network_interfaces>][:options]`
226227
+
@@ -229,30 +230,28 @@ and _options_ is a comma-separated list of bonding options. Enter `modinfo bondi
229230

230231
* When you create a bonded interface using `bond=`, you must specify how the IP address is assigned and other
231232
information for the bonded interface.
232-
233+
+
233234
** To configure the bonded interface to use DHCP, set the bond's IP address to `dhcp`. For example:
234235
+
235236
[source,terminal]
236237
----
237-
bond=bond0:em1,em2:mode=active-backup
238238
ip=bond0:dhcp
239239
----
240-
240+
+
241241
** To configure the bonded interface to use a static IP address, enter the specific IP address you want and related information. For example:
242242
ifndef::ibm-z[]
243243
+
244244
[source,terminal]
245245
----
246-
bond=bond0:em1,em2:mode=active-backup
247246
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0:none
248247
----
249248
endif::ibm-z[]
250249
ifdef::ibm-z[]
251-
250+
+
252251
[source,terminal]
253252
----
254-
bond=bond0:em1,em2:mode=active-backup,fail_over_mac=1
255-
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0:none
253+
bond=bond0:em1,em2:mode=active-backup ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0:none::AA:BB:CC:DD:EE:FF ip=em1:none::AA:BB:CC:DD:EE:FF
254+
ip=em2:none::AA:BB:CC:DD:EE:FF
256255
----
257256

258257
Always set the `fail_over_mac=1` option in active-backup mode, to avoid problems when shared OSA/RoCE cards are used.
@@ -287,9 +286,9 @@ ifndef::ibm-z[]
287286

288287
=== Bonding multiple SR-IOV network interfaces to a dual port NIC interface
289288

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

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

294293
ifndef::installing-ibm-power[]
295294
. 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 +307,14 @@ The following examples illustrate the syntax you must use:
308307

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

311-
** To configure the bonded interface to use DHCP, set the bond's IP address to `dhcp`. For example:
310+
** To configure the bonded interface to use DHCP, set the `ip` parameter to `dhcp` as demonstrated in the following example:
312311
+
313312
[source,terminal]
314313
----
315314
bond=bond0:eno1f0,eno2f0:mode=active-backup
316-
ip=bond0:dhcp
315+
ip=bond0:dhcp::AA:BB:CC:DD:EE:FF
316+
ip=eno1f0:none::AA:BB:CC:DD:EE:FF
317+
ip=eno2f0:none::AA:BB:CC:DD:EE:FF
317318
----
318319

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

0 commit comments

Comments
 (0)