How it works?
If you have two routers / two Layer3 switches connected with two L3 links (two paths) you can route with two equal static routes towards the same prefix and the router will load balance traffic across both links.
The idea is to make two same static routes on the same router but with different next-hops. The question was: Which link or which route will be used? And if the traffic will be load balanced, which mechanism will be used to share the traffic across both of links.
ip route 10.0.0.0 255.0.0.0 192.168.10.2 ip route 10.0.0.0 255.0.0.0 192.168.11.2
If both routes have the same destination prefix and no different Administrative Distance is configured, both routes will get installed in the routing table. Routing table will then leave to the switching process the job of load-sharing. That is, route-cache mechanisms, CEF in case of Cisco device will do load-share per session using source-destination IP.
More about that
CEF Load-Balancing Overview
CEF – Cisco Express Forwarding load balancing is by default using source and destination IP to calculate the hash and distribute traffic over multiple paths.
There are two methods of path selection, per-destination being default one:
- load balancing per-destination
- load balancing per-packet
Per-Destination Load Balancing
Router will take packet source and destination IP to calculate the hash and use multiple paths to load share traffic. Packets from one source destined towards same destination will always take the same path. Traffic destined for different source-destination pairs tend to go across different paths.
CEF is enabled by default on Cisco router so Per-destination load balancing is enabled by default to. It is fairly logical that Per-destination load balancing is default one because is ensuring that packets for a given host pair have the best chance to arrive in order which can not always be true with Per-Packet Load Balancing
Per-Packet Load Balancing
Router will use round-robin to send successive data packets over different links. If you have destinations that are available with single path at the end it will work fine for other situations Per-packet load balancing can reorder packets and affect performance of TCP stack. So it’s not really the right way to go if you are forwarding VoIP or using any kind of stream on your network.
CEF is on by default, this is the command to enable it if you find some device with CEF off:
router# ip cef
This is how you see if CEF is working:
router# show ip cef
This is how you see CEF entry of some prefix:
router# show ip cef 10.10.10.0
This is how you change load-balancing from Per-Destination to Per-Packet:
ip load-sharing per-packet