kern/156226: Lagg failover does not announce the failover to switch
Per von Zweigbergk
pvz at itassistans.se
Wed Apr 6 15:30:10 UTC 2011
>Synopsis: Lagg failover does not announce the failover to switch
>Arrival-Date: Wed Apr 06 15:30:09 UTC 2011
>Originator: Per von Zweigbergk
IT-Assistans Sverige AB
FreeBSD redacted.invalid 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011 root at mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
I have an environment where I want failover between two links to the same subnet on two different switches (some kind of HP Procurve Switches, I don't have the exact model number of them handy).
The switch itself has not been configured to treat the ports specially.
When the link goes down, lagg switches its ACTIVE interface properly, however there is no gratuitous ARP sent out on the link. This means that the CAM on the switch is never updated.
More information is available at a forum thread on the FreeBSD forums: https://forums.freebsd.org/showthread.php?p=102093 - This problem is known since at least FreeBSD 8.0. The problem does not seem to be specific to the em driver, it seems to happen with bce also.
Get two switches, hook them together.
On a FreeBSD 8.2 host with two NIC:s, configure them to use lagg-failover. Plug the two NICs into the two different switches.
Yank out the cable to simulate a network failure of the currently-active network card, while running a ping from another host to that host.
Observe that the affected host stops responding to ping.
Send some random traffic from the affected host, and observe that it now starts responding to ping again. Alternatively, wait until the CAM tables in the switch time out.
Make the lagg driver send out a gratuitous ARP in case of a failover. This will update the CAM tables and prevent this problem from occurring.
More information about the freebsd-bugs