My first thought would be that OSPF is thinking it's the same LSA instead of simply the same prefix. I don't know much about brocade, but with the LSA outputs from the Cisco box I could probably tell you more.
In general, for Cisco, if the routes are equal in the protocol they will both be presented to the routing table. The routing table, will, by default, install both paths and do ECMP. If the metrics or protocols differ, they will not ECMP. This would also apply to different LSAs for the same prefix.
The simple answer is to make the CAM timer equal or slightly longer than the corresponding interface ARP timer, but there are at least three different options to select from...
Option 1: Lower all interface ARP Timers
This option works best if you have a decent-sized layer2 switched network, a reasonable number of ARP entries and few routed interfaces. This method also is preferable if you like to see PC mac entries age out of the topology quickly.
- On all IOS ethernet interfaces facing an ethernet switch:
arp timeout 240
- On all IOS ethernet interfaces facing an ethernet switch:
hold-queue 200 in
and hold-queue 200 out
to avoid dropping ARP packets during periodic ARP-refreshes (these limits could be higher, or lower depending on how many ARP refreshes you think that you'll need to handle at once). If you are adjusting Selective Packet Discard values, then you should follow the guidelines in the paper I linked.
This forces Cisco IOS to refresh the ARP table within four minutes, if it hasn't happened otherwise for a given ARP entry. The obvious disadvantage is that this doesn't scale well if you have lots of ARP entries... the limits vary by platform. I have used this with a few hundred ARPs per router on Catalyst 4500 / 6500 (the Layer3 SVIs) without any issues.
Option 2: Increase the switch CAM Timers
This option works best if you have a large number of ARP entries (i.e. thousands, such as an intense VMWare environment could see).
- On all IOS switches:
mac address-table aging-time 14400
, or mac address-table aging-time 14400 vlan <vlan-id>
for any Vlan that is of concern.
This change adjusts timers that most people assume are fixed at 300 seconds (on Cisco IOS), so be sure to include this in continuity docs. The side-effect of this is that CAM table entries linger for 4 hours after the PC is removed (which can be either good or bad, depending on your PoV). If 4 hours is too long, see the next option...
Option 3: Change both the interface ARP timers, and the switch CAM Timers
This option avoids hideously-long CAM timers in Option 2 at the expense of more configuration. You can choose whether you need 900 seconds, 1800 seconds, or whatever... just make sure your CAM and ARP timers match; thus, you will need to configure both Option 1 and Option 2 in your topologies.
Best Answer
ECMP takes place when multiple output (equal-cost) paths are available for forwarding packets to the same network destination.
The hash function must map information from the incoming packet to the output interface.
For example, let me make up an illustrative overly simple hashing function for this:
1) Picture every output interface with an ifIndex like this:
Number of interfaces: 3
2) Given the destination IP address A.B.C.D, take the least significant byte D.
Example: IP = 1.0.0.5, D = 5
3) Divide the value of D by the number of interfaces, take the remainder, then and add one to it.
4) Use the result as ifIndex and throw the packet at its interface.
Example: For IP 1.0.0.5, write the packet to output interface Fa2 (ifIndex=3).