Load balancing is normally used in bandwidth shortage situation,  in order to achieve an equal throughput on the links. But do we really need LB in a case where we could have infinite redundant capacity for each link? And first of all, does LB have any drawbacks? Why we should avoid id?

Nowadays the most widely used  LB algorithm  consist of hashing a flow (source IP/PORT and destination IP/PORT) so that it each flow would take a unique path. The reason is  to keep the flow consistent from end to end, and to avoid packet delay offset, which can be highly disruptive with real time application.

Another reason to not implement LB,  is too increase troubleshooting accuracy: if we know that each flow has a predictable and fixed path, then we could spend less time diagnose network issues

How link state routing protocols behave with LB?

OSPF:  if we do not want to tweak with every link metric, we can set OSPF ECMP (Equal Cost Multi Path) to 1 (range is from 1 to 32).

ISIS:  same as OSPF: force max-paths to 1 and then   

Turning off link states protocol LB means that we do not rely on hashing function, but instead we pick up only one of the possible complementary paths.

But how OSPF/ISIS chose their best one?

They do this way:

1)      Metric calculation. 2)      If same metric, then LB 3)     If maximum path 1 is present, then the path is selected based on network type: Point-to-point preferred over Broadcast. 4)     On configuring same network type on both interfaces, higher interface IP is selected.

So max-paths command can be used to steer traffic only one side and rely on the higher interface IP as a tie breaker. The only drawback of this design is that we don’t have a ready-to-use alternate path in the RIB/FIB,  and hence a shortest-path-tree recalculation must be performed to install the backup path.