Hi Michael,

see below.

> Am 17.06.2015 um 09:36 schrieb Michael Welzl <[email protected]>:
> 
> Hi,
> 
> 
>> On 11 Jun 2015, at 13:52, Mirja Kühlewind <[email protected]> 
>> wrote:
>> 
>> Hi all,
>> 
>> we gave it a first try to rewrite the component section for TCP. The insight 
>> I took from the discussion on the list is that components probably are much 
>> more linked to the implementation (choices) a certain protocol made while 
>> features are probably more high-level having the question in mind what does 
>> an application potentially want/need to know.
>> 
>> So for the components in TCP we now have the following list:
>> 
>> - Connection-oriented bidirectional communication using three-way handshake 
>> connection setup with
>>      feature negotiation and an explicit distinction between passive and 
>> active open:
>>      This implies both unicast addressing and a guarantee of return 
>> routability.
>> - Single stream-oriented transmission:
>>      The stream abstraction atop the datagram service provided by IP is 
>> implemented by dividing
>>      the stream into segments.
>> - Limited control over segment transmission scheduling (Nagle's algorithm):
>>      This allows for delay minimization in interactive applications.
>> - Port multiplexing, with application-to-port mapping during connection 
>> setup:
>>      Note that in the presence of network address and port translation 
>> (NAPT), TCP ports are
>>      in effect part of the endpoint address for forwarding purposes.
>> - Full reliability based on ack-based loss detection and retransmission:
>>      Loss is sensed using duplicated acks ("fast retransmit"), which places 
>> a lower bound on
>>      the delay inherent in this approach to reliability.
>> - Error detection based on a checksum covering the network and transport 
>> headers as well as payload:
>>      Packets that are detected as corrupted are dropped, relying on the 
>> reliability mechanism
>>      to retransmit them.
>> - Window-based flow control, with receiver-side window management and 
>> signaling of available window:
>>      Scaling the flow control window beyond 64kB requires the use of an 
>> optional feature,
>>      which has performance implications in environments where this option is 
>> not supported.
>> - Window-based congestion control reacting to loss, delay, retransmission 
>> timeout, or
>>      an explicit congestion signal (ECN):
>>      Most commonly used is a loss signal from the reliability component's 
>> retransmission mechanism.
>>      TCP reacts to a congestion signal by reducing the size of the 
>> congestion window;
>>      retransmission timeout is generally handled with a larger reaction than 
>> other signals.
>> 
>> We are currently still working on the list of features that results from 
>> thiese components but we are not there yet. Probably we not only need the 
>> features itself but also properties/aspects (or however you want to call 
>> this) of the feature. We already had this discussion a bit but wanted to 
>> postpone the decision if we really need to define an own term for this until 
>> we are sure that we need it.
>> 
>> We are posting this list of (TCP) components now because we would like to 
>> get some feedback if this goes into the right direction/is on the right 
>> level of detail before we go on and apply this also to other protocols.
> 
> I agree that the list below is closer to what I think a "component" should be 
> ... but looking at it, is it not even clearer now that components are not 
> what TAPS is after? To me this list now contains lots and lots of details 
> that are irrelevant to the service provided to the application. Not harmful 
> to list but pretty useless?!

In this case we decided to list/discuss rather some more details, so that 
people can understand what we had in mind. We might remove some of these 
details/explanations at the end (or move those parts that are actually relevant 
into the feature section (4)).

> 
> And how do you draw the line for what goes in and out of such a list? E.g., 
> on which basis did you decide that FACK, FRTO, PRR and DSACK are not 
> mentioned?

We tried to ask ourself which parts have an effect on the behavior of the flow 
that could potentially be of interest for the application. We might have missed 
some points. Actually Gorry already point out some.

The next step is to work on the feature list and figure out how these things 
that are interesting for the application would be described in a more general 
way (independent of the concrete algorithm that is used by one protocol) and 
also discuss which features actually should be exposed because they have a real 
use for the application.

> 
> To me, this whole thing is just too full of arbitrariness. We should aim for 
> a systematic approach that minimizes the number of arbitrary decisions made 
> IMO.

For us the systematic approach is to look at the implementation of existing 
protocol an figure out which algorithm have an influence on the traffic that 
might be interest for a higher layer to control. So we always had, to some 
extend, the application in mind. However, you could go for a even more generic 
approach and only look at the implementation and as a first step figure where 
are any knobs that in principle could be configurable and then afterwards 
discuss all of these very specific knobs. I though about this approach and 
think it would be an interest exercise and potentially the right way to go. But 
I also think that the overhead would be super large and I don’t think it would 
give us much more than we have right now. So we the current approach we might 
need to expect some arbitrariness…

Mirja

> 
> Cheers,
> Michael

_______________________________________________
Taps mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/taps

Reply via email to