Subject: Re: connection bonding?
To: Steven M. Bellovin <smb@cs.columbia.edu>
From: Thor Lancelot Simon <tls@rek.tjls.com>
List: tech-net
Date: 12/08/2005 02:08:38
On Wed, Dec 07, 2005 at 10:42:43PM -0500, Steven M. Bellovin wrote:
> 
> Right, which is why that isn't done.  A useful heuristic is that all 
> packets for the same TCP connection should go down the same output 
> interface at each hop.  Using a hash function is a stateless 
> approximation what you want.

[I know Steve probably knows this, but perhaps some others will find it
 interesting]

Indeed, this is a much softer attempt to achieve the no-reordering
goal than some other protocols use (and it's a softer goal, too).
The SS7 link layer, for example, burns a full byte of the header on
a link-selection field -- except in cases in which an intermediate
router has a link down, routing procedure at each hop is explicitly
specified to be "use SLS value mod total number of links to pick
outbound link, rotate SLS by one bit in outbound packet".  This gives
you, unless some router has a failed link, a deterministic path
through the network for all packets that have the same SLS value;
and, in fact, the connection or transaction oriented upper layer
protocols put the same SLS value on every packet for a given
connection or transaction.

This certainly isn't the IP way but it has some really useful
properties.  For example, it lets you examine an upper layer
protocol conversation from a packet capture engine at any point
in the middle of the network, and distributes load nicely over
multiple links without reordering packets, all while allowing
a kind of multipath routing IP network designers can only dream
of.

Thor