When reviewing #650 it occurred to me that there are situations in which we can multiple paths in the RIB that are functionally the same from the perspective of forwarding. This has the potential to adversely skew forwarding behaviors such as ECMP. Consider the example where your max fanout is 2, you have 4 routes in the rib, 3 of which are functionally the same (same nexthop) and the two that you select for installation into the forwarding plane are two of the equivalent routes. This circumvents what most people would want there which is path diversity in the forwarding plane.
We should probably be performing some form of deduplication during or prior to bestpath selection to ensure this sort of unfortunate skew does not occur.
When reviewing #650 it occurred to me that there are situations in which we can multiple paths in the RIB that are functionally the same from the perspective of forwarding. This has the potential to adversely skew forwarding behaviors such as ECMP. Consider the example where your max fanout is 2, you have 4 routes in the rib, 3 of which are functionally the same (same nexthop) and the two that you select for installation into the forwarding plane are two of the equivalent routes. This circumvents what most people would want there which is path diversity in the forwarding plane.
We should probably be performing some form of deduplication during or prior to bestpath selection to ensure this sort of unfortunate skew does not occur.