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

shim - transport/network communication



On Mar 19, 2005, at 2:02 PM, Miika Komu wrote:
Maybe you are referring something similar to [HIP]

I might be; that remains to be shown. The spec you pointed me to, unless I missed it, gave me no sense of make-before-break behavior in the mobility it discussed, and no sense of route optimization in the address management it discussed. Show me those, and I might be in your game.


When I talk about these things, I am referring to the fact that the shared state in a TCP/SCTP/whatever session includes the current address pair - when I send, I send from an address and to an address - and the pair of addresses I select determines a number of things about the connection. Several years ago, in the context of the IAB, I asked Geoff Huston to prototype my concerns here - imagine that a machine that he is sitting at in Canberra wants to talk with a machine in Singapore that has two addresses and the two addresses have wildly different routes which result in dramatic differences in delay. He prototyped that by doing a traceroute to two systems there, the .sg server and www.singtel.com (IIRC). One gave him a ping RTT of ~100 ms, and the other gave him a ping RTT of ~650 ms. The difference was a direct route vs a route via the US west coast. In the mobility context, a device that is in the process of changing its COA has a similar issue, except that one of the addresses suddenly has infinite delay. RFC 3704 brings other concerns to the table - ingress filtering by ISPs can have truly interesting impacts on the routing of address pairs.

I would like the multihoming facility we develop to have the characteristic of always picking a pair of addresses, and therefore a route, that gives among the best available RTTs (note I didn't say "the best"; I want to avoid the worst and accept a reasonable choice) to the current instantiation of the exchange.

A simple way to prototype this in a wired network is this. If two machines A and B each have sets of addresses A' and B', then the set of routes between them is characterized by the cross product of those sets. A TCP could send a SYN on each address pair and ACK the first SYN-ACK it gets back, RST'ing the rest. This may not be the best route long term, but it will be a reasonable one in the near term. There are thoughts that come to mind quickly on scaling features of the approach (the net already is ~40% TCP control traffic, so I'm told), but as a benchmark of a simple way to calculate a reasonable result, it's not all bad. I would like the algorithm we use to generate at least as reasonable a route.

I find myself wondering whether we could use something akin to an ICMPv6 Route Redirect to ask the network to cache such disparities and advise a host of a superior next hop and address pair to use at the network layer when instantiating a host-host exchange...

In mobility, the counterpart of that issue is in a cell handoff or equivalent. There are of course cases where the device simultaneously loses connectivity one way and regains it another, resulting in a handoff that loses traffic. However, it would be really nice if (as is in fact done in at least some telephone models) in some cases we could presume that the device was reachable by two addresses and could advise its peer that it was in the process of changing. That would allow it to continue to receive on the old address for an interval while also being willing to receive on the new address, and when the peer made that change seeing its data stream change. It would further be nice of it could inject advice to its new router interface (which might even be on the same router) asking that the old address be temporarily routed by the network to that interface, so that even the old-address traffic could find its way to the device subsequent to connectivity loss.

I realize I'm asking a lot.

But I don't, I really don't, want the application to have to know ANYTHING about that...