Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Nov 2003 10:37:13 -0800
From:      Jonathan Feally <vulture@netvulture.com>
To:        Tim Wilde <twilde@dyndns.org>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Disable Bridge Loop Detection?
Message-ID:  <3FA94359.2070003@netvulture.com>
In-Reply-To: <Pine.BSF.4.58.0311021432001.71639@manganese.bos.dyndns.org>
References:  <Pine.BSF.4.58.0311021432001.71639@manganese.bos.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help
I don't see why do you have 2 FreeBSD Boxes running as bridges. The only 
reason I could possibly imagine, is that you are using IPFW or IPFilter 
to do some packet filtering.

Now with vrrp, each router would have a unique IP and only one of the 
routers would have the shared IP at any given time using the shared vrrp 
mac address.
Your problem lies in Layer 2 packets - where vrrp functions. A 
bridge/switch is a layer 2 device that only passes traffic to the ports 
that need the traffic and nothing more. The vrrp advertisements will be 
from the shared MAC to ff:ff:ff:ff:ff:ff. with the IP src being the 
sending router and the IP dst being a multicast address. Now when the 
change from router 1 to router 2 takes place, router 1 will go back to 
it's original mac and router 2 will get the shared mac and start sending 
advertisements. So now from your picture, Bridge #2 would see that the 
vrrp mac is coming from the other side, thus causing a loop to be detected.

You're best solution is to remove one of the bridges, and add a cheap 
10/100 hub and connect like this:

??????????????????????????   Internet Connection
         |                        |
+-----------+   +-----------+
|  router #1   |    |  router #2  |      Internet Connectivity  Routers 
on .2 and .3 with .1 as the shared IP
+-----------+   +-----------+
         |                        |
+-------------------------+    This will solve your bridge seeing a loop 
by putting all vrrp traffic on only 1 side.
|   $10-$15 10/100 Hub    |    You shouldn't see any major network 
performance hit from using a hub here.
+-------------------------+   .The only way you could possibly see a 
network performance hit, would be if you had a huge pipe.
         |
      NIC A
         |
+------------------+  
|  FreeBSD Bridge  |   IPFW or IPFilter At this point - FreeBSD box on .4
+------------------+
          |
     NIC B
          |
+-------------+   +------------+
|   Switch #1   |-x-|  Switch #2   |   Hosts on the network 
63.208.196.0/25 - Switches on .5 and .6 - if possible
+-------------+   +------------+
  |   |   |    |   |  |        |  |  |  | |   |   |
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Workstations and Servers        Machines on .10-.126 or whatever


Tim Wilde wrote:

>I'm looking for a way to disable the loop detection in the bridging code
>in FreeBSD 4.x - I'd prefer a sysctl, but I haven't been able to find one.
>Any suggestions for how to do so would be appreciated.
>
>In case anyone's wondering why I'm looking for such a thing, my problem is
>with the following topology:
>
> +----------+       +----------+
> | router 1 |       | router 2 |
> +----------+       +----------+
>      |                  |
> 63.208.196.1/25    63.208.196.2/25
>      |                  |
> +---------------+  +---------------+
> | FBSD bridge 1 |  | FBSD bridge 2 |
> +---------------+  +---------------+
>      |                  |
> +----------+       +----------+
> | switch 1 |-------| switch 2 |
> +----------+       +----------+
>      |                  |
>  various servers, 63.208.196.0/25
>
>The two routers run VRRP for redundancy, with a shared MAC address.
>Occasionally, router2 is failing to receive packets from router1 (for
>reasons we're looking into), and decides it should become the master,
>taking over the 63.208.196.1 IP with the shared MAC.  Now my two bridges
>both see that same MAC address on both of their interfaces, and the loop
>detection kicks in.  This cuts out the various links (and they fight back
>and forth cutting off - it's not pretty) with the end result of router2
>NEVER being able to get the next VRRP packet from router1 (by necessity
>they have to communicate for failover across the bridges + switches;
>otherwise they wouldn't be able to detect failures internal to that
>network).  We have to manually down the interface on router2, let things
>calm down on the FreeBSD boxen, and then bring it back up (it starts in
>backup mode, and waits at least 30 seconds, plenty of time to hear from
>router1, before it will take control again).
>
>Thanks,
>Tim
>
>  
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3FA94359.2070003>