A data center load balancer can afford, by its nature, to do as much work as it needs to in order to get the information it needs. The same can not be said for the ECMP / LAG case which Brian, Shane, Steve, and I have been talking about.

Specifically, with the structure of extension headers, the possible use of crypto, and the use of tunnels (and probably other issues), it becomes more and more difficult for network devices along the path which need to perofrm ECMP or LAG (L3 or L2 sleection among equivalent paths) while keeping flows together, to do their job. By getting the flow label used in a way that carries enough information, this problem can become MUCH simpler.

None of your concerns seem to relate to the this problem.
In particular, I see no issue of network side control for this.

Yours,
Joel

On 1/10/2011 12:55 AM, Fred Baker wrote:

On Jan 9, 2011, at 7:05 PM, Steven Blake wrote:

The network doesn't control port numbers, so his argument obviously doesn't 
apply to ECMP or LAG.

There are more than two common uses of load balancing. ECMP is a side effect of 
routing; we decide to multipath route when we know of two next hops that get us 
to a remote destination with the same routing metric. Link Aggregation (LAG) is 
what is done when I have multiple paths between myself and my next hop and want 
to distribute a data stream across them. Yes, those are important.

The most common use of load balancing is most likely the use in data centers, where I 
decide that (to pick but one example) a given HTTP GET is appropriate to one set of 
servers and a different one, perhaps within the same pipelined TCP session, is 
appropriate to a different one, and multiplex the session across these sets of servers as 
appropriate. If you look up the class of products referred to as "load 
balancers", you will find them in those and similar applications. There are a number 
of other uses, but they are typified by that use case.

If I want a random hash, I can - and do, and have since before the Internet was a 
commercial network - already generate that, by hashing the pseudoheader (actually just 
the source and destination address) of a stream of datagrams. That means that I don't 
have to remember which flow label I sent on one path and which I sent on another. If you 
want to tell me "oh, I take the modulus of the flow label with the number of servers 
I have to select which server", or any similar stateless algorithm, I can do it with 
that hash just as easily. And yes, that gives me a session predictably going to the same 
server. But it doesn't allow me to balance loads. To balance loads, I need to estimate 
the load on individual paths, and assign new data streams to paths as they change in 
their actual loading.

What having the network be in control of the flow label does is allow the 
network to balance loads. Which is what you were trying to do, wasn't it?
--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to