CentOS Stream 10
Sponsored Link

Configure Network Bonding2024/12/20

 

Configure Network Bonding to bind multiple network interfaces into a single load balanced or fault-toleranced interface and so on.

The Network Teaming feature which is the same solution of network load-balancing or fault-tolerance is also provided.
Refer to the comparison of network teaming and bonding features below.

⇒ https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-comparison_of_network_teaming_to_bonding

There are some modes for configuring network bonding like follows.

Mode Mode Name Description
0 balance-rr Sets a round-robin policy for fault tolerance and load balancing.
Transmissions are received and sent out sequentially on each bonded member interface beginning with the first one available.
1 active-backup Sets an active-backup policy for fault tolerance.
Transmissions are received and sent out via the first available bonded member interface.
Another bonded member interface is only used if the active bonded member interface fails.
2 balance-xor Sets an XOR (exclusive-or) policy for fault tolerance and load balancing.
Using this method, the interface matches up the incoming request's MAC address with the MAC address for one of the member NICs.
Once this link is established, transmissions are sent out sequentially beginning with the first available interface.
3 broadcast Sets a broadcast policy for fault tolerance.
All transmissions are sent on all member interfaces.
4 802.3ad Sets an IEEE 802.3ad dynamic link aggregation policy.
Creates aggregation groups that share the same speed and duplex settings.
Transmits and receives on all members in the active aggregator. Requires a switch that is 802.3ad compliant.
5 balance-tlb Sets a Transmit Load Balancing (TLB) policy for fault tolerance and load balancing.
The outgoing traffic is distributed according to the current load on each member interface. Incoming traffic is received by the current member NIC.
If the receiving member fails, another member takes over the MAC address of the failed member.
6 balance-alb Sets an Active Load Balancing (ALB) policy for fault tolerance and load balancing.
Includes transmit and receive load balancing for IPV4 traffic.
Receive load balancing is achieved through ARP negotiation.

[1] Configure Network Bonding.
# display network devices

[root@dlp ~]#
nmcli device

DEVICE  TYPE      STATE                   CONNECTION
enp1s0  ethernet  connected               enp1s0
lo      loopback  connected (externally)  lo
enp8s0  ethernet  disconnected            --

# delete existing network connections

[root@dlp ~]#
nmcli connection delete enp1s0

Connection 'enp1s0' (074161b7-ffe6-3fdd-920c-0bb7e5e7dc58) successfully deleted.

[root@dlp ~]#
nmcli device

DEVICE  TYPE      STATE                   CONNECTION
lo      loopback  connected (externally)  lo
enp1s0  ethernet  disconnected            --
enp8s0  ethernet  disconnected            --

# add a new bonding device [bond0] (any name you like)
# refer to the description above for each mode (OK to specify with mode number for [mode=*])

[root@dlp ~]#
nmcli connection add type bond ifname bond0 con-name bond0 bond.options "mode=balance-rr"

Connection 'bond0' (fd9210d5-ace8-406e-91fd-d52a09c93bb2) successfully added.

# add member devices to the bonding device

[root@dlp ~]#
nmcli connection add type ethernet ifname enp1s0 master bond0

Connection 'bond-slave-enp1s0' (5d624991-b7d3-4809-a8f0-ff26e10e7298) successfully added.
[root@dlp ~]#
nmcli connection add type ethernet ifname enp8s0 master bond0

Connection 'bond-slave-enp8s0' (d5e907a9-45fd-40bc-b713-e77a1b5156fd) successfully added.

[root@dlp ~]#
nmcli device

DEVICE  TYPE      STATE                   CONNECTION
bond0   bond      connected               bond0
enp1s0  ethernet  connected               bond-slave-enp1s0
enp8s0  ethernet  connected               bond-slave-enp8s0
lo      loopback  connected (externally)  lo

[root@dlp ~]#
nmcli connection

NAME               UUID                                  TYPE      DEVICE
bond0              fd9210d5-ace8-406e-91fd-d52a09c93bb2  bond      bond0
bond-slave-enp1s0  5d624991-b7d3-4809-a8f0-ff26e10e7298  ethernet  enp1s0
bond-slave-enp8s0  d5e907a9-45fd-40bc-b713-e77a1b5156fd  ethernet  enp8s0
lo                 e2af9d71-093e-43c8-905e-9c439697c78a  loopback  lo

# set IP address and so on to the bonding device and restart it
# IP address

[root@dlp ~]#
nmcli connection modify bond0 ipv4.addresses 10.0.0.30/24
# gatway

[root@dlp ~]#
nmcli connection modify bond0 ipv4.gateway 10.0.0.1
# DNS - specify with space separated if set multiple DNS servers

[root@dlp ~]#
nmcli connection modify bond0 ipv4.dns "10.0.0.10 10.0.0.11"
# DNS search base - specify with space separated if set multiple domains

[root@dlp ~]#
nmcli connection modify bond0 ipv4.dns-search "srv.world"
[root@dlp ~]#
nmcli connection modify bond0 ipv4.method manual
[root@dlp ~]#
reboot

# verify bonding state

[root@dlp ~]#
cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v6.12.0-35.el10.x86_64

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: enp1s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:ec:51:ad
Slave queue ID: 0

Slave Interface: enp8s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:c8:25:47
Slave queue ID: 0

[root@dlp ~]#
ip address show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 52:54:00:ec:51:ad brd ff:ff:ff:ff:ff:ff
3: enp8s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 52:54:00:ec:51:ad brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:c8:25:47
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:ec:51:ad brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.30/24 brd 10.0.0.255 scope global noprefixroute bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::44f0:76e5:a7b0:2d92/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

# configuration files are stored under the place

[root@dlp ~]#
ll /etc/NetworkManager/system-connections

total 12
-rw-------. 1 root root 281 Dec 20 13:02 bond0.nmconnection
-rw-------. 1 root root 169 Dec 20 13:00 bond-slave-enp1s0.nmconnection
-rw-------. 1 root root 169 Dec 20 13:00 bond-slave-enp8s0.nmconnection
Matched Content