Bug 1730445

Summary: Changing the IP via ifcfg-<file> of a bridge on a bond drops the interfaces of the bond
Product: Red Hat Enterprise Linux 8 Reporter: Madison Kelly <mkelly>
Component: NetworkManagerAssignee: sushil kulkarni <sukulkar>
Status: CLOSED INSUFFICIENT_DATA QA Contact: Desktop QE <desktop-qa-list>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.0CC: atragler, bgalvani, fgiudici, lrintel, rkhan, sukulkar, thaller
Target Milestone: rc   
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-01-22 10:15:00 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Madison Kelly 2019-07-16 18:08:10 UTC
Description of problem:

I've got a RHEL 8 server with an IP assigned to a bridge, with a bonded interface connected to it. When I change the IP by editing the ifcfg-<device> file, then do 'ifdown <device> && ifup <device>', the bond's slaves drop and don't come back up. 

(note: the VM config is meant to mimic hardware, hence the odd config)

The file I edited was:

====
[root@el8-a01n01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-IFN_1_-_Bridge_1 
# Internet-Facing Network 1 - Bridge 1
STP="yes"
BRIDGING_OPTS="priority=32768"
TYPE="Bridge"
BROWSER_ONLY="no"
NAME="IFN 1 - Bridge 1"
DEVICE="ifn1_bridge1"
UUID="fc0c4b88-4517-48c2-8132-19f251e5a59e"
ONBOOT="yes"
BOOTPROTO="none"
IPADDR="10.255.110.1"
PREFIX="16"
GATEWAY="10.255.255.254"
DNS1="8.8.8.8"
DNS2="8.8.4.4"
DEFROUTE="yes"
ZONE="IFN1"
====

In this case, I changed 'IPADDR' from 10.255.10.1 -> 10.255.110.1, no change to the subnet. 

The bond config is:

====
[root@el8-a01n01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-IFN_1_-_Bond_1 
# Internet-Facing Network 1 - Bond 1
UUID="47c50ffc-36c6-4bac-a259-5d09552634eb"
NAME="IFN 1 - Bond 1"
DEVICE="ifn1_bond1"
BRIDGE="ifn1_bridge1"
BONDING_OPTS="mode=active-backup primary=ifn1_link1 updelay=120000 downdelay=0 miimon=100 primary_reselect=better"
TYPE="Bond"
BONDING_MASTER="yes"
BOOTPROTO="none"
IPV6INIT="no"
ONBOOT="yes"
MTU="1500"
ZONE="IFN1"
====

The two slaved interfaces are:

====
[root@el8-a01n01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-IFN_1_-_Link_1
# Internet-Facing Network 1 - Link 1
HWADDR="52:54:00:32:31:fa"
UUID="795e6cec-fe4c-46a4-ba07-690d34f1bfec"
NAME="IFN 1 - Link 1"
DEVICE="ifn1_link1"
TYPE="Ethernet"
BOOTPROTO="none"
IPV6INIT="no"
ONBOOT="yes"
USERCTL="no"
MTU="1500"
NM_CONTROLLED="yes"
SLAVE="yes"
MASTER="ifn1_bond1"
ZONE="IFN1"
====

And:

====
[root@el8-a01n01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-IFN_1_-_Link_2
# Internet-Facing Network 1 - Link 2
HWADDR="52:54:00:d4:20:b2"
UUID="916cd71b-d905-4d40-83fd-2cd7de2732ac"
NAME="IFN 1 - Link 2"
DEVICE="ifn1_link2"
TYPE="Ethernet"
BOOTPROTO="none"
IPV6INIT="no"
ONBOOT="yes"
USERCTL="no"
MTU="1500"
NM_CONTROLLED="yes"
SLAVE="yes"
MASTER="ifn1_bond1"
ZONE="IFN1"
====

The output from the ifdown/up was;

====
[root@el8-a01n01 ~]# ifdown IFN_1_-_Bridge_1 && ifup IFN_1_-_Bridge_1
Connection 'IFN 1 - Bridge 1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)

(process:3923): GLib-GIO-WARNING **: 17:19:19.869: gdbusobjectmanagerclient.c:1589: Processing InterfaceRemoved signal for path /org/freedesktop/NetworkManager/ActiveConnection/11 but no object proxy exists
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/25)
====

After the ifdown/up, I checked the /proc bond info:

====
[root@el8-a01n01 ~]# cat /proc/net/bonding/ifn1_bond1 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
====

NOTE: The interfaces are virtio-net devices. This is all in a VM setup to emulate hardware for development purposes.

And the ethtool info for the slaved interfaces;

====
[root@el8-a01n01 ~]# ethtool ifn1_link1
Settings for ifn1_link1:
	Supported ports: [ ]
	Supported link modes:   Not reported
	Supported pause frame use: No
	Supports auto-negotiation: No
	Supported FEC modes: Not reported
	Advertised link modes:  Not reported
	Advertised pause frame use: No
	Advertised auto-negotiation: No
	Advertised FEC modes: Not reported
	Speed: Unknown!
	Duplex: Unknown! (255)
	Port: Other
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: off
	Link detected: yes
[root@el8-a01n01 ~]# ethtool ifn1_link2
====

And:

====
Settings for ifn1_link2:
	Supported ports: [ ]
	Supported link modes:   Not reported
	Supported pause frame use: No
	Supports auto-negotiation: No
	Supported FEC modes: Not reported
	Advertised link modes:  Not reported
	Advertised pause frame use: No
	Advertised auto-negotiation: No
	Advertised FEC modes: Not reported
	Speed: Unknown!
	Duplex: Unknown! (255)
	Port: Other
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: off
	Link detected: yes
====

If I do 'ifup' on the bond, the slaved interfaces reconnect;

====
[root@el8-a01n01 ~]# ifup IFN_1_-_Bond_1 
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/29)
====

About 20 seconds later, network traffic starts flowing again. The ethtool output of the slaves didn't change.



Version-Release number of selected component (if applicable):

NetworkManager.x86_64                         1:1.14.0-14.el8
NetworkManager-libnm.x86_64                   1:1.14.0-14.el8
NetworkManager-team.x86_64                    1:1.14.0-14.el8
NetworkManager-tui.x86_64                     1:1.14.0-14.el8
iproute.x86_64                                4.18.0-11.el8
iproute-tc.x86_64                             4.18.0-11.el8

[root@el8-a01n01 ~]# uname -r
4.18.0-80.4.2.el8_0.x86_64


How reproducible:

Appears to be 100%


Steps to Reproduce:
1. Setup a VM with two NICs and configure as a bond/bridge as above
2. Do ifdown <bridge> && ifup <bridge>
3. Check /proc/net/bonding/<bond>

Actual results:

Slaves drop when bridge is restarted


Expected results:

Network works after 'ifup' call.


Additional info:

Comment 1 Thomas Haller 2019-07-31 11:07:31 UTC
Hi, I could not reproduce this (trying to follow the steps here, using the same NM version).
After `ifup` for me all profiles were active again.


Could you enable level=TRACE logging and provide a full logfile of NetworkManager that shows the issue?

See https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/contrib/fedora/rpm/NetworkManager.conf#n28 for hints about logging.

Comment 2 Thomas Haller 2020-01-22 10:15:00 UTC
Closing, as not sufficient information is provided.

Please reopen if the issue still exists. Thank you!!

Comment 3 Madison Kelly 2021-04-30 02:20:36 UTC
Adding this comment to stop the daily emails