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

Re: shim-aware transports



Iljitsch,

Iljitsch van Beijnum wrote:
As a result of the discussion in the shim6 session in Paris it occurred to me that we've been focussing too much on making the shim work with unmodified IP and unmodified upper layers.

This is of course extremely important, no question about that.

And needs to get shipped first, to resolve the ISPs'concerns about IPv6 deployability.


But if we're successful, it won't be long before existing transports are modified or even new ones are created that know about the shim and may be able to make the shim work better. Other transports may already be doing work that the shim must also be able to do, like SCTP.


I think this implies that our efforts basically consists of two parts, or should consist of two parts:

1. The basic shim functionality that for some reason or another should NOT be implemented in transports. For instance: reachability detection, state management and security. Having each transport do these on its own is a waste of resources and my lead to suboptimal results if one or more transports doesn't get it right.

2. Multi-address handling and transport-specific (potential) failure detection. For instance, TCP has a good idea about when its sessions aren't progressing (hence the talk about hints), SCTP can also handle multiple addresses.

Yes, but you need 2a: the stateful handling of all this in the shim layer to support the unmodified ULPs. And that is more urgent than 2.


(note the difference between failure and reachability detection.)

The idea would be that the basic shim sublayer provides a set of required building blocks. I'll call the other sublayer the "adaption layer" because it adapts existing transport behavior to the requirements of the shim. Transports or even applications that know how to work with the shim themselves may bypass the entire adaption layer, or specific parts.

Sure, that's 2a.


This would allow for the following succession in TCP/shim developments:

- Initially, TCP would be unmodified, so the shim would use the adaption layer to do address magic whenever the basic shim sublayer determines reachability has changed.

- Next step: TCP is modified slightly to provide reachability hints to the shim layer. The basic shim sublayer can optimize some of its failure/reachability detection mechanism based on this.

- Finally: TCP becomes aware of multiple addresses, and starts keeping per-address pair RTT statistics. TCP moves to another address pair either when the shim tells it to (because the shim detected a problem) or when it determines another pair is "better" based on its own statistics.

Don't forget that SCTP already contains some of this logic, and maybe DCCP needs to as well.

Thanks for articulating this. It's been in my mind for a while but I
never managed to say it clearly. It's the correct response to those who
say the problem should be solved in layer 4 - actually it has to be solved
by cooperation between layers 3 and 4.

BTW it implies a two-way API between the shim and the ULP, in which the
necessary events are transmitted up or down.

     Brian