How to bond NIC Teaming on Linux Systems
NIC Teaming on Linux Systems
Steps to bond Ethernet Channel NIC Teaming on Linux Systems is explained in this article. It enables more than one Network Interfaces Card (NIC) to a single virtual NIC card that increase the bandwidth and provide the NIC Cards redunancy.
It has six types of Channel Bond in NIC teaming. Load balancing (Round-Robin) and Active-Backup are the two channel bond that is widely used.
0: Load balancing (Round-Robin) : It transmit traffic in sequential order and provide load balancing as well as fault tolerance.
1: Active-Backup : At any given point of time, only one slave NIC is active.
2: XOR policy: This selects the same slave for each destination MAC address. This mode provides load balancing and fault tolerance.
3: Broadcast policy: transmits everything on all slave interfaces. This mode provides fault tolerance.
4: Creates aggregation groups that share the same speed and duplex settings.
5: Adaptive transmit load balancing: channel bonding that does not require any special switch support.
To configure NIC team for activebackup
Create a new connection for NIC teaming using nmcli command. This will act as a master.
[root@linuxhelp ~]# nmcli connection add type team ifname team config ' {" runner" :{" name" :" activebackup" }}'
Connection ' team-team' (df8df4b3-bc97-4983-8775-5c16051a5e3a) successfully added
Now set the IP for the team connection
[root@linuxhelp ~]# nmcli connection modify team-team ipv4.addresses 192.168.5.100/24 ipv4.method manual.
Now add two or more network interfaces to the team (master), this interfaces is going to act as a slave for that master. Here we have two interfaces eno33554984 and eno50332208.
[root@linuxhelp ~]# nmcli connection add type team-slave ifname eno33554984 master team Connection ' team-slave-eno33554984' (7bc964d9-6f1a-4d2a-bafb-7802cccec04e) successfully added. [root@linuxhelp ~]# nmcli connection add type team-slave ifname eno50332208 master team Connection ' team-slave-eno50332208' (63d5697a-723a-42dc-8044-7b5b3eccad74) successfully added.
Run the following command to list the team connections that we have created.
[root@linuxhelp ~]# nmcli connection show
NAME UUID TYPE DEVICE
Wired connection 2 00c4af30-1439-4227-8b8a-62e5b9b8d829 802-3-ethernet eno50332208
Wired connection 1 beaa094f-eab0-40af-ab16-0be7a488720f 802-3-ethernet eno33554984
eno16777736 68a15759-e2a5-4e13-b0c9-f1a637377d8d 802-3-ethernet eno16777736
team-slave-eno50332208 63d5697a-723a-42dc-8044-7b5b3eccad74 802-3-ethernet --
team-slave-eno33554984 7bc964d9-6f1a-4d2a-bafb-7802cccec04e 802-3-ethernet --
team-team df8df4b3-bc97-4983-8775-5c16051a5e3a team team
Now activate the team connection by running the below command.
[root@linuxhelp ~]# nmcli connection up team-team
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
Use the following command to restart the network.
[root@linuxhelp ~]# systemctl restart network
[root@linuxhelp ~]# ifconfig
eno16777736: flags=4163< UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.88 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::20c:29ff:fe83:a038 prefixlen 64 scopeid 0x20
ether 00:0c:29:83:a0:38 txqueuelen 1000 (Ethernet)
RX packets 612313 bytes 875927083 (835.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 379085 bytes 26728195 (25.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno33554984: flags=4163< UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:83:a0:42 txqueuelen 1000 (Ethernet)
RX packets 114 bytes 16376 (15.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 93 bytes 15746 (15.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno50332208: flags=4163< UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:83:a0:42 txqueuelen 1000 (Ethernet)
RX packets 120 bytes 16721 (16.3 KiB)
RX errors 0 dropped 4 overruns 0 frame 0
TX packets 57 bytes 9524 (9.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73< UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 20 bytes 1926 (1.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20 bytes 1926 (1.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
team: flags=4163< UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.100 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::20c:29ff:fe83:a042 prefixlen 64 scopeid 0x20
ether 00:0c:29:83:a0:42 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 4 overruns 0 frame 0
TX packets 33 bytes 4315 (4.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
To check the team status
Now run the following command to check the status of the team.
[root@linuxhelp ~]# teamdctl team state
setup:
runner: activebackup
ports:
eno33554984
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
eno50332208
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
active port: eno33554984
# nmcli connection show
#teamdctl team state
#nmcli connection add type team-slave ifname eno33554984 master team
#nmcli connection add type team-slave ifname eno50332208 master team
nmcli connection modify team-team ipv4.addresses 192.168.5.100/24 ipv4.method manual
# nmcli connection up team-team