On Tue, 16 Mar 1999, Bennett Todd wrote:
Don't know of a link, would love to see one. But as I understand it, the general strategy is that very roughly each side separately runs simple algorithms to attempt to schmeer traffic over the multiple links.
Yes, I know that much as well. There are several schemes to balance the traffic.
The most popular is MAC hashing when the system uses n last bits to determine which port to use for traffic. The downside is that one interface can still send to at most one interface in the agregate (trunk). The way that Sun describes it in it's literature is a bit confusing "Uses the last two bits of the MAC address of both the source and destination. For four ports the source and destination addresses are XORed: Result = 00, 01, 10, 11, which selects the port." In reality the destination address (the address of the trunk, not to be confused with the destination port which could be very different I guess) usually ends with 00 for the four port scenario, so effectively you AND the source address with 11 and get, voila, the last two bits. Also usually the address of the trunk is the address of the "head" interface and the subsequent interfaces in the trunk are sequentially numbered so the two bit port sequence numbers derived above map directly into the last two bits of the port addresses. Of course this method breaks down when one of the ports dies. Sun doesn't mention the scheme they use to take over for a dead port or ports. NetApps link aggregation (EtherChannel, trunking, bonding, etc.) is implemented in a similar way as I can tell from the docs I read.
Sun also implements a better and simpler scheme. It's called round robin. Why is it better? I rotates usage of the interfaces, i.e. nth packet to the (n mod (number of interfaces))th interface. KISS right. Well, there are some downsides, some stacks don't handle packets out of sequence very well, but that's a good possibility on non-guaranteed delivery networks anyway. The benefit, one interface can send to all available interfaces in the agregate (trunk). Thus even if you have only two trunked hosts you'll 100% potential utilization of the trunk in contrast to 25%. I WOULD LOVE TO SEE NETAPP IMPLEMENT THIS. I already mentioned it to them. I hope the standard that's being developed includes this scheme. COME ON NETAPP, THIS IS "KISS!"
At any rate, I was looking for some documentation on how the switch and the trunked host negotiate the connection. I looked into the standard, but it's incomplete and a bit too much to quickly digest.
Tom