Bonding two 2.5 Gbps Realtek R8152 adapters via LACP in Linux aggregates their bandwidth to approximately 5 Gbps, not 10 Gbps. This configuration requires a managed switch supporting 802.3ad and specific kernel modules to handle the USB-based NICs correctly.
Hardware and Switch Prerequisites
Before configuring the software bond, ensure your physical infrastructure supports Link Aggregation Control Protocol (LACP). The Realtek R8152 is a popular USB-to-Ethernet chipset, but it operates over USB buses which have inherent latency and throughput limits compared to native PCIe cards. To achieve any speed boost, you must connect both adapters to a single managed switch that supports IEEE 802.3ad LACP. Unmanaged switches will typically drop packets or fail to establish the link when multiple ports are grouped together without proper protocol negotiation.
Verify that your switch allows you to create an "EtherChannel," "LAG," or "Link Aggregation Group." You will need to configure the switch ports connected to the R8152 adapters as active members of this group. Most enterprise-grade switches use static aggregation or LACP dynamically. For Linux bonding, dynamic LACP (mode
802.3ad) is preferred because it allows the system to detect link failures automatically. If your switch does not support LACP, you cannot use this method, and you would need to look into alternative bonding modes like
balance-rr, though these may cause issues with some network devices due to MAC address flipping.
It is crucial to understand that while you have two 2.5 Gbps links, the theoretical maximum aggregate throughput is 5 Gbps. A common misconception is that bonding doubles the speed to 10 Gbps; however, since each adapter is limited to 2.5 Gbps, the sum is 5 Gbps. Furthermore, if these adapters are plugged into the same USB controller hub, the USB bus itself might become the bottleneck, capping your actual transfer speeds well below the theoretical Ethernet limit. Ensure the adapters are on separate USB controllers if possible to minimize contention.
For users looking to expand their wired network further, understanding how to integrate these high-speed connections with existing infrastructure is key. You can explore
Setting up VLANs with Firewalla Gold Plus, Netgear GS316EPP, and Grandstream GWN7665AP to see how advanced networking features interact with multi-port setups. Additionally, checking
Upgrade Your Wired Network with Deco XE75's 2.5Gbps Port - Is a Switch Necessary? helps determine if dedicated switching hardware is required for stable LACP performance.
Installing Required Kernel Modules
Linux kernels include drivers for Realtek chipsets, but the specific driver for the R8152 is often named
r8152. Verify that this module is loaded by running
lsmod | grep r8152. If it is not listed, load it manually using
sudo modprobe r8152. Some older distributions may require installing additional firmware packages, such as
linux-firmware, to ensure the USB device initializes correctly.
You also need the
bonding kernel module, which handles the logic for combining interfaces. Check its status with
lsmod | grep bonding. If it is missing, install it via your package manager (e.g.,
apt install linux-modules-extra-$(uname -r) on Debian/Ubuntu or
yum install kmod-bonding on RHEL/CentOS). Reboot the system after installation to ensure all modules are properly initialized at boot time.
Configuring the Bond Interface
Modern Linux distributions use
NetworkManager or
systemd-networkd for network configuration. Using
nmcli is the most reliable method for creating bonds dynamically. First, identify your interface names using
ip link. Assume they are
enp0s20f0u1 and
enp0s20f0u2.
Create the bond interface with the following command:
sudo nmcli connection add type bond con-name bond0 ifname bond0 mode 802.3ad miimon 100 lacp_rate fast
This creates a bond named
bond0 using LACP mode (
802.3ad). The
miimon 100 setting checks link state every 100 milliseconds, and
lacp_rate fast ensures rapid negotiation with the switch.
Next, attach the slave interfaces to the bond:
sudo nmcli connection add type bond-slave ifname enp0s20f0u1 master bond0
sudo nmcli connection add type bond-slave ifname enp0s20f0u2 master bond0
Finally, bring up the connection:
sudo nmcli connection up bond0
Verifying and Troubleshooting
Check the status of the bond with
cat /proc/net/bonding/bond0. Look for
Slave Interface sections showing
Slave Status: Up and
LACP State: Active. If one or both slaves show
Down, verify the physical cabling and switch port configuration. Ensure the switch ports are configured as trunk or access ports compatible with LACP, and that no spanning-tree protocol is blocking the aggregated link.
Monitor traffic with
iftop or
nload to confirm that traffic is distributed across both links. Note that individual TCP connections usually stick to one path unless the hashing algorithm changes, so aggregate bandwidth tests (like
iperf3) from multiple sources will better demonstrate the combined speed.
Frequently Asked Questions
Can I achieve 10 Gbps with two 2.5 Gbps adapters?
No, the maximum aggregate throughput is 5 Gbps because each adapter is physically limited to 2.5 Gbps. Bonding sums the bandwidth of the individual links, so 2.5 + 2.5 equals 5 Gbps. To reach 10 Gbps, you would need four 2.5 Gbps adapters or native 10 Gbps hardware.
Why is my bond showing as Down even though the cables are connected?
This is often caused by a mismatch between the Linux LACP rate and the switch configuration. Ensure both sides use
lacp_rate fast or both use slow. Additionally, check if the switch ports are enabled for LACP and not blocked by Spanning Tree Protocol (STP), which can delay link establishment.
Does USB bandwidth limit the performance of the R8152 bond?
Yes, significantly. If both adapters share the same USB host controller, the USB bus bandwidth becomes a bottleneck. To maximize performance, plug the adapters into different USB controllers or use a PCIe expansion card instead of USB adapters for more consistent throughput.
What happens if one adapter fails in an LACP bond?
In mode
802.3ad, the bond automatically removes the failed interface from the aggregation group. Traffic continues to flow through the remaining active adapter, albeit at reduced bandwidth (2.5 Gbps in this case). Once the failed adapter is replaced and linked, it rejoins the bond seamlessly.
Can I use static bonding instead of LACP?
You can use mode
balance-rr (round-robin) without LACP support on the switch, but this is generally discouraged for production networks. It causes out-of-order packets which can degrade TCP performance and may confuse firewalls or routers. LACP (
802.3ad) is the standard and safest approach for link aggregation.