NetworkManager Bonding Support
Summary
NetworkManager should be able to configure bond master interfaces with commonly used options and recognize their existing configuration on startup without disrupting their operation.
Owner
- Name: Pavel Šimerda
- Email: psimerda at redhat.com
- Name: Dan Williams
- Email: dcbw at redhat dot com
- Release notes owner:
Current status
- Targeted release: Fedora 20
- Last updated: 2013-10-14
- Tracker bug: #998567
- Percentage of completion: 100%
Detailed Description
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).
Benefit to Fedora
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.
Scope
- Proposal owners: dcbw
- Other developers: This feature requires changes to nm-applet (done), nm-connection-editor (done), gnome-shell, gnome-control-center (in-progress) and KDE counterparts to expose bond interfaces and their connection information in the user interface. NetworkManager also needs updates to implement the proposed changes (mostly done).
Upgrade/compatibility impact
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.
How To Test
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.
User Experience
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.
Dependencies
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 Plan
- 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.
- Contingency deadline: ?
- Blocks release? No
Documentation
Documentation will be drafted at Networking/Bonding.
Release Notes
NetworkManager now supports expanded bonding functionality and cooperates better with existing bonding tools and configurations.