On 10/11/06, Alex Zeffertt <ajz at cambridgebroadband.com> wrote: > It still uses a forwarding delay. Try "brctl setfd br0 1" to set it to > 1 second. Thanks Alex. It did the trick. Could you explain why? > > Alexander Indenbaum wrote: > > Alex, > > > > That was my first thought too, but STP is disabled. > > > > On 10/11/06, Alex Zeffertt <ajz at cambridgebroadband.com> wrote: > >> Alexander Indenbaum wrote: > >> > Hello, > >> > > >> > I'm playing with dual-port NIC driver level link failover: > >> > * Driver exposes single network interface to the OS and operates both > >> > ports in active-passive failover mode. > >> > * Upon Link down event on active port, driver switches active and > >> > passive ports transparently for the OS. > >> > > >> > I'm testing the driver using Linux bridge module: "failover" dual-port > >> > NIC connected with two cables back-to-back to eth0 and eth1 which are > >> > part of br0 bridge. > >> > > >> > I simulate link fail with following scenario: > >> > * At t0 both eth0 and eth1 port links are UP, traffic is accepted by > >> > eth0 and forwarded to br0 > >> > * At t1 I manually unplug eth0 cable, causing link to go down. > >> > "Failover" driver switches the traffic immediately from eth0 to eth1, > >> > while using the same MAC address. > >> > * From t1 till t1+12 secs packets are accepted by eth1 but dropped by > >> > bridge and not forwarded to br0. > >> > * At t1+12 secs bridge starts forwarding packets from eth1 to br0 > >> > > >> > Hmm... I would expect that eth0 link down event would flush from > >> > bridge's table any MAC address associated with the port and that the > >> > bridge would start forwarding packets from eth1 to br0 immediately. > >> > > >> > Why does it take ~12 secs for bridge to learn that MAC address moved > >> > from eth0 to eth1 in the described scenario? > >> > > >> > >> It may be spanning tree, rather than MAC address learning that takes > >> so long. Bridges spend a while just listening before forwarding, to > >> avoid becoming part of a bridging loop. > >> > >> Experiment with: > >> > >> brctl showstp br0 > >> brctl stp br0 off > >> brctl setfd br0 1 > >> > >> Alex > >> > >> > > > > > > -- Alexander Indenbaum