Subject: Re: connection bonding?
To: der Mouse <mouse@Rodents.Montreal.QC.CA>
From: Steven M. Bellovin <smb@cs.columbia.edu>
List: tech-net
Date: 12/07/2005 20:42:23
In message <200512072235.RAA20918@Sparkle.Rodents.Montreal.QC.CA>, der Mouse wr
ites:
>
>One of the most bothersome things about agr(4), to me, is that which
>link a packet goes out seems to depend on nothing but a hash of
>assorted data related to the packet. This means that if links of
>different speeds are aggregated, the slower one(s) will get overloaded.
>I'd expect it to simply pick the interface with the shortest output
>queue....
>
That's mostly a feature...
The agr(4) man page hints at the issue. The problem is that you
*really* don't want TCP segments from a single connection arriving out
of order. While TCP semantics guarantee that things will work, it will
cause a tremendous performance hit. In particular, if a sender
receives 3 duplicate ACKs in a row, it slams its congestion window shut
and restarts the whole slow start business.
Cisco's orginal implementation did do load-balancing, as you suggest.
They learned the hard way why that was a Really Bad Idea.
--Steven M. Bellovin, http://www.cs.columbia.edu/~smb