[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Minutes / Notes



On zaterdag, jul 19, 2003, at 22:06 Europe/Amsterdam, Christian Huitema wrote:

If you have two separate multi-homing mechanisms, then the cost, in system
complexity, implementation size, amount of protocol specification work
needed, etc, etc just seems to me out of all proportion to the benefit. Talk
about second-system disease! Pick one.
Frankly, I am not sure about the "pick one". It supposes that we know exactly what we want to design, and that we can commit to one right now. Yet, there are very different trade-offs. For example, a fundamental design choice) is the layer at which identifiers are maintain. Is it IP, transport or session? The 8+8 and 16+16 designs assume that the answer is IP; the SCTP design provides a transport based solution that could in fact easily be retrofitted in a TCP+; many toolkits based on HTTP or RPC provide a form of session management. It is very unclear to me that IP would in fact be the right layer for the job.
Christian, did you see my message with subject "More random and not so random thoughts" from a few days ago? Here I address these issues. I would very much like your input on my reasoning there.

Another quite important design choice is the scope of the identifier. IP addresses have a well defined scope: they identify a way to send data to a specific interface in a system. They can be understoud as a contract between a transmission provider, the IP network, and the host. The scope of an identifier system, by definition, has to be wider.
Yes, this is true even today in IPv4: the locator function of the address concerns itself with the interface. At the same time, the identifier function works host-wide: when a packet is received over another interface than the one the packet is addressed to, and often even if this interface is down, the packet processed as the host recognizes it is addressed to it.

Yet, we don't really know how wide. Is it a host? A host is in fact a pretty loose concept. Consider clusters on one hand, multi-user systems on the other. Would you have an identifier per node in the cluster, or one per user in a multi-user system? What about process mobility? If you are running a distributed application, do you identifiy the application, an instance of it on a node, or the node that supports this instance?
I don't pretend to have all the answers here (hmmm, does this mean I normally do pretend to have all the answers?) but I have a hard time coming up with a reason why this would matter. Does the nature of that which is identified really change the identifiyng process and whatever else depends on this process?

I heard many say during the multi6 debate that applications cannot possibly handle multiple addresses well.
I'm not sure if you're referring to anything I've said, but if so: that's not what I meant. Well-designed applications could in fact handle this well, in some cases maybe even better than a generic mechanism as the application has better knowledge of what is a good idea for the task it needs to accomplish. But see my list of issues in the message I mentioned earlier for why having the applications do this as a rule is still a bad idea, IMO. And there is of course the fact that an application can't make TCP switch addresses in mid-session.

But my real point when bringing up the P2P example is that innovation happens. Swarmcast is just an example. Real-time multi-media systems are investigating something similar using layered encoded stripes instead of slices. Office automation systems use transaction processing. The list goes on. What we are observing is a distributed innovation process arbitraged by the market place. I trust that much more than a identifier/location split designed by committee.
Are you saying multihoming as we know it today, where we try to maintain (amongst others) running TCP sessions across rehoming events, is of no value?