Teaming NICs with teamd

Posted under others On By xpk

On recent version of Fefora, CentOS, and RHEL, it is possible to use teamd to setup link aggregation. Teamd is more configurable and it allows load balancing on LACP. Here we will walk through the simple configurations using old-fashion config files.

To setup load balancing without switch support (or when both connection go to the same switch)

# ifcfg-team0
DEVICE=team0
DEVICETYPE=team
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.122.13
PREFIX=24
TEAM_CONFIG='{"runner": {"name": "loadbalance"}, "link_watch": {"name": "ethtool"}}'
GATEWAY=192.168.122.1

# ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
TEAM_MASTER=team0
DEVICETYPE=TeamPort
ONBOOT=no
NM_CONTROLLED=no

# ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
TEAM_MASTER=team0
DEVICETYPE=TeamPort
ONBOOT=no
NM_CONTROLLED=no

To configure LACP which requires port channel on the switch side

DEVICE=team0
DEVICETYPE=Team
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=none
TEAM_CONFIG='{"runner": {"name": "lacp", "active": false, "fast_rate": false, "tx_hash": ["eth", "ipv4"]}}'

And if it happens that you need VLAN tagging as well

PHYSDEV=team0
DEVICE=vlan123
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.10
PREFIX=24
GATEWAY=10.10.10.1
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
VLAN_ID=123

teamd administration can be done with teamdctl. One can add / remove TeamPort much like adding/removing slaves using ifenslave. To view the status of a team:

$ teamdctl  team0 state view -v
setup:
  runner: loadbalance
  kernel team mode: loadbalance
  D-BUS enabled: yes
  ZeroMQ enabled: no
  debug level: 0
  daemonized: no
  PID: 659
  PID file: /var/run/teamd/team0.pid
ports:
  eth0
    ifindex: 2
    addr: 52:54:00:74:0d:24
    ethtool link: 0mbit/halfduplex/up
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        link up delay: 0
        link down delay: 0
  eth1
    ifindex: 3
    addr: 52:54:00:74:0d:24
    ethtool link: 0mbit/halfduplex/up
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        link up delay: 0
        link down delay: 0

Official documentation is available here.

 2,054 total views,  2 views today

Leave a comment

Your email address will not be published. Required fields are marked *