Description of problem: I tried to add bond device bond0 with "nmcli c add type bridge-slave" but failed. Instead, I needed to configure connection.master and connection.slave-type properties directly. I'd like to know if this is an intended behavior or a defect. Version-Release number of selected component (if applicable): # cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.0 (Maipo) # rpm -qa | grep NetworkManager NetworkManager-glib-0.9.9.1-29.git20140326.4dba720.el7_0.x86_64 NetworkManager-0.9.9.1-29.git20140326.4dba720.el7_0.x86_64 NetworkManager-config-server-0.9.9.1-29.git20140326.4dba720.el7_0.x86_64 NetworkManager-tui-0.9.9.1-29.git20140326.4dba720.el7_0.x86_64 # uname -a Linux rhel7 3.10.0-123.13.2.el7.x86_64 #1 SMP Fri Dec 12 19:51:03 EST 2014 x86_64 x86_64 x86_64 GNU/Linux Steps to Reproduce: 1. Intended configuration ens6 -| |--bond0--br0 (192.168.1.11/24) ens7 -| 2. Create bridge br0 # nmcli c add type bridge ifname br0 con-name bridge-br0 # nmcli c mod bridge-br0 bridge.stp no # nmcli c mod bridge-br0 ipv4.method manual ipv4.addresses "192.168.1.11/24 192.168.1.1" # nmcli c mod bridge-br0 ipv4.dns 8.8.8.8 ipv4.dns-search redhat.com # nmcli c down bridge-br0 # nmcli c up bridge-br0 3. Create bonding device bond0 # nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup # nmcli c add type bond-slave ifname ens6 con-name bond-slave-ens6 master bond0 # nmcli c add type bond-slave ifname ens7 con-name bond-slave-ens7 master bond0 4. Create bridge-slave with bond0 # nmcli c add type bridge-slave ifname bond0 con-name bridge-slave-bond0 master bridge-br0 # nmcli c NAME UUID TYPE DEVICE bridge-slave-bond0 2d89f01d-d005-4a5d-8d27-f04b697d7ac5 802-3-ethernet -- bond-slave-ens7 ecc99c0e-19b7-4d55-ad4b-5d0f7c9d3864 802-3-ethernet ens7 bond-slave-ens6 a5b42f25-b231-4115-8167-5ecfa47cf80c 802-3-ethernet ens6 bond-bond0 348c9233-8b37-467d-95c1-296ddf425fd9 bond bond0 bridge-br0 0d5772ac-bf53-48e5-9b51-c4c3e6d7db7e bridge br0 eth0 bc302e8f-f5f3-478d-bf87-e77d3288dac7 802-3-ethernet eth0 As seen above, DEVICE is not assigned to bridge-slave-bond0 and fails to activate it as below. # nmcli c up bridge-slave-bond0 Error: no device found for connection 'bridge-slave-bond0'. Even after rebooting the sysmtem, the situation remains the same. 5. Instead of using bridge-slave type, I configured connection.master and connection.slave-type properties. It worked. # nmcli c delete bridge-slave-bond0 # nmcli c mod bond-bond0 connection.master br0 # nmcli c mod bond-bond0 connection.slave-type bridge # nmcli c up bond-bond0 # nmcli c up bond-slave-ens6 # nmcli c up bond-slave-ens7 # nmcli c NAME UUID TYPE DEVICE bond-bond0 348c9233-8b37-467d-95c1-296ddf425fd9 bond bond0 bridge-br0 0d5772ac-bf53-48e5-9b51-c4c3e6d7db7e bridge br0 bond-slave-ens7 ecc99c0e-19b7-4d55-ad4b-5d0f7c9d3864 802-3-ethernet ens7 eth0 bc302e8f-f5f3-478d-bf87-e77d3288dac7 802-3-ethernet eth0 bond-slave-ens6 a5b42f25-b231-4115-8167-5ecfa47cf80c 802-3-ethernet ens6 # cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens6 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens6 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 52:54:00:eb:91:9c Slave queue ID: 0 Slave Interface: ens7 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 52:54:00:aa:a4:66 Slave queue ID: 0 # brctl show bridge name bridge id STP enabled interfaces br0 8000.525400eb919c no bond0
(In reply to Etsuji Nakai from comment #0) > Description of problem: > > I tried to add bond device bond0 with "nmcli c add type bridge-slave" but > failed. Instead, I needed to configure connection.master and > connection.slave-type properties directly. I'd like to know if this is an > intended behavior or a defect. Yes, nmcli has limitations in creating slave profiles directly. 'bridge-slave', 'bond-slave' and 'team-slave' just offer ethernet type at the moment. We will work on this in the future to improve it. As you figured out, you need to create all the profiles separately as ordinary types, and then make them as slaves later by modifying master and slave-type properties. For example, for creating bond over VLANs, you will create all connections: $ nmcli con add type ethernet con-name myeth1 ifname eth1 $ nmcli con add type ethernet con-name myeth2 ifname eth2 $ nmcli con add type vlan con-name vlan111 dev eth1 id 111 $ nmcli con add type vlan con-name vlan222 dev eth2 id 222 $ nmcli con add type bond con-name jamesbond ifname bond007 mode 802.3ad And then you edit the VLANs to became slaves of the bond: $ nmcli con edit vlan111 nmcli> remove ipv4 nmcli> remove ipv6 nmcli> set connection.slave-type bond nmcli> set connection.master bond007 nmcli> save nmcli> quit and the same for vlan222 It is also possible to create/edit ifcfg files directly as before, because NetworkManager reads them. You just have to let NetworkManager know when you are done with the changes. Call 'nmcli con reload' as root to do that. (See also monitor-connection-files option in man Networkmanager.conf). Also, there is the GUI nm-connection-editor that allows stacking connections while creating them (will offer other types than ethernet for slave types).
Ok. I understand that this is a known limitation. Please close this ticket. Hope it will be imporved soon ;)
Damn, I spent almost a day in our datacenter trying to understand why my bond0/team0 device could not be added to the bridge, and then I stepped onto this bug. These limitations should find their way inside the official Red Hat manuals, as this configuration is not described as not supported in RHEL 7.
We plan to improve the nmcli editing for RHEL 7.2, so I am leaving this open as an RFE.
With the version of NetworkManager that will be shipped with RHEL-7.3 the desired configuration is done like this: # nmcli c add type bridge ifname br0 con-name bridge-br0 # nmcli c add type bond ifname bond0 con-name bridge-slave-bond0 master bridge-br0 # nmcli c add type ethernet ifname ens6 con-name bond-slave-ens6 master bond0 # nmcli c add type ethernet ifname ens7 con-name bond-slave-ens7 master bond0 Note the absence of "*-slave" types and presence of "master" option to denote a slave.
This is working well according to reproducer from comment 10
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2016-2581.html