Systems and methods for implementing per-session load balancing of packets that increase traffic sharing and reduce systematic unequal distribution of traffic are provided by virtue of one embodiment of the present invention. A method for operating a selected router is provided that uses a load balancing algorithm that is configured to de-correlate distribution of sessions among the active paths at the selected router relative to distributions of sessions of other algorithms at other routers of said network. Packets arriving at the selected router are assigned to an output path according to the load balancing algorithm. A method of routing a packet received at a router having an associated identifier is provided. The source address and a destination address of the packet are obtained. An output path is selected according to a load balancing algorithm that uses the associated identifier, the source address, and the destination address as inputs, and the packet is routed to the output interface associated with the selected output path. A look-up table that is configured using the identifier can be used in selecting the output path. A router storing an identifier assigned to the router is provided; the identifier is used in determining per-session routing of incoming packets.
Methods and systems for distributing packets across all available output paths within a network is provided. A distribution key is extracted from each packet and is hashed to generate a hash value. An output path for each packet is selected by using all N bits of the hash value to address a distribution table having at least 2.sup.N indications of the output paths available for that packet. Thus, the stream of packets is distributed, or split up, across the available output paths, thereby balancing the load. In some embodiments, the order of the output paths is randomized within each distribution table. Other embodiments include a forwarding table used to determine the available output paths for a particular packet. In yet other embodiments, the distribution key includes the packet's source and destination; thus preventing packets within the same stream having varying latencies due to traveling along varying paths.