Per packet vs Per destination load balancing
Per packet load balancing:
This method allows traffic distribution on a round robin fashion as stated in the previous post, this means that With per-packet load balancing enabled, the router sends one packet for destinationA over the first path, the second packet for the same destination over the second path, and so on.
Per packet load balancing is used to avoid path congestion and for insuring equal utilization for all paths to the same destination. However it may result in out-of-order packets in the data stream which may introduce some problems to sensitive applications like voice or video.
This method is supported by CEF and process switching. Process switching is processor intensive and not recommended on high traffic routers. CEF on the other hand introduces no performance impact and can be used safely.
Per Destination load balancing:
This is the default load balancing method enabled on the router. Packets for a given source-destination host pair will take the same path, even if multiple paths are available. For example, given two paths to the same network, all packets for destinationA on that network go over the first path (if having the same source in case of CEF), all packets for destinationB on that network go over the second path, and so on.
If the majority of the traffic is for a single (source,destination) pair, all traffic will use the same path leaving other paths not utilized.
This method is supported by CEF and fast switching. Fast switching has some deficiency that were solved by CEF switching."Refer to Cisco's documentation for more information about this"
Now, How to select my load balancing method?
Most platforms come with CEF enabled by default and for some of the applications CEF is mandatory. CEF supports per destination load balancing by default.
This means that the default setup (CEF with per destination load balancing) is almost enough for most available applications and you may never consider changing it.
In this case the question turns to be when should I consider per packet load balancing?
The only case I know myself is when you need to have more evenly distribution of traffic over the existing paths, in other words when you have the majority of your traffic from a single source, destination pair as stated above.
please let us know if anyone of you has come to an application that required using per packet method and happy networking :)