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
Tag : NIC teaming
FAQ
Q
How to update the connection of team NIC bond?
A
you can update the connections of a team by following command

# nmcli connection up team-team
Q
Which is used to list all the team connection connected in bonding?
A
you can list the team connection by following command

# nmcli connection show
Q
How to check the status of the team in NIC bond?
A
Check the status of a team by using following command
#teamdctl team state
Q
How to add two or more NIC in team connection for a slave?
A
use following command
#nmcli connection add type team-slave ifname eno33554984 master team
#nmcli connection add type team-slave ifname eno50332208 master team
Q
How to set IP for team connection in NIC on Linux?
A
use following command
nmcli connection modify team-team ipv4.addresses 192.168.5.100/24 ipv4.method manual