Bonds
Ports of devices in bond-support racks can be bonded in order to share traffic between both individual NICs and upstream switches. This setup provides high availability and allows both interfaces to utilize Layer 2 and Layer 3 features at the same time. This is a way to implement common hybrid cloud networking models with proxies that face the Internet on one side and private Layer 2 infrastructure on the other side.


Traffic and Layer 2/Layer 3 features are shared across switch ports.
Deploying Bondable Servers
By default, new deployments will deploy into a bond-supported rack if available for the product in the selected facility. You can ensure deployment of bond-supported servers at deployment time:
Via Portal
In Development
This feature is only supported in the API. Portal support is expected to become available late 2022.
Via API
To require a bond-supported rack in a deployment pass true
in the bondingSupport
argument in the POST
request body to /bare-metal-devices.
Creating Bonds
Via the Portal
In the myVelocity Portal, navigate to the server's Network section, locate the server's ports, then click Bond Ports. If your device is in a rack that does not support bonds this option will not be available.
In Development
This feature is not yet supported in the Portal. It is expected to become available mid 2022.
Via the API
Make a POST
request to the /device/DEVICE_ID/ports/bond using the ID
of your device in the url.
Configuring your Server to use a Bond.
Once you have created the bond you will need to configure yours server's operating system to use bond0
.
AlmaLinux
-
Create a bond interface:
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
This command creates a bond named
bond0
that uses theactive-backup
mode. -
Display the network interfaces, and note names of interfaces you plan to add to the bond:
nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet disconnected -- enp8s0 ethernet disconnected -- bridge0 bridge connected bridge0 bridge1 bridge connected bridge1 ...
In this example:
enp7s0
andenp8s0
are not configured. To use these devices as ports, add connection profiles in the next step.bridge0
andbridge1
have existing connection profiles. To use these devices as ports, modify their profiles in the next step.
-
Assign interfaces to the bond:
-
If the interfaces you want to assign to the bond are not configured, create new connection profiles for them:
nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname enp7s0 master bond0 nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname enp8s0 master bond0
These commands create profiles for
enp7s0
andenp8s0
, and add them to thebond0
connection. -
To assign an existing connection profile to the bond, set the
master
parameter of these connections tobond0
:nmcli connection modify bridge0 master bond0 nmcli connection modify bridge1 master bond0
These commands assign the existing connection profiles named
bridge0
andbridge1
to thebond0
connection.
-
-
Configure the IP settings of the bond byfollowing the steps outlined for routing IPs to ports and target
bond0
. -
Activate the connection:
nmcli connection up bond0
-
Verify that the ports are connected, and the
CONNECTION
column displays the portโs connection name:nmcli device DEVICE TYPE STATE CONNECTION ... enp7s0 ethernet connected bond0-port1 enp8s0 ethernet connected bond0-port2
Linux activates controller and port devices when the system boots. By activating any port connection, the controller is also activated. However, in this case, only one port connection is activated. By default, activating the controller does not automatically activate the ports. However, you can enable this behavior by setting:
-
Enable the
connection.autoconnect-slaves
parameter of the bondโs connection:nmcli connection modify bond0 connection.autoconnect-slaves 1
-
Reactivate the bridge:
nmcli connection up bond0
-
-
Display the status of the bond:
cat /proc/net/bonding/bond0
You are done!
Ubuntu 20
Step 1 - Find the interfaces
Run the following command: ip link
You will see a list of interfaces. If more than two interfaces remain you will be configuring the first two interfaces.
[email protected]:~# 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: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 3c:a8:2a:24:f0:90 brd ff:ff:ff:ff:ff:ff
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 3c:a8:2a:24:f0:94 brd ff:ff:ff:ff:ff:ff
Step 2 - Create the configuration
On Ubuntu after installation the network configuration file will be located in: /etc/netplan/
. Typically it is named: 01-netcfg.yaml
. Update the file with the configuration below:
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: no
eno2:
dhcp4: no
bonds:
bond0:
interfaces: [eno1, eno2]
addresses: [YOUR_SUBNET]
gateway4: YOUR_GATEWAY
parameters:
mode: 802.3ad
transmit-hash-policy: layer3+4
mii-monitor-interval: 1
You should replace eno1
and eno2
with the interfaces you want to make members and ensure you turn off dhcp4
on all of them.
If you are statically routing a subnet to the bond, replace YOUR_SUBNET
and YOUR_GATEWAY
with your target IPs the same way you would routing IPs to a port.
If you are not statically routing a subnet to the bond, you can remove the addresses
and gateway4
values.
Step 3 - Apply the configuration
First test your configuration will work by running:
netplan-try
Then to apply the configuration run:
netplan apply
Step 4 - Verify the configuration
The output from the following command should show a new interface: bond0
. Run:
ip address
[email protected]:~# 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: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether 72:d6:bf:b4:18:8c brd ff:ff:ff:ff:ff:ff
3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether 72:d6:bf:b4:18:8c 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:b4:18:8c 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
โ
You are done! If you'd like to do something more complicated, netplan is well documented in the ubuntu docs.
Windows
Bonding in Windows is called NIC Teaming. First, enter the powershell and find your network interfaces with the command:
Get-NetIPInterface -AddressFamily IPv4
ifIndex InterfaceAlias AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp ConnectionState PolicyStore
------- -------------- ------------- ------------ --------------- ---- --------------- -----------
6 Ethernet 2 IPv4 1500 15 Enabled Connected ActiveStore
7 Ethernet 3 IPv4 1500 15 Enabled Connected ActiveStore
1 Loopback Pseudo-Interface 1 IPv4 4294967295 75 Disabled Connected ActiveStore
Use the Powershell command below to create the NIC team where the TeamMembers
argument is set to the InterfaceAlias
of your interfaces from the previous command:
$teamA = New-NetLbfoTeam -Name TeamA -TeamMembers "Ethernet 2","Ethernet 3" -TeamingMode LACP
Then you can check that the team was created with:
get-netlbfoteam
Name : TeamA
Members : {Ethernet 2, Ethernet 3}
TeamNics : TeamA
TeamingMode : LACP
LoadBalancingAlgorithm : TransportPorts
Status : Up
That is it!
Setting MTU
In Development
This feature is not yet supported. Support is expected to become available late 2022.
Updated 15 days ago