After installing Ubuntu 16.04 the following guide can be used to set up LACP. If you are still installing the server, select
Do not configure the network at this time after the auto-config failed and finish the installation.
In order for LACP to work, it also needs to be set up on the switch the server is connected to.
Because some files might not be accessible from your default user, it's easier to follow this tutorial while being root. You can easily become root by running:
Step 1 - Finding the interfaces
Run the following command:
You will see a list of interfaces, you can ignore the
lo interface, if that only leaves two interfaces, those interfaces have to be configured. If more than two interfaces remain LACP should usually be configured on the first two interfaces. You should take notice of which interfaces are up, as you will need them for the next step.
root@elias-demo:~# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 3c:a8:2a:54:f5:40 brd ff:ff:ff:ff:ff:ff 3: em2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 3c:a8:2a:54:f5:44 brd ff:ff:ff:ff:ff:ff
Step 2 - Installing ifenslave
By default, Ubuntu 16.04 does not come with the bonding module. This module is not installed by default on Ubuntu 16.04 and you will have to install this, to do this you will need internet access on your machine.
Conveniently our network will be configured in order to accept non-bonded connections as well in order to ease setup, this means you can just use your IP address on one of the connected interfaces during setup (this should not be done long-term as performance will be degraded).
You can quickly configure one of the state UP interfaces with your IP details in order to download this package, replace the information with the IP information for your server.
ip addr add 192.168.2.2/24 dev em1 ip route add default via 192.168.2.1 echo 'nameserver 184.108.40.206' > /etc/resolv.conf
You can now install the
ifenslave package by running:
apt install ifenslave -y.
To make sure the bonding module loads on the next boot, edit the
/etc/modules file (
nano /etc/modules) and add a new line with
bonding on it.
You can now load the module for the current boot by running:
modprobe bonding, this is not neccesary was we are going to be rebooting the server to apply the configuration.
Step 3 - Configuring the bond
To configure the bond, we need to edit the interfaces configuration, you can find this in
Edit the file with your preferred editor (
nano /etc/network/interfaces) and create the configuration. Configuration example:
auto em1 iface em1 inet manual bond-master bond0 auto em2 iface em2 inet manual bond-master bond0 auto bond0 iface bond0 inet static address 192.168.2.2 gateway 220.127.116.11 netmask 255.255.255.0 dns-nameservers 18.104.22.168 22.214.171.124 bond-slaves em1 em2 bond-mode 4 bond-miimon 100 bond-lacp-rate 1 bond-xmit_hash_policy layer3+4
Save the configuration and proceed to the next step.
Step 4 - Applying the configuration
In order to erase the temporary configuration and apply the new configuration, it is recommended to reboot the server, you can do this by typing
reboot on the terminal.
Step 5 - Checking the configuration
After the reboot, you can take the following steps to ensure the configuration has been applied corretly, you can do the following:
- Run the
ip linkcommand (again). The output should show a new interface:
bond0should now also be there. If you replace link with address to get
ip addressyou should also see the IP address you entered appear in the output of this command. Example:
root@elias-demo:~# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 link/ether 72:d6:bf:a4:32:8a brd ff:ff:ff:ff:ff:ff 3: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 link/ether 72:d6:bf:a4:32:8a brd ff:ff:ff:ff:ff:ff 4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 72:d6:bf:a4:32:8a brd ff:ff:ff:ff:ff:ff inet 192.168.2.2/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::70d6:bfff:feb4:188c/64 scope link valid_lft forever preferred_lft forever
cat /proc/net/bonding/bond0, this will show a lot of information about the bond0 interface. Here are some of the key lines and what they mean:
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
- Shows the bond is configured with 802.3ad (LACP), this way it negotiates with our switch.
Transmit Hash Policy: layer3+4 (1)
- Shows the bond hashing mode is set to layer3+4, this means it's configured properly in our case.
- You should also see a (system mac address) mac-address in the Slave interface sections at the details partner lacp pdu.
ping 126.96.36.199, or another IP which has a low chance of being offline. This will confirm internet connectivity, by default the firewall will allow this type of outbound traffic. If you notice missing
icmp_seqnumbers, there may be packet loss, please contact our support about this.