NetworkManager's existing support for bond interfaces covers a limited number of use-cases and can conflict with existing bonding configurations created by tools like libvirt. The purpose of this Fedora feature is to implement more flexible bonding infrastructure in NetworkManager to support an expanded number of use-cases and to be more cooperative with other users of bonding.

Support will be added to NetworkManager to detect the existing configuration of a bond interface and its slaves and to seamless "take over" that connection without disrupting it. Even if the existing configuration is not backed by ifcfg files on-disk, NetworkManager will leave that configuration on the interface unless told to change it by the user via GUI or CLI tools. Additional bond interface configuration will be added to expand the use-cases and hardware that NetworkManager can configure (eg primary, use_carrier, xmit_hash_policy, etc).

Bonding is necessary for many enterprise setups, including virtualization and fail-over. Other use-cases include acquiring just one IP address for a laptop that contains both wifi and ethernet interfaces connected to the same network to ensure applications are affected by switching which interface is connected to the network. These changes will ensure a smoother, less confusing user experience for those users who run NetworkManager and use bond interfaces.

NetworkManager will begin to manage bond connections defined by existing ifcfg files, and will pick up these interfaces as non-destructively as possible. It will not "down" the interface and reconfigure it, but will read the existing configuration of the bond interface and bond slaves and operate with that configuration.

Ensure that a bond interface created by libvirt/netcf or the system initscripts is recognized by NetworkManager but not changed or taken down until explicit actions by the user are taken (eg, 'nmcli' or the network applet is used to change connections or deactivate slave interfaces).

Furthermore, check that new bond interface options (like xmit_hash_policy or primary) carry over to sysfs when set in the configuration, either through nm-connection-editor or through ifcfg files.

Both the UI tools (applets, connection editors, etc) and the CLI tools (nmcli) will be updated for the enhanced bonding configuration options. Users will see bond interfaces in network indicators and be able to inspect their status through the applets or the command-line tools.

For non-GUI installs, the changes should be limited to NetworkManager and nmcli, and should not require changes to libvirt, netcf, initscripts, or other external tools. NetworkManager should be able to cooperate with the configurations set up by these tools.

For GUI environments like GNOME or KDE, the bridge interface will not appear in configuration utilities (like nm-connection-editor or gnome-control-center) or network applets (gnome-shell, etc) until those components add explicit support for bridge connections, but nmcli will still be able to start/stop them from a terminal.

Contingency mechanism: Ensure NetworkManager only controls bond interface it is told to control via NM_CONTROLLED in ifcfg files. Tools that need bonding would have to continue to use the same tools as before.