openSUSE Leap 16

Configure Network Bonding2026/01/13

 

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

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

dlp:~ #
nmcli device

DEVICE  TYPE      STATE                   CONNECTION
enp1s0  ethernet  connected               enp1s0
enp7s0  ethernet  connected               enp7s0
lo      loopback  connected (externally)  lo

# delete existing network connections

dlp:~ #
nmcli connection delete enp1s0

Connection 'enp1s0' (e1ebeb32-244e-4060-b873-4d2c551a404f) successfully deleted.

dlp:~ #
nmcli device

DEVICE  TYPE      STATE                   CONNECTION
lo      loopback  connected (externally)  lo
enp1s0  ethernet  disconnected            --
enp7s0  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=*])

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

Connection 'bond0' (6ee4cc9f-5fc6-42f6-84e6-d9860d61d1e2) successfully added.

# add member devices to the bonding device

dlp:~ #
nmcli connection add type ethernet ifname enp1s0 master bond0

Connection 'bond-slave-enp1s0' (2ddd224f-82d5-4318-bd41-aade65f04e82) successfully added.
dlp:~ #
nmcli connection add type ethernet ifname enp7s0 master bond0

Connection 'bond-slave-enp7s0' (4639b9f1-3ae1-4d41-b0f4-185acacdc4d3) successfully added.

dlp:~ #
nmcli device

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

dlp:~ #
nmcli connection

NAME               UUID                                  TYPE      DEVICE
bond0              6ee4cc9f-5fc6-42f6-84e6-d9860d61d1e2  bond      bond0
bond-slave-enp1s0  2ddd224f-82d5-4318-bd41-aade65f04e82  ethernet  enp1s0
bond-slave-enp7s0  4639b9f1-3ae1-4d41-b0f4-185acacdc4d3  ethernet  enp7s0
lo                 294925c9-e855-4532-a2d8-430ca2a11a89  loopback  lo

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

dlp:~ #
nmcli connection modify bond0 ipv4.addresses 10.0.0.30/24
# gatway

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

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

dlp:~ #
nmcli connection modify bond0 ipv4.dns-search "srv.world"
dlp:~ #
nmcli connection modify bond0 ipv4.method manual
dlp:~ #
reboot

# verify bonding state

dlp:~ #
cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v6.12.0-160000.6-default

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:c6:32:53
Slave queue ID: 0

Slave Interface: enp7s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:86:9d:49
Slave queue ID: 0

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 pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 52:54:00:c6:32:53 brd ff:ff:ff:ff:ff:ff
    altname enx525400c63253
3: enp7s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 52:54:00:c6:32:53 brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:86:9d:49
    altname enx525400869d49
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:c6:32:53 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::55c0:bd58:1094:acc8/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

# configuration files are stored under the place

dlp:~ #
ll /etc/NetworkManager/system-connections

total 12
-rw-------. 1 root root 169 Jan 13 09:17 bond-slave-enp1s0.nmconnection
-rw-------. 1 root root 169 Jan 13 09:17 bond-slave-enp7s0.nmconnection
-rw-------. 1 root root 289 Jan 13 09:19 bond0.nmconnection
Matched Content