Configuring Network Bonding in Linux

Loading

Linux network bonding driver provides a method for joining multiple physical network interfaces into a single logical bonded interface thus aiming to provide us with a higher level of bandwidth and also ensuring network redundancy and load balancing at the NIC level.

Set up Network Bonding

As part of this assignment, I’ve attached two NICs on my VM. We will join two NICs (ens192, and ens122) and we will attempt to make them into one bonded NIC named bond0 and apply a round-robin policy for fault tolerance and load balancing.

Virtual MachineNetwork Interface NamePurposeBonded Interface
virt-scale-05ens192NIC_ABOND0
ens224NIC_BBOND0
ens225DRAC

Types of Network Load balancing

bond.options:  [balance-rr, active-backup, balance-xor, broadcast, 802.3ad, balance-tlb, balance-alb].

Display Current network devices

[root@virt-scale-05 ~]# nmcli device
DEVICE  TYPE      STATE                   CONNECTION
ens192  ethernet  connected               ens192
ens224  ethernet  connected               Wired connection 1
ens256  ethernet  connected               Wired connection 3
lo      loopback  connected (externally)  lo
[root@virt-scale-05 ~]#

[root@virt-scale-05 ~]# nmcli connection
NAME                UUID                                  TYPE      DEVICE
ens192              abff0fa6-e3fe-349f-aeb7-dfc4c7cf99af  ethernet  ens192
lo                  99652507-3507-4fb0-bdcf-6ae5e32e2a68  loopback  lo
Wired connection 1  710af5a3-d55c-3557-87df-80478e9576bb  ethernet  ens224
Wired connection 3  bca103c8-27f1-3d02-8f32-56e17ecfd72f  ethernet  ens256
Wired connection 2  c211ac69-97a2-3fb9-801e-fa9210026f3c  ethernet  --

 Delete existing network connections

[root@virt-scale-05 ~]# nmcli connection delete ens192
Connection 'ens192' (abff0fa6-e3fe-349f-aeb7-dfc4c7cf99af) successfully deleted.
[root@virt-scale-05 ~]# nmcli connection delete ens192
Error: unknown connection 'ens192'.
Error: cannot delete unknown connection(s): 'ens192'.
[root@virt-scale-05 ~]# nmcli connection delete Wired\ connection\ 1
Connection 'Wired connection 1' (710af5a3-d55c-3557-87df-80478e9576bb) successfully deleted.

Show Interfaces

[root@virt-scale-05 ~]#
[root@virt-scale-05 ~]# nmcli device
DEVICE  TYPE      STATE                   CONNECTION
ens256  ethernet  connected               Wired connection 3
lo      loopback  connected (externally)  lo
ens192  ethernet  disconnected            --
ens224  ethernet  disconnected            --
[root@virt-scale-05 ~]#

Add a new bonding device eg – [bond0]

[root@virt-scale-05 ~]# nmcli connection add type bond ifname bond0 con-name bond0 bond.options "mode=balance-rr"
Connection 'bond0' (6d13e394-1b7e-4867-9963-b65e9df709ec) successfully added.
[root@virt-scale-05 ~]#

Add member devices to the bonding device

[root@virt-scale-05 ~]# nmcli connection add type bond ifname bond0 con-name bond0 bond.options “mode=balance-rr”
Connection ‘bond0’ (6d13e394-1b7e-4867-9963-b65e9df709ec) successfully added.
[root@virt-scale-05 ~]#

Show Interfaces

[root@virt-scale-05 ~]# nmcli connection
NAME                UUID                                  TYPE      DEVICE
Wired connection 3  bca103c8-27f1-3d02-8f32-56e17ecfd72f  ethernet  ens256
bond0               6d13e394-1b7e-4867-9963-b65e9df709ec  bond      bond0
lo                  99652507-3507-4fb0-bdcf-6ae5e32e2a68  loopback  lo
bond-slave-ens192   a9d38f24-215c-4ea4-a414-6fdb7288d19f  ethernet  ens192
bond-slave-ens224   58a3778d-1270-4126-8624-3dd48e0ef267  ethernet  ens224
Wired connection 2  c211ac69-97a2-3fb9-801e-fa9210026f3c  ethernet  --
[root@virt-scale-05 ~]#

[root@virt-scale-05 ~]# nmcli device
DEVICE  TYPE      STATE                   CONNECTION
ens256  ethernet  connected               Wired connection 3
bond0   bond      connected               bond0
lo      loopback  connected (externally)  lo
ens192  ethernet  connected               bond-slave-ens192
ens224  ethernet  connected               bond-slave-ens224
[root@virt-scale-05 ~]#

Configure Networking on the bonding device

[root@virt-scale-05 ~]# 
nmcli connection modify bond0 ipv4.addresses 192.168.11.30/24
nmcli connection modify bond0 ipv4.gateway 192.168.11.253
nmcli connection modify bond0 ipv4.dns "192.168.11.10 192.168.11.11"
nmcli connection modify bond0 ipv4.dns-search "ash.local"
nmcli connection down bond0 && nmcli connection up bond0

Connection 'bond0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

Verify connection state

root@virt-scale-05 ~]# nmcli device
DEVICE  TYPE      STATE                   CONNECTION
ens256  ethernet  connected               Wired connection 3
bond0   bond      connected               bond0
lo      loopback  connected (externally)  lo
ens192  ethernet  connected               bond-slave-ens192
ens224  ethernet  connected               bond-slave-ens224
[root@virt-scale-05 ~]#
[root@virt-scale-05 ~]# nmcli connection
NAME                UUID                                  TYPE      DEVICE
Wired connection 3  bca103c8-27f1-3d02-8f32-56e17ecfd72f  ethernet  ens256
bond0               6d13e394-1b7e-4867-9963-b65e9df709ec  bond      bond0
lo                  99652507-3507-4fb0-bdcf-6ae5e32e2a68  loopback  lo
bond-slave-ens192   a9d38f24-215c-4ea4-a414-6fdb7288d19f  ethernet  ens192
bond-slave-ens224   58a3778d-1270-4126-8624-3dd48e0ef267  ethernet  ens224
Wired connection 2  c211ac69-97a2-3fb9-801e-fa9210026f3c  ethernet  --
[root@virt-scale-05 ~]#

Verify Bonding state

[root@virt-scale-05 ~]#  cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.14.0-284.30.1.el9_2.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: ens192
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:b5:87:40
Slave queue ID: 0

Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:b5:68:eb
Slave queue ID: 0
[root@virt-scale-05 ~]#

Location of Config files

[root@virt-scale-05 ~]# ll /etc/NetworkManager/system-connections/
total 16
-rw-------. 1 root root 309 Sep 17 11:10  bond0.nmconnection
-rw-------. 1 root root 166 Sep 17 10:45  bond-slave-ens192.nmconnection
-rw-------. 1 root root 166 Sep 17 10:45  bond-slave-ens224.nmconnection
-rw-------. 1 root root 241 Sep 17 10:27 'Wired connection 2.nmconnection'
[root@virt-scale-05 ~]#

List Network Connection


(Visited 35 times, 1 visits today)

By Ash Thomas

Ash Thomas is a seasoned IT professional with extensive experience as a technical expert, complemented by a keen interest in blockchain technology.