When a Network Cable Becomes a Single Point of Failure
2 AM, the phone vibrates uncontrollably. On the other end, the boss frantically reports that the system is down and customers can’t gain access. You check the logs and discover a bitter truth: an old network cable failed, or a Switch port died. A hardware failure worth a few dollars just brought down a system serving thousands of users.
I once faced this situation while managing a CentOS 7 server cluster. Back then, each server was connected with only a single cable. When that cable failed, the server was completely isolated. The lesson was clear: Never put all your trust in a single piece of hardware.
Why One Network Interface Card is Not Enough
Using a single Network Interface Card (NIC) always carries two major risks:
- Single Point of Failure (SPOF): A single NIC driver error or a broken cable will turn your server into a lonely “island”.
- Bottleneck: For bandwidth-hungry services like Databases or File Servers, a 1Gbps port often hits 90-100% load. This significantly slows down application response times.
When migrating five critical servers, such as a production-ready KVM/QEMU setup, to CentOS Stream 9, I standardized the infrastructure using Network Teaming. This solution helps systems achieve Enterprise-grade stability typical of RHEL (Red Hat Enterprise Linux).
Teaming vs. Bonding: Which is the Modern Choice?
Long-time Linux administrators are usually familiar with Bonding. However, from RHEL 7 onwards, Network Teaming has emerged as a more powerful alternative.
Bonding handles logic primarily in the kernel. In contrast, Teaming moves this to user-space via the teamd daemon. This approach makes Teaming more flexible, easier to scale, and provides smarter link monitoring.
Configuring Network Teaming on CentOS Stream 9
You need at least two physical network cards. Suppose the server has two cards: enp1s0 and enp2s0. We will aggregate them into a virtual interface named team0.
Step 1: Verify Hardware
First, list the existing interfaces to correctly identify the network card names.
nmcli device status
Note the names of the cards in the disconnected state. We will use them in the next step.
Step 2: Create the Main Team Interface
Use nmcli — the standard tool on CentOS 9, which is as essential as mastering nftables for system security. I will configure the activebackup mode. In this mode, one card acts as the primary, while the other is a standby. If the primary card fails, the secondary card takes over in less than a second.
nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
If you want to aggregate bandwidth to increase transfer speeds, replace activebackup with loadbalance.
Step 3: Add Physical Cards to the Team
Next, we add the two physical cards as “members” of team0.
# Assign the first card
nmcli connection add type team-slave con-name team0-slave1 ifname enp1s0 master team0
# Assign the second card
nmcli connection add type team-slave con-name team0-slave2 ifname enp2s0 master team0
Step 4: Configure the IP Address
Note: Do not assign an IP to the individual cards (enp1s0, enp2s0). All IP parameters must be configured directly on the team0 interface.
nmcli connection modify team0 ipv4.addresses 192.168.1.100/24
nmcli connection modify team0 ipv4.gateway 192.168.1.1
nmcli connection modify team0 ipv4.dns "8.8.8.8,8.8.4.4"
nmcli connection modify team0 ipv4.method manual
Step 5: Activate the System
Activate the slave interfaces first, then activate the main team to complete the setup.
nmcli connection up team0-slave1
nmcli connection up team0-slave2
nmcli connection up team0
Real-world Testing: Don’t Just Rely on Theory
In IT, any configuration is meaningless without testing and server monitoring. To view the Team status, use the following command:
teamdctl team0 state
Try a “brute force” test: Unplug the network cable of the active card. If configured correctly, the ping command to the server should only drop about 1-2 packets before continuing normally on the remaining card. At this point, you can sleep soundly.
Common Runner Modes
Depending on your needs, you can choose the appropriate runner in the JSON file:
- activebackup: Prioritizes redundancy, easy to configure, no Switch intervention required.
- roundrobin: Transmits packets sequentially across each card to increase bandwidth.
- loadbalance: Uses smart algorithms to distribute traffic.
- lacp (802.3ad): The most professional mode for bandwidth aggregation. Note: Your Switch must also support and be configured for LACP accordingly.
Conclusion
Implementing Network Teaming is not difficult, but the value it brings is absolute peace of mind, similar to the redundancy provided by an HAProxy load balancer. During a recent Switch maintenance, I hot-swapped cables to reorganize the Rack while services kept running smoothly. Not a single customer complained, and no red alerts appeared.
For Production systems, consider Network Teaming a mandatory standard. Good luck with your configuration!

