Distributing packets from an input link to multiple output links involves
categorizing each incoming packet, selecting a mapping algorithm based on
the packet category, and using the selected mapping algorithm for each
packet to determine an output link for the respective packet. If packets
are from a category that requires the order of the packets to be
maintained, then the selected mapping algorithm causes packets from the
same set of packets to be distributed to the same output link. If packets
are from a category that does not require the order of the packets to be
maintained, then the selected mapping algorithm can cause packets to be
distributed more evenly among the multiple output links. Hashing can be
used to distribute in-order packets from the same set to the same output
link. Load balancing and round-robin distribution can be used to
distribute out-of-order packets more evenly across the output links.