ifup bond interface failed - NM_CONTROLLED not honored

Hi!

Does anybody else noticed any issues with channel bonding in OpenSUSE? Here’s my dilemma - I can’t bring bonded interface up because ifup thinks it is controlled by NetworkManager, but definitely it is not.

desktop:/etc/sysconfig/network # ip addr sh bond0
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 36:50:91:d1:11:3e brd ff:ff:ff:ff:ff:ff
desktop:/etc/sysconfig/network # ifconfig bond0
bond0     Link encap:Ethernet  HWaddr 36:50:91:D1:11:3E  
          BROADCAST MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

desktop:/etc/sysconfig/network # ifup bond0
**<13>Nov 27 19:35:02 santi: Network is managed by 'NetworkManager.service' -> skipping**
desktop:/etc/sysconfig/network # cat ifcfg-bond0
STARTMODE='auto'
BOOTPROTO='static'
IPADDR='192.168.10.100/24'
BONDING_MASTER='yes'
BONDING_MODULE_OPTS='mode=active-backup miimon=100'
**NM_CONTROLLED='no'**
USERCONTROL='no'
BONDING_SLAVE0='eth4'
BONDING_SLAVE1='eth5'
BROADCAST=''
ETHTOOL_OPTIONS=''
MTU=''
NAME=''
NETWORK=''
REMOTE_IPADDR=''
desktop:/etc/sysconfig/network # modinfo bonding
filename:       /lib/modules/4.4.27-2-default/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.7.1
version:        3.7.1
license:        GPL
alias:          rtnl-link-bond
srcversion:     A2FCB4F2875E9E2EA4EA0CF
depends:        
intree:         Y
vermagic:       4.4.27-2-default SMP mod_unload modversions 
signer:         openSUSE Secure Boot Signkey
sig_key:        03:32:FA:9C:BF:0D:88:BF:21:92:4B:0D:E8:2A:09:A5:4D:5D:EF:C8
sig_hashalgo:   sha256
parm:           max_bonds:Max number of bonded devices (int)
parm:           tx_queues:Max number of transmit queues (default = 16) (int)
parm:           num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int)
parm:           num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int)
parm:           miimon:Link check interval in milliseconds (int)
parm:           updelay:Delay before considering link up, in milliseconds (int)
parm:           downdelay:Delay before considering link down, in milliseconds (int)
parm:           use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm:           mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm:           primary:Primary network device to use (charp)
parm:           primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp)
parm:           lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp)
parm:           ad_select:803.ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp)
parm:           min_links:Minimum number of available links before turning on carrier (int)
parm:           xmit_hash_policy:balance-xor and 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4 (charp)
parm:           arp_interval:arp interval in milliseconds (int)
parm:           arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm:           arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp)
parm:           arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp)
parm:           fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp)
parm:           all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int)
parm:           resend_igmp:Number of IGMP membership reports to send on link failure (int)
parm:           packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int)
parm:           lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)
desktop:/etc/sysconfig/network # journalctl | grep bond | tail -10
Nov 27 18:20:34 desktop systemd-modules-load[549]: Inserted module 'bonding'
Nov 27 18:20:34 desktop systemd-udevd[605]: Could not generate persistent MAC address for bond0: No such file or directory
Nov 27 18:20:36 desktop systemd-udevd[745]: Could not generate persistent MAC address for bond0: No such file or directory
Nov 27 18:20:40 desktop SuSEfirewall2[1487]: using default zone 'ext' for interface bond0
Nov 27 18:20:43 desktop NetworkManager[1396]: <info>  (bond0): new Bond device (carrier: OFF, driver: 'bonding', ifindex: 2)
Nov 27 18:59:43 desktop systemd-modules-load[557]: Inserted module 'bonding'
Nov 27 18:59:43 desktop systemd-udevd[633]: Could not generate persistent MAC address for bond0: No such file or directory
Nov 27 18:59:45 desktop systemd-udevd[822]: Could not generate persistent MAC address for bond0: No such file or directory
Nov 27 18:59:51 desktop SuSEfirewall2[1525]: using default zone 'ext' for interface bond0
Nov 27 18:59:51 desktop NetworkManager[1486]: <info>  (bond0): new Bond device (carrier: OFF, driver: 'bonding', ifindex: 2)
desktop:/etc/sysconfig/network # dmesg | grep bond
desktop:/etc/sysconfig/network # uname -a
Linux desktop 4.4.27-2-default #1 SMP Thu Nov 3 14:59:54 UTC 2016 (5c21e7c) x86_64 x86_64 x86_64 GNU/Linux
desktop:/etc/sysconfig/network # 

Some more info:

desktop:/etc/sysconfig/network # nmcli con sh
NAME  UUID                                  TYPE            DEVICE 
HOST  bbf9b35c-f3aa-4ecc-9f1b-f30adb682b94  802-3-ethernet  eth1   
LAN1  624c6753-6db9-43e4-97a3-825962320afd  802-3-ethernet  eth2   
LAN2  5c4dc933-fd86-400f-833f-608b333f3219  802-3-ethernet  eth3   
NAT   bd65752c-80b8-44f8-b90e-fd38f0bc2226  802-3-ethernet  eth0   
desktop:/etc/sysconfig/network # systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2016-11-27 18:59:50 PHT; 40min ago
 Main PID: 1486 (NetworkManager)
    Tasks: 3 (limit: 512)
   CGroup: /system.slice/NetworkManager.service
           └─1486 /usr/sbin/NetworkManager --no-daemon

Nov 27 19:05:02 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:08:44 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:10:01 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:15:02 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:18:19 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:20:01 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:25:02 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:30:01 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:35:02 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 19:39:21 desktop NetworkManager[1486]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Hint: Some lines were ellipsized, use -l to show in full.
desktop:/etc/sysconfig/network # systemctl status wicked
● wicked.service - wicked managed network interfaces
   Loaded: loaded (/usr/lib/systemd/system/wicked.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
desktop:/etc/sysconfig/network # systemctl status wickedd
● wickedd.service - wicked network management service daemon
   Loaded: loaded (/usr/lib/systemd/system/wickedd.service; indirect; vendor preset: disabled)
   Active: inactive (dead)
desktop:/etc/sysconfig/network #

Any ideas on what I need to check?

Thank you.

This is all or nothing. Either your system is configured to use NetworkManager or wicked. I do not remember if per-interface flag was ever supported in openSUSE; if it was, this is regression and should be reported.

Hmm. I got the impression that I can still use the ‘legacy’ way of configuring the network because I still can see the network service. Then i tried stopping and disabling NetworkManager then starting network - it’s no longer there! Apparently, network points to NetworkManager!

desktop:~ # systemctl status network
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2016-11-27 20:10:15 PHT; 2h 17min ago
 Main PID: 1480 (NetworkManager)
    Tasks: 3 (limit: 512)
   CGroup: /system.slice/NetworkManager.service
           └─1480 /usr/sbin/NetworkManager --no-daemon

Nov 27 21:40:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 21:45:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 21:50:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 21:55:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 22:00:26 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 22:05:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 22:10:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 22:15:26 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 22:20:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Nov 27 22:25:25 desktop NetworkManager[1480]: <info>  connectivity: check for uri 'http://conncheck.opensuse.org' did...rtal.
Hint: Some lines were ellipsized, use -l to show in full.
desktop:~ # 

So does it mean I have the start creating bonded interfaces using NetworkManager, no hope of using the legacy way of configuring network?

Well, as implemented by openSUSE there can be only one service that is the network service. Of course you can set it to wicked (so ifup script does not complain) and manually enable NetworkManager and configure it to ignore interfaces that are under wicked control.

I did start wicked and wickedd. bond came up. I’m not complaining that openSUSE decided with a networkmanager OR wicked choice only but I was just expecting that at least they should have documented that somewhere. Or maybe I just missed it.

https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha.basicnet.html#sec.basicnet.nm
“However, NetworkManager is not a suitable solution for all cases, so you can still choose between the wicked controlled method for managing network connections and NetworkManager.”
choose between phrase is key here :stuck_out_tongue: