IFCFG-TEAM(5)

πŸ“¦ version 0.6.80, in opensuse-leap 16.0

🌸 NAME 🌸

Okay bestie, so this whole page is ifcfg-team β€” the interface team configuration situation. That's the manual name right there, ifcfg-team(5), now folded in all cute at the top so we can get into the good stuff. πŸ’…


✨ SYNOPSIS ✨

/etc/sysconfig/network/ifcfg-*

πŸŽ€ Team Interfaces πŸŽ€

So real talk: to set up a team interface you need a configuration file called ifcfg-team<X> that has all your normal network settings in it. But plot twist β€” that is not enough. You also must add extra variables on top, and those are the ones below. πŸ‘‘

  • TEAM_DEBUG_LEVEL β€” how much debug message energy you want. The higher the number, the more debug messages get printed out.

Default: 0 (disabled β€” like, no debug spam at all)

  • TEAM_NOTIFY_PEERS_COUNT β€” the number of bursts of unsolicited NAs and gratuitous ARP packets that get sent after a port is enabled or disabled. If you don't set it, teamd's default is used. 🫢
  • TEAM_NOTIFY_PEERS_INTERVAL β€” value is a positive number in milliseconds. Specifies the interval between bursts of notify-peer packets. If you don't set it, teamd's default is used.
  • TEAM_MCAST_REJOIN_COUNT β€” the number of bursts of multicast group rejoin requests sent after a port is enabled or disabled. If you don't set it, teamd's default is used.
  • TEAM_MCAST_REJOIN_INTERVAL β€” value is a positive number in milliseconds. Specifies the interval between bursts of multicast group rejoin requests. If you don't set it, teamd's default is used. ✨
  • TEAM_RUNNER β€” this one is mandatory, no cap. It must be set to one of the following types to identify this interface as a team interface:
    • broadcast β€” team device transmits packets via all its ports.
    • roundrobin β€” team device transmits packets via all its ports with round-robin method.
    • activebackup β€” team device monitors ports' link changes and uses the port with the active link to transmit packets.
    • loadbalance β€” team device transmits packets via all its ports performing load balancing (passive or active) with a use of hash functions. For passive load balancing only BPF hash function is used. For active load balancing the runner finds the best balance by moving hashes between available ports. πŸ”₯
    • lacp β€” implements 802.3ad LACP protocol.

πŸ’œ ACTIVE-BACKUP RUNNER SPECIFIC OPTIONS πŸ’œ

  • TEAM_AB_HWADDR_POLICY β€” determines the hardware addresses assignment for the team device instance and its ports. This assignment is performed during team device instance creation and also for each new port added to the existing instance. The following modes are available:
    • same_all β€” all ports will always have the same hardware address as the associated team device.
    • by_active β€” team device adopts the hardware address of the currently active port. This is useful when the port device is not able to change its hardware address.
    • only_active β€” only the active port adopts the hardware address of the team device. The others have their own.

Default: same_all


πŸ¦‹ LOAD BALANCE RUNNER SPECIFIC OPTIONS πŸ¦‹

  • TEAM_LB_TX_HASH β€” a list of string elements separated by a comma , which should be used for packet Tx hash computation. The following elements are available:
    • eth β€” uses source and destination MAC addresses.
    • vlan β€” uses VLAN id.
    • ipv4 β€” uses source and destination IPv4 addresses.
    • ipv6 β€” uses source and destination IPv6 addresses.
    • ip β€” uses source and destination IPv4 and IPv6 addresses.
    • l3 β€” uses source and destination IPv4 and IPv6 addresses.
    • tcp β€” uses source and destination TCP ports.
    • udp β€” uses source and destination UDP ports.
    • sctp β€” uses source and destination SCTP ports.
    • l4 β€” uses source and destination TCP and UDP and SCTP ports.
  • TEAM_LB_TX_BALANCER_NAME β€” name of the active Tx balancer. Currently the only supported value is basic.
  • TEAM_LB_TX_BALANCER_INTERVAL β€” rebalancing interval. To be specified in tenths of a second. ⏳

Default: 50


🌈 LACP RUNNER SPECIFIC OPTIONS 🌈

  • TEAM_LACP_ACTIVE β€” active mode enables sending LACPDU frames through the configured link periodically.

Default: true

  • TEAM_LACP_SYS_PRIO β€” system priority, value can be 0 - 65535.

Default: 255

  • TEAM_LACP_FAST_RATE β€” fast rate asks the link partner to transmit LACPDU frames once per second. Otherwise they are sent every 30 seconds.

Default: false

  • TEAM_LACP_MIN_PORTS β€” minimum number of active ports required to assert carrier in the master device. Value can be 1 - 255.

Default: 0

  • TEAM_LACP_SELECT_POLICY β€” the policy of how the aggregators will be selected. The following are available:
    • lacp_prio β€” the aggregator with the highest priority according to the LACP standard will be selected. Aggregator priority is affected by the per-port option lacp_prio.
    • lacp_prio_stable β€” same as the previous one, except it does not replace the selected aggregator if it is still usable. 🫢
    • bandwidth β€” select the aggregator with the highest total bandwidth.
    • count β€” select the aggregator with the highest number of ports.
    • port_options β€” the aggregator with the highest priority according to the per-port options prio and sticky will be selected. This means the aggregator containing the port with the highest priority will be selected unless at least one of the ports in the currently selected aggregator is sticky.

Default: lacp_prio

  • TEAM_LACP_TX_HASH β€” same as for the loadbalancer runner. Please refer to the section above. ⭐
  • TEAM_LACP_TX_BALANCER β€” same as for the loadbalancer runner. Please refer to the section above.
  • TEAM_LACP_TX_BALANCER_INTERVAL β€” same as for the loadbalancer runner. Please refer to the section above.

  • TEAM_LINK_WATCH_POLICY β€” declare the name of the link-watchers evaluation policy. The following options are available:
    • any β€” link is up if any of the link-watchers reports the link up.
    • all β€” link is up if all of the link-watchers report the link up.

Default: any

  • TEAM_LW_NAME[SUFFIX] β€” declares the type name of the link watch (with the specified unique watch suffix). To declare several link watches, append the same suffix to all variables of one watch. The following types are available:
    • ethtool β€” uses Libteam lib to get port ethtool state changes.
    • arp_ping β€” ARP requests are sent through a port. If an ARP reply is received, the link is considered to be up.
    • nsna_ping β€” similar to the previous one, except that it uses the IPv6 Neighbor Solicitation / Neighbor Advertisement mechanism. πŸ¦‹

  • TEAM_LW_ETHTOOL_DELAY_UP[SUFFIX] β€” delay between the link coming up and the runner being notified about it (in milliseconds).

Default: 0

  • TEAM_LW_ETHTOOL_DELAY_DOWN[SUFFIX] β€” delay between the link going down and the runner being notified about it (in milliseconds).

Default: 0


  • TEAM_LW_ARP_PING_SOURCE_HOST[SUFFIX] β€” hostname or IP address used in the ARP request as the source address.

Default: 0.0.0.0

  • TEAM_LW_ARP_PING_TARGET_HOST[SUFFIX] β€” hostname or IP address used in the ARP request as the destination address.
  • TEAM_LW_ARP_PING_INTERVAL[SUFFIX] β€” interval between ARP requests being sent (in milliseconds).

Default: 1000

  • TEAM_LW_ARP_PING_INIT_WAIT[SUFFIX] β€” delay between link watch initialization and the first ARP request being sent (in milliseconds).

Default: 0

  • TEAM_LW_ARP_PING_VALIDATE_ACTIVE[SUFFIX] β€” validate received ARP packets on active ports. Otherwise all incoming ARP packets will be considered as a good reply.

Default: false

  • TEAM_LW_ARP_PING_VALIDATE_INACTIVE[SUFFIX] β€” validate received ARP packets on inactive ports. Otherwise all incoming ARP packets will be considered as a good reply.

Default: false

  • TEAM_LW_ARP_PING_SEND_ALWAYS[SUFFIX] β€” allow sending ARP requests on inactive ports.

Default: false

  • TEAM_LW_ARP_PING_MISSED_MAX[SUFFIX] β€” maximum number of missed ARP replies. If this number is exceeded, the link is reported as down. πŸ’€

Default: 3

  • TEAM_LW_ARP_PING_VLANID[SUFFIX] β€” by default, ARP requests are sent without VLAN tags. This option causes outgoing ARP requests to be sent with the specified VLAN ID number.

  • TEAM_LW_NSNA_PING_TARGET_HOST[SUFFIX] β€” hostname or IPv6 address used in the NS packet as the target address.
  • TEAM_LW_NSNA_PING_INTERVAL[SUFFIX] β€” interval between sending NS packets (in milliseconds).

Default: 1000

  • TEAM_LW_NSNA_PING_INIT_WAIT[SUFFIX] β€” delay between link watch initialization and the first NS packet being sent (in milliseconds).
  • TEAM_LW_NSNA_PING_MISSED_MAX[SUFFIX] β€” maximum number of missed NA reply packets. If this number is exceeded, the link is reported as down. 😭

Default: 3


πŸ‘‘ TEAM PORT SPECIFIC OPTIONS πŸ‘‘

  • TEAM_PORT_DEVICE[SUFFIX] β€” port device name. This option must not be empty for a given port. (Like, literally, don't leave it blank.)
  • TEAM_PORT_QUEUE_ID[SUFFIX] β€” ID of the queue which this port should be mapped to.

Default: None

  • TEAM_PORT_STICKY[SUFFIX] β€” marks an activebackup runner port as sticky, so it does not get deselected if another port with a higher priority or better parameters becomes available. 🫢

Default: false

  • TEAM_PORT_PRIO[SUFFIX] β€” port priority in the activebackup runner. The higher number means higher priority.

Default: 0

  • TEAM_PORT_LACP_PRIO[SUFFIX] β€” port priority according to the LACP standard. The lower number means higher priority.

Default: 0

  • TEAM_PORT_LACP_KEY[SUFFIX] β€” port key according to the LACP standard. It is only possible to aggregate ports with the same key.

Default: 0


Okay bestie, that's all of part 1 β€” the runners, the link watches, the port options, all of it, nothing skipped πŸ’… more is coming, so don't go anywhere.

🌸 EXAMPLE 🌸

Okay bestie, here's the whole thing in one go β€” a teaming interface over eth0 and eth1, set up "using the backup mode" (that's the page's caption, and we're quoting it as-is, don't come for me πŸ™ˆ). Feast your eyes:

STARTMODE=auto
BOOTPROTO=static
#IPADDR=...

TEAM_RUNNER="loadbalance"
TEAM_LB_TX_HASH="ipv4,ipv6,eth,vlan"
TEAM_LB_TX_BALANCER_NAME="basic"
TEAM_LB_TX_BALANCER_INTERVAL="100"

TEAM_PORT_DEVICE_1="eth1"
TEAM_PORT_DEVICE_2="eth2"

TEAM_LW_NAME="ethtool"
TEAM_LW_ETHTOOL_DELAY_UP="10"
TEAM_LW_ETHTOOL_DELAY_DOWN="10"
# optionally, further watches, e.g:
TEAM_LW_NAME_1="nsna_ping"
TEAM_LW_NSNA_PING_INTERVAL_1="100"
TEAM_LW_NSNA_PING_MISSED_MAX_1="30"
TEAM_LW_NSNA_PING_TARGET_HOST_1="fe80::1"

Like β€” look at her. loadbalance runner slaying with a custom TX hash, two ports, an ethtool link watch with 10 second delays both ways, plus a lil optional nsna_ping watch stacked on with the _1 suffix. That's the whole vibe. πŸ’…


πŸ¦‹ Additional Information πŸ¦‹

If you want the bigger picture β€” more general info, the stuff beyond this one page β€” go peek at:

And bestie, setting up routes for this kind of interface is literally no different from ordinary interfaces. Same as always. See man routes for the deets. ✨


Copyright (C) 2015-2022 SUSE LLC


πŸ’€ BUGS πŸ’€

Found something cursed? Please report bugs as described at https://bugs.opensuse.org β€” the maintainers want to hear it, fr fr. 🫢


πŸŽ€ SEE ALSO πŸŽ€

Go read these next, iykyk:

  • teamd.conf (5)
  • ifcfg (5)
  • wicked (8)
  • teamd (8)
  • teamdctl (8)

πŸ’– AUTHORS πŸ’–

Pawel Wieczorkiewicz – original wireless man page, Clemens Famulla-Conrad.


That's the whole page, bestie β€” you officially know team configs now, main character energy only. 🌈 This lil masterpiece comes to you from the Wicked User Manual, dated January 29, 2024, and it lives at IFCFG-TEAM(5). Go forth and team up. πŸ§šπŸ’œ

πŸ“¦ where this page comes from