linux_wiki:use_network_teaming_or_bonding_to_configure_aggregated_network_links_between_two_red_hat_enterprise_linux_systems

This is an old revision of the document!


Use Network Teaming Or Bonding To Configure Aggregated Network Links Between Two Red Hat Enterprise Linux Systems

General Information

Network interface teaming is a new method of what RHEL 6 referred to as bonding. There are more available options in RHEL 7's network teaming.


Lab Setup

The following virtual machines will be used:

  • server1.example.com (192.168.1.150) → Configure a team interface backed by to slave interfaces
  • server2.example.com (192.168.1.151) → Configure a team interface backed by to slave interfaces

Team Creation

Creating a virtual team interface that is backed by two physical network interfaces.

To each virtual machine, add two network interfaces.

Each VM should end up with 3 total interfaces:

  • Main Management NIC: 192.168.1.x (server1=150 and server2=151)
  • Additional NIC for team-slave: 10.0.0.x
  • Additional NIC for team-slave: 10.0.0.x


Due to the limitations of the virtualbox hypervisor, the virtual NICs must be configured to be in promiscuous mode.


When NICs are added to a team, the MAC address of the first slave gets duplicated to the team interface and any other slave interfaces added. This confuses the underlying virtualbox hypervisor.


In Virtualbox (Example from Virtualbox 5.2):

  • Select the EL7 virtual machine
  • Click Settings
  • Click Network
  • Under each Adapter tab, change the Promiscuous Mode drop down to “Allow All”
  • Click OK after changing all adapters

In the EL7 OS

  • Once the VM is booted up, set the interfaces to promiscuous mode
    ip link set enp0s8 promisc on
    ip link set enp0s9 promisc on

Install Teamd package (if not already installed)

yum install teamd


Install Network Manager team plugin (if not already installed)

yum install NetworkManager-team

On each VM; Create a new team connection

nmcli con add type team ifname team0 config '{"runner": {"name": "loadbalance"}}'
  • This creates a connection with a name of “team-team0” using device “team0”. (type is pre-pended, since no con-name was specified)
  • Other team “name” types that can be passed in the JSON for runner configuration (man teamd.conf):
    • broadcast → transmit packets via all ports
    • roundrobin → transmit in round robin
    • activebackup → 1 active port, 1 on standby in case of failure
    • loadbalance → balance between ports
    • lacp → 802.3ad LACP protocol
  • Example JSON configs are available at: /usr/share/doc/teamd-1.17/example_configs/


Assign a static address to the virtual team0 interface

  • server1 team
    nmcli con mod team-team0 ipv4.method manual ipv4.addresses 10.0.0.10/24
  • server2 team
    nmcli con mod team-team0 ipv4.method manual ipv4.addresses 10.0.0.20/24


Add two unconfigured interfaces (enp0s8 and enp0s9) to the virtual team0 interface

nmcli con add type team-slave con-name team0-port1 ifname enp0s8 master team0
nmcli con add type team-slave con-name team0-port2 ifname enp0s9 master team0
  • If the interfaces have any previous configuration, you may get errors when attempting to set the connections to “up” later on. (“Error: Connection activation failed: Active connection removed before it was initialized”)
    • Remove configurations: nmcli con delete <con-name>


Configure ports and team as up

nmcli con up team0-port1
nmcli con up team0-port2
nmcli con up team-team0


View team status

teamdctl team0 state

  • linux_wiki/use_network_teaming_or_bonding_to_configure_aggregated_network_links_between_two_red_hat_enterprise_linux_systems.1476124258.txt.gz
  • Last modified: 2019/05/25 23:50
  • (external edit)