NetworkManager Bonding Support
NetworkManager should be able to configure bond master interfaces with commonly used options and recognize their existing configuration on startup without disrupting their operation.
- Targeted release: Fedora 20
- Last updated: 2013-03-19
- Percentage of completion: 50%
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.
This feature requires changes to nm-applet, nm-connection-editor, gnome-shell, gnome-control-center and KDE counterparts to expose bond interfaces and their connection information in the user interface. NetworkManager also needs updates to implement the proposed changes.
How To Test
Ensure that a bond interface created by libvirt/netcf or the system initscripts is recognized by NetworkManager but not touched by it until either '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.
The changes should be limited to NetworkManager and it's associated tools, 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.
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.
Documentation will be drafted at Networking/Bonding.
NetworkManager now supports expanded bonding functionality and cooperates better with existing bonding tools and configurations.