linux_wiki:use_network_teaming_or_bonding_to_configure_aggregated_network_links_between_two_red_hat_enterprise_linux_systems

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

Help

Finding help in this section.

  • nmcli examples
    man nmcli-examples
  • Team 'runner' config examples
    /usr/share/doc/teamd-1.17/example_configs/

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: Can be bridged or private
  • Additional NIC for team-slave: Can be bridged or private


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"}}'
  • Connection name is auto-created by combining type and ifname. (team-<ifname>)
    • If you really want to, you can define the con-name during creation
  • 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/
    • man teamd.conf → “EXAMPLES” section at the bottom


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


On each VM; Add two unconfigured interfaces (enp0s8 and enp0s9) to the virtual team0 interface

nmcli con add type team-slave ifname enp0s8 master team0
nmcli con add type team-slave ifname enp0s9 master team0
  • Connection name is auto-created by combining type and ifname. (team-slave-<ifname>)
    • If you really want to, you can define the con-name during creation
  • 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>


On each VM; Configure ports and team as up

nmcli con up team-slave-enp0s8
nmcli con up team-slave-enp0s9
nmcli con up team-team0


View team status (by team device name)

teamdctl team0 state


Team Config Command Examples

man nmcli-examples

If you run into issues with teaming not working correctly, you can always set up a bonded connection in order to achieve the objective on the exam.


This is straight from 'man nmcli-examples':

nmcli con add type bond ifname mybond0 mode active-backup
nmcli con add type ethernet ifname eth1 master mybond0
nmcli con add type ethernet ifname eth2 master mybond0

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