os-net-config should support adapter teaming in addition to bonding

Bug #1586177 reported by Dan Sneddon
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
Wishlist
Dan Sneddon

Bug Description

os-net-config supports both OVS bonding and Linux kernel bonding, but some users want to use adapter teaming instead of bonding. Adapter teaming provides additional options that bonds don't support, and do support almost all of the options that are supported by bonds.

os-net-config should support adapter teams in the same way it supports bond. I imagine it working like this:

-
  type: linux_team
  name: team0
  teaming_options:
  addresses:
    -
      ip_subnet: 192.168.0.10/24
  members:
    -
      type: interface
      name: eno2
      primary: true
    -
      type: interface
      name: eno3

Note that teamd is not installed by default on RHEL/CENTOS, so this will be a new dependency for the os-net-config RPM.

os-net-config will have to configure the ifcfg files for the team. That is documented here: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Configure_a_Network_Team_Using-the_Command_Line.html#sec-Creating_a_Network_Team_Using_ifcfg_Files

If an interface is marked as primary, then the ifcfg file for that interface should list it at a higher than default (0) priority:
TEAM_PORT_CONFIG='{"prio": 100}'

With the OVS and Linux bonds, we could have a freeform "options:" item that contained an arbitrarily long list of options that included the bond mode (active/backup, LACP, etc.). With teaming, the configuration is different. The mode is set in the runner: statement, so we will either have to have a freeform TEAM_CONFIG field where the mode is set, or a mode: option with a fixed number of possible values that represent the runner states: broadcast; random; roundrobin; activebackup; loadbalance; lacp.

When setting up OVS bridges, we run ovs-vsctl to set some of the options. We may want to have os-net-config call teamdctl or one of the other command line utilities to modify the team settings. An example would be using ip utils to honor the primary: true for eno2: "ip link set dev eno2 master team0". A solution will also need to be found for implementing any other options.

An example of the changes needed can be found in this review which added Linux bonding support to os-net-config: https://review.openstack.org/#/c/218134/

Tags: spec-lite
Dan Sneddon (dsneddon)
Changed in tripleo:
assignee: nobody → Dan Sneddon (dsneddon)
assignee: Dan Sneddon (dsneddon) → nobody
assignee: nobody → Dan Sneddon (dsneddon)
milestone: none → newton-2
Dan Sneddon (dsneddon)
Changed in tripleo:
importance: Undecided → Wishlist
Revision history for this message
Steven Hardy (shardy) wrote :

Bumping to n-3 as I don't see any code posted and we've only got about a week until the milestone.

Changed in tripleo:
status: New → Triaged
tags: added: spec-lite
Steven Hardy (shardy)
Changed in tripleo:
milestone: newton-2 → newton-3
Dan Sneddon (dsneddon)
Changed in tripleo:
status: Triaged → In Progress
Revision history for this message
Dan Sneddon (dsneddon) wrote :

Upstream change merged into Master: https://review.openstack.org/#/c/339854/

Changed in tripleo:
status: In Progress → Fix Committed
Changed in tripleo:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.