====== 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 examplesman 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. ===== Virtualbox Notes ===== 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 modeip link set enp0s8 promisc on ip link set enp0s9 promisc on ---- ===== Packages ===== Install Teamd package (if not already installed) yum install teamd \\ Install Network Manager team plugin (if not already installed) yum install NetworkManager-team ---- ===== Interface Teaming ===== **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-) * 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 teamnmcli con mod team-team0 ipv4.method manual ipv4.addresses 10.0.0.10/24 * server2 teamnmcli 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-) * 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 \\ **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 ---- ===== Interface Bonding ===== 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 ----