If you manage a server, NAS, virtualization machine, or even a busy home lab, you already know how important a stable and fast network connection is. A single Ethernet cable is usually enough for normal internet use, but when your system starts handling large file transfers, multiple users, backups, media streaming, or virtual machines, the network can become a bottleneck.
This is where Network Link Aggregation becomes useful. Link aggregation allows you to combine two or more network ports into one logical connection. Instead of relying on a single Ethernet link, your Ubuntu server can use multiple links together. The most popular standard for this is 802.3ad, also called LACP (Link Aggregation Control Protocol).
In this article, you will learn what link aggregation is, why 802.3ad is useful, what you need before starting, and how to set up LACP bonding on Ubuntu in a clean and safe way.
What Is Network Link Aggregation (802.3ad)?
Network link aggregation is a method of combining multiple physical Ethernet connections into one virtual network interface. This virtual interface can carry traffic across multiple cables and ports.
The main purpose of link aggregation is to improve network performance and reliability. It can help you handle higher traffic and keep the network running even if one Ethernet cable fails. When you use 802.3ad, the system can dynamically manage the aggregated links and distribute traffic across them.
802.3ad is an official IEEE standard, and it is widely supported by managed switches, routers, and server network cards. Because it is a standard method, it is commonly used in businesses, data centers, and professional networks.
What Is LACP (Link Aggregation Control Protocol)?
LACP stands for Link Aggregation Control Protocol. It is the protocol that makes 802.3ad work in a smart and dynamic way.
Instead of manually forcing links to act together, LACP allows both ends of the connection to negotiate and manage the bonding group. This makes link aggregation more stable and easier to manage, especially when you are working with multiple network ports.
LACP also helps detect link failures and recover quickly. If one link drops due to a cable issue or port failure, the other link continues to work so your server remains connected.
Benefits of Using 802.3ad on Ubuntu
The biggest advantage of link aggregation is that it improves how your server handles network traffic. It can increase the total bandwidth available to your server, which is helpful when multiple devices access the server at the same time.
Another advantage is redundancy. If one cable or port fails, your server stays online using the remaining link. This is very useful for systems where downtime is not acceptable.
Link aggregation also makes network usage smoother in environments where many users are connected. Instead of all users fighting for bandwidth on a single link, traffic can be balanced.
It is important to understand that link aggregation does not always double speed for a single user downloading a file. It mainly improves performance when there are multiple clients or multiple connections happening at the same time. Single downloads may still be limited by one link depending on how traffic is distributed.
When Should You Use Link Aggregation?
Link aggregation is a good idea if you have an Ubuntu server that is used for file sharing, backups, media serving, or virtualization. It is especially useful for NAS systems where multiple people access files at once.
It is also useful in business environments where server reliability matters. If your network must stay up even when a cable breaks, bonding provides a safety layer.
However, if you only have one computer using the server, link aggregation may not give noticeable improvement. It works best when your network load is high and spread across many devices.
What You Need Before Setting Up 802.3ad on Ubuntu
Before you start, make sure your hardware and network are ready. This saves time and avoids network failure during setup.
You need at least two physical Ethernet ports on your Ubuntu machine. These can be two built-in ports on a server motherboard or an additional network card.
You also need a managed switch that supports LACP. Many cheap unmanaged switches do not support link aggregation, so make sure your switch is compatible.
You need two Ethernet cables connected between your server and the correct switch ports.
You should also know the names of your network interfaces in Ubuntu. Ubuntu uses names like enp3s0, ens160, or similar. These names are important because you must use them in the configuration file.
If this is a remote server, it is a smart idea to have console access. If you make a mistake in the network config, you could lose SSH connection until it is fixed.
Step 1: Identify Your Network Interfaces in Ubuntu
First, you need to confirm the names of your network adapters.
You can check interface names with this command:
- ip link show
You can also use:
- nmcli device status
Look for your Ethernet interfaces. They may look like enp1s0 and enp2s0. Make sure both interfaces are connected and available.
If one interface shows as disconnected, check the cable and switch port before moving forward.
Step 2: Confirm Ubuntu Networking Method (Netplan or NetworkManager)
Ubuntu uses different networking systems depending on your edition and version.
Ubuntu Server usually uses Netplan with systemd-networkd.
Ubuntu Desktop often uses Netplan with NetworkManager.
You can confirm your netplan files by checking this folder:
- /etc/netplan/
You will see a YAML file such as:
- 00-installer-config.yaml
- 01-netcfg.yaml
This file is what you will edit to configure link aggregation.
Step 3: Plan Your IP Address Setup
Before creating the bond, decide whether your bond interface will use DHCP or a static IP.
A DHCP setup is easier for many networks, especially for testing.
A static IP is recommended for servers because it keeps the server address fixed, which is important for SSH, file shares, web services, and monitoring.
In most server environments, static IP is the better choice.
Step 4: Configure the Switch for LACP
This step must be done on the switch, not in Ubuntu.
You need to create a link aggregation group (LAG) on the switch and add the two ports connected to your Ubuntu server into that group. Then you enable LACP mode for that group.
The exact steps depend on your switch brand, but the idea is always the same: the two ports must be placed in the same LACP channel group.
If your switch is not set correctly, the Ubuntu bond may not work. You may lose network connectivity or experience unstable performance.
Step 5: Configure 802.3ad Bonding Using Netplan (Recommended Method)
Now it is time to create the bonding configuration in Ubuntu.
Netplan configuration is stored inside YAML files. YAML is very strict about spacing, so be careful with indentations. Even a small formatting mistake can break the network configuration.
Open your netplan config file using a text editor. For example:
- sudo nano /etc/netplan/00-installer-config.yaml
In your file, you will define a bond interface like bond0 and add two Ethernet interfaces as members.
A typical configuration contains these parts:
Bond name: bond0
Bond mode: 802.3ad
Interfaces: your two Ethernet ports
IP configuration: DHCP or static
Optional parameters: lacp-rate and transmit hash policy
After configuring the file, save it.
Example Netplan Configuration (DHCP)
If you want to use DHCP, your configuration will assign an IP automatically to bond0.
Basic steps in the configuration:
- Disable DHCP on the individual interfaces
- Add them under bond0
- Enable DHCP on bond0
- Set mode to 802.3ad
This setup is easier for testing because you do not have to manually enter IP details.
Example Netplan Configuration (Static IP)
For a server, you may want a static IP so your services always stay reachable.
A static IP setup includes:
- IP address and subnet
- Default gateway
- DNS servers
You assign these settings to bond0, not to the individual interfaces.
Step 6: Apply Netplan Changes
Once your configuration is ready, apply it carefully.
To apply changes, run:
- sudo netplan apply
If your server is remote, a safer command is:
- sudo netplan try
Netplan try gives you a temporary test window. If something goes wrong and you lose network, it will automatically revert after the timeout. This helps prevent permanent disconnection.
Once netplan applies the settings successfully, bond0 should become active and your server should have network access.
Step 7: Verify That Bonding Is Working
After setting up bonding, you should confirm the bond is running properly.
First, check the bond interface:
- ip addr show bond0
You should see an IP address assigned to bond0.
Then, check bonding status using:
- cat /proc/net/bonding/bond0
This output contains very useful information such as:
Bonding mode (should show IEEE 802.3ad)
Active member ports
LACP negotiation details
Link status of each interface
If both slave interfaces show as active and up, your bonding is working.
Step 8: Test the Network Connection
Once bonding is active, do simple network tests.
You can ping your gateway:
- ping -c 4 192.168.1.1
You can also ping a public address to confirm external connectivity:
- ping -c 4 8.8.8.8
If pings are successful, your bond is working.
If you manage a NAS or server, you can also test file transfer speed and stability by copying a large file from multiple devices at the same time.
Understanding Performance: Does Bonding Double Speed?
Many people assume that bonding gives instant 2x speed for all transfers, but it depends on the network traffic pattern.
Link aggregation mostly improves bandwidth across multiple streams. That means if you have 2x 1Gbps links, you can get close to 2Gbps total throughput across many clients and sessions. But a single file transfer may still be limited to 1Gbps because it might use only one link.
Some advanced setups using SMB multichannel or multiple TCP streams can improve single-client performance, but standard setups mainly benefit multi-user traffic.
Common Problems and How to Fix Them
One of the most common issues is switch configuration mismatch. If your switch ports are not configured in LACP mode, Ubuntu bonding might not establish correctly. Always confirm the switch settings first.
Another common issue is incorrect interface names in the netplan file. If you accidentally type the wrong interface name, the bond will not activate properly.
YAML formatting mistakes also cause problems. Incorrect indentation can break netplan and prevent network from coming up.
Some users also face IP conflicts. If bond0 receives an IP that is already in use on the network, connectivity will fail. Make sure your static IP is unique.
If you lose network after applying netplan, you can fix it by restoring the backup config file or using console access to correct the YAML file.
Best Practices for Ubuntu Link Aggregation
It is always a good idea to test link aggregation during a maintenance window if this is a production server. Any mistake can disconnect the server temporarily.
If you are on SSH, prefer using netplan try instead of netplan apply so you can recover easily.
Keep both cables connected to the correct switch ports and avoid mixing ports from different switch groups unless your switch supports multi-chassis link aggregation, which is more advanced.
If you need maximum stability, document your settings and keep a backup of your netplan configuration file.
Final Thoughts
Setting up network link aggregation (802.3ad / LACP) on Ubuntu is a powerful way to improve network performance and reliability. It is especially useful for servers, NAS machines, home labs, and office environments where multiple users access the system at the same time.
When configured properly with a managed switch that supports LACP, Ubuntu bonding gives you a stronger, more stable network connection with better traffic handling. Even though single transfers may not always become twice as fast, the overall network experience becomes smoother, more balanced, and more reliable.
If you want, I can also write the next guide on how to check LACP status, troubleshoot bonding issues, or configure link aggregation using NetworkManager on Ubuntu Desktop.


