misc/123279: order of operations dependancy in bringing up lagg interface breaks at-boot configuration

Matthew Pounsett matt at conundrum.com
Wed Apr 30 20:00:08 UTC 2008


>Number:         123279
>Category:       misc
>Synopsis:       order of operations dependancy in bringing up lagg interface breaks at-boot configuration
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 30 20:00:07 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Matthew Pounsett
>Release:        6.3-RELEASE
>Organization:
>Environment:
FreeBSD  6.3-RELEASE FreeBSD 6.3-RELEASE #0: Wed Jan 16 04:45:45 UTC 2008 root at dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP  i386


>Description:
There is an order of operations dependancy in successfully bringing up a lagg(4) interface which is not handled by the system boot process, making it impossible to configure a lagg interface at boot time using rc.conf.

The physical interfaces used in a lagg interface must be ifconfig'd up after the lagg interface is created and configured, otherwise the lagg interface silently fails to work.  Since the system boot configuration scripts seem to configure network interfaces in alphabetical order, this often means that the physical interfaces are configured before the lagg interface, preventing normal operation.


>How-To-Repeat:
The following configuration order is necessary to get a lagg interface with a vlan up and running:
# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport bce0 laggport bce1
# ifconfig lagg0.811 create
# ifconfig lagg0.811 10.4.11.41/24
# ifconfig bce0 up
# ifconfig bce1 up

The following configuration order appears to work in that no errors are reported during configuration, but the lagg interface is unable to get packets out on the wire, or receive incoming packets:
# ifconfig bce0 up
# ifconfig bce1 up
# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport bce0 laggport bce1
# ifconfig lagg0.811 create
# ifconfig lagg0.811 10.4.11.41/24

The following configuration in rc.conf appears to be the correct way to reproduce the above configuration steps, however the lagg interface behaves as the second example (broken), not the first:
cloned_interfaces="lagg0 lagg0.811"
ifconfig_lagg0="up laggproto failover laggport bce0 laggport bce1"
ifconfig_lagg0_811="10.4.11.41/24"
ifconfig_bce0="up"
ifconfig_bce1="up"


>Fix:
This is either a problem in the lagg driver (order of operations dependancy) or the system startup scripts (order of operations in /etc/rc.d/netif).  

If it is expected that physical interfaces must be configured after the lagg interface is defined, then the bug is in the system startup scripts which should have an exception to configure lagg interfaces before configuring physical interfaces.   If that order of operations limitation is not expected, then the bug is in the lagg driver.  I'm not in a good position to say which is the case, only that one or the other is broken.




>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list