Re: [Taps] TCP components

2015-07-16 Thread Joe Touch
Hi, Karen,

On 7/16/2015 12:57 AM, Karen Elisabeth Egede Nielsen wrote:
 What portion of RFC793's API do you consider outdated?

 HI,
 
 I was thinking about the PUSH flag mainly.
 
 In our socket api implementation we do not allow for set of PUSH in send
 calls nor do we provide the PUSH flag indication upwards on the receiver
 side.

That's consistent with RFC1122, which updates RFC793.

 I think that after RFC793 it has been clarified that TCP MAY allow for set
 of PUSH flag in send() and MAY OPTIONALLY provide this information upwards
 on the receiver side.

Yes.

 I think that it would be questionable to follow RFC793 wording here on
 PUSH.

Sure; I was being broad in my reference back to RFC793; updates need to
be chased down too, so to the extent that the updates make RFC793
outdated, you're correct. However, the bulk of RFC793's API remains in
effect.

Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-07-15 Thread Michael Welzl

 On 15 Jul 2015, at 11:03, Karen Elisabeth Egede Nielsen 
 karen.niel...@tieto.com wrote:
 
 HI Mirja, All
 
 Sorry for jumping late into this discussion.
 
 -Original Message-
 From: Taps [mailto:taps-boun...@ietf.org] On Behalf Of Mirja Kühlewind
 Sent: Thursday, June 18, 2015 10:48 AM
 To: Joe Touch
 Cc: Brian Trammell; Michael Welzl; taps@ietf.org
 Subject: Re: [Taps] TCP components
 
 Hi Joe,
 
 I believe the approach Michael is proposing is to look at existing APIs as
 a
 starting point; not only abstract APIs. The assumption is that someone who
 implemented/designed an API, thought that it would be worth to provide a
 configuration possibility to the higher layer. This assumption is more true
 for
 SCTP than for TCP because there are quite a few different TCP
 implementation that are grown over time. Quite often a new interface was
 only created because a new feature was added to TCP; and to be on the safe
 side we allow the user to turn it off again.
 
 That’s the reason why I prefer the approach we are/I'm taking right now
 (analyzing components). I think we should still describe the abstract API
 of
 RFC793 (and we do) as well as the SCTP API of RFC4960 in this document, but
 I
 personally would not and will not spend too much time analyzing other API.
 
 [Karen ]
 
 I really do not think that it makes much sense to look into outdated and
 deprecated APIs
 as specified in RFC793 and RFC4960 when we have better material available.
 For SCTP here specifically RFC6458.
 Personally I cannot support this approach. I am not saying that we need very
 detailed APIs and therefore do not want RFC793 or RFC4960,
 but I want that what we do is based on the right specs (or the right defacto
 implementations) not on known-to-be outdated ones.

I have been pointing at RFC6458 but was recently told (and I should have just 
read the thing instead of being told, sorry  :-() that this RFC does not 
specify how SCTP's functions are supposed to be exposed to applications using 
them, but describes one example implementation (in great detail) instead.
So, to identify the core functions of the protocol, RFC 4960 is probably a more 
appropriate source.


 I understand that it is difficult to find out exactly what is the fundament
 of TAPS - sometimes it is said that
 it is the existing IETF specifications - which means for example that
 SCTP-CMT and QUIC is outside of the scope.
 Then in other Taps communications - e.g. TCP components - it is said that
 one cannot fix the congestion control aspects of TCP as there I not
 one CC for TCP - and one do not know what people implements. I am not sure
 exactly what Taps should to do when
 the defacto standards (e.g. TCP) have superseded the actual standard. I
 think that it shall be on a best judgment basis and when there _are_ specs
 we should go with the most recent and sane ones and not with the outdated
 ones.

One of the very first versions of our charter started the work off with a 
document that would lay out rules for us, as a basis to make such decisions.
I venture to say that I was right to put this document there, and whoever 
recommended that I should remove it was wrong  :-)because such a document 
would now be good to have, and I think it's easier to first try to agree on 
detailed rules (a more fine-grain charter, if you will - which protocols are in 
scope, how do we decide what a service is, etc.) than trying to immediately 
agree on the actual items themselves (SCTP-CMT: include it or not? Is the Nagle 
algorithm a service or not?  etc.)

Cheers,
Michael

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-07-15 Thread Joe Touch


On 7/15/2015 2:03 AM, Karen Elisabeth Egede Nielsen wrote:
 HI Mirja, All
 
 Sorry for jumping late into this discussion.
...
 I really do not think that it makes much sense to look into outdated and
 deprecated APIs
 as specified in RFC793 and RFC4960 when we have better material available.

What portion of RFC793's API do you consider outdated?

AFAICT, it's exactly what most sockets try to support (I can't speak
about SCTP, as I haven't used it much).

Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-07-15 Thread Michael Welzl

 On 15 Jul 2015, at 12:40, Karen Elisabeth Egede Nielsen 
 karen.niel...@tieto.com wrote:
 
 Hi Michael, All
 
 
 I have been pointing at RFC6458 but was recently told (and I should have
 just
 read the thing instead of being told, sorry  :-() that this RFC does
 not specify
 how SCTP's functions are supposed to be exposed to applications using them,
 but describes one example implementation (in great detail) instead.
 So, to identify the core functions of the protocol, RFC 4960 is probably a
 more
 appropriate source.
 
 [Karen ] I both agree and disagree with this statement. My view on this is:
 
 If looking for an abstract interface I agree that many implementation
 details of RFC6458 are unnecessary.
 However a significant number of abstract functions are not described in
 RFC4960 and for control of/API for those
 one need to consult either RFC6458 - or for some of the functions - the api
 section of the RFCs defining these abstract functions.
 
 I would not know why one should consider only the core  services of SCTP
 defined by RFC4960
 as some significant protocol features are only defined by auxiliary RFCs.
 Further there are core features defined in RFC4960 for which - used (!) -
 control functions are only exposed in RFC6458.

Okay, sigh  :(   not easy, is it?


 I don't like the API parts of RFC793 as it does not so well represent the
 API of the defacto TCP implementations - not the (very few) I know anyway.
 For example both the sender side and the receiver side handling of PUSH
 flag, which we seem to speak much about here, is not an example of a feature
 where the RFC793 description well represent the implementations.
 Also it obviously cannot well represent newer features, like e.g. control of
 ECN.
 Then, right, ECN may not make it as something we want to expose. Not sure.
 
 I think that RFC793 and RFC4960 may be good starting points, but saying that
 one will not look beyond them is a misunderstanding. In my view.

I understand


 I understand that it is difficult to find out exactly what is the
 fundament of TAPS - sometimes it is said that it is the existing IETF
 specifications - which means for example that SCTP-CMT and QUIC is
 outside of the scope.
 Then in other Taps communications - e.g. TCP components - it is said
 that one cannot fix the congestion control aspects of TCP as there I
 not one CC for TCP - and one do not know what people implements. I
 am not sure exactly what Taps should to do when the defacto standards
 (e.g. TCP) have superseded the actual standard. I think that it shall
 be on a best judgment basis and when there _are_ specs we should go
 with the most recent and sane ones and not with the outdated ones.
 
 One of the very first versions of our charter started the work off with a
 document that would lay out rules for us, as a basis to make such
 decisions.
 I venture to say that I was right to put this document there, and whoever
 recommended that I should remove it was wrong  :-)because such a
 document would now be good to have, and I think it's easier to first try to
 agree on detailed rules (a more fine-grain charter, if you will - which
 protocols
 are in scope, how do we decide what a service is, etc.) than trying to
 immediately agree on the actual items themselves (SCTP-CMT: include it or
 not? Is the Nagle algorithm a service or not?  etc.)
 
 [Karen ] Yes. But learning by doing has merits as well. Perhaps one now has
 a more qualified view on what the rules should be.

Agreed!

Cheers,
Michael

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-07-15 Thread Karen Elisabeth Egede Nielsen
Hi Michael, All


I have been pointing at RFC6458 but was recently told (and I should have
just
read the thing instead of being told, sorry  :-() that this RFC does
not specify
how SCTP's functions are supposed to be exposed to applications using them,
but describes one example implementation (in great detail) instead.
So, to identify the core functions of the protocol, RFC 4960 is probably a
more
appropriate source.

[Karen ] I both agree and disagree with this statement. My view on this is:

If looking for an abstract interface I agree that many implementation
details of RFC6458 are unnecessary.
However a significant number of abstract functions are not described in
RFC4960 and for control of/API for those
one need to consult either RFC6458 - or for some of the functions - the api
section of the RFCs defining these abstract functions.

I would not know why one should consider only the core  services of SCTP
defined by RFC4960
as some significant protocol features are only defined by auxiliary RFCs.
Further there are core features defined in RFC4960 for which - used (!) -
control functions are only exposed in RFC6458.

I don't like the API parts of RFC793 as it does not so well represent the
API of the defacto TCP implementations - not the (very few) I know anyway.
For example both the sender side and the receiver side handling of PUSH
flag, which we seem to speak much about here, is not an example of a feature
where the RFC793 description well represent the implementations.
Also it obviously cannot well represent newer features, like e.g. control of
ECN.
Then, right, ECN may not make it as something we want to expose. Not sure.

I think that RFC793 and RFC4960 may be good starting points, but saying that
one will not look beyond them is a misunderstanding. In my view.


 I understand that it is difficult to find out exactly what is the
 fundament of TAPS - sometimes it is said that it is the existing IETF
 specifications - which means for example that SCTP-CMT and QUIC is
 outside of the scope.
 Then in other Taps communications - e.g. TCP components - it is said
 that one cannot fix the congestion control aspects of TCP as there I
 not one CC for TCP - and one do not know what people implements. I
 am not sure exactly what Taps should to do when the defacto standards
 (e.g. TCP) have superseded the actual standard. I think that it shall
 be on a best judgment basis and when there _are_ specs we should go
 with the most recent and sane ones and not with the outdated ones.

One of the very first versions of our charter started the work off with a
document that would lay out rules for us, as a basis to make such
decisions.
I venture to say that I was right to put this document there, and whoever
recommended that I should remove it was wrong  :-)because such a
document would now be good to have, and I think it's easier to first try to
agree on detailed rules (a more fine-grain charter, if you will - which
protocols
are in scope, how do we decide what a service is, etc.) than trying to
immediately agree on the actual items themselves (SCTP-CMT: include it or
not? Is the Nagle algorithm a service or not?  etc.)

[Karen ] Yes. But learning by doing has merits as well. Perhaps one now has
a more qualified view on what the rules should be.

BR, Karen

Cheers,
Michael

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-20 Thread Jon Crowcroft
i dont have any spare time to do it, but maybe someone could have a go at
analyzing all the different TCP offload techniques, which would give
another lens to view this through...

On Sat, Jun 20, 2015 at 9:35 AM, Michael Welzl mich...@ifi.uio.no wrote:


  On 20. jun. 2015, at 00.55, Joe Touch to...@isi.edu wrote:
 
 
 
  On 6/19/2015 3:42 PM, Mohamed Oulmahdi wrote:
 
 
  On Sat, Jun 20, 2015 at 12:11 AM, Joe Touch to...@isi.edu
  mailto:to...@isi.edu wrote:
 
 
 You're getting far ahead of the conversation, IMO. This document
 needs to start by explaining the services we already have before
 jumping into a service of services model.
 
 I don't disagree with the goal, but it's impractical to develop a
 meta-interface when the base interface has not been described.
 
 
  It is just to say that TCP already defines its services, and the goal is
  not to give another definition of these services, but only to change the
  way they are exposed to applications. So the services definition already
  exists, but implicitly.
 
  It's explicit - see section 3.8 of RFC 793. The issue with that variant
 is that it captures the state of TCP in 1981; it has evolved quite a bit
 since then. Although we do have a 793-bis in the works, the update of that
 section hasn't been tackled yet.
 
  Let's put it this way:
 
- if the goal of TAPS is to unify existing APIs,
then those APIs need to be summarized together in one place
 
 
- if TAPS is indeed focused solely on an alternate API,
then it should NOT try to 'restate' the existing TCP API
in a TAPS doc
 
  Do, or do not; there is no try.
- Yoda

 TAPS is focused on an alternate API that it's based on existing
 transports. As a way of analyzing existing transports and creating a
 foundation for this API, document #1 is written. I think this discussion is
 about the approach taken to write document #1.

 So now I wonder what you're complaining about, as you go on about TCP
 already defining its services implicitly in the API. I mean, yes it does,
 okay - and so?  You criticized the SCTP API for not being abstract enough -
 so clearly if we'd just copy+paste the API descriptions of the RFCs of the
 considered transports in a list, that would look pretty messy. You seem to
 want a clean approach, but you're not going to get that unless we focus
 on TCP alone  :-)

 I've been proposing go through transport APIs and then analyze what we
 have, because this way, SCTP is already going to give us a long list of
 services.
 You've been saying that we should start with TCP. Well okay, but the
 service list there is pretty narrow. Maybe the TCP API isn't properly
 described in the current draft, okay, I think we can take that criticism
 for what it is. Still, I don't know what you're really after - in the end,
 we're going to get a list that's pretty similar to what's there now, and
 that's what we want, right?

 - unordered reliable delivery of messages
 - delivery of messages with timed delivery
 - reliable delivery of a data stream (naturally that's ordered)

  and so on. Right? Or what else is it you want / expect?

 Cheers,
 Michael

 ___
 Taps mailing list
 Taps@ietf.org
 https://www.ietf.org/mailman/listinfo/taps

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-20 Thread Wesley Eddy
On 6/19/2015 6:55 PM, Joe Touch wrote:
 It's explicit - see section 3.8 of RFC 793. The issue with that variant
 is that it captures the state of TCP in 1981; it has evolved quite a bit
 since then. Although we do have a 793-bis in the works, the update of
 that section hasn't been tackled yet.

I'm not sure that it will be tackled, but we should discuss that on the
TCPM list :).  Since there are no newer RFCs that alter, deprecate, or
replace that API, I don't think we have a good basis to change it in
793bis.

It's still pretty reasonable in my opinion.

-- 
Wes Eddy
MTI Systems

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-19 Thread Joe Touch



On 6/19/2015 2:39 PM, Mohamed Oulmahdi wrote:


Of course, no one use a protocol without knowing the service it offers.
When the application requests a TCP connection, it really request a
reliable and ordered connection oriented service. The protocols
primitives are used to each one to offer a part of this service.


My point is that the API primitives do define the service offered in 
this case. You can't use TCP without using OPEN; OPEN exists only 
because TCP is connection-oriented.


Similarly, SEND/RECEIVE are handled in-order and the byte order within 
each call is preserved - which indicates that this is a byte stream 
service. The lack of boundary marking within the SEND/RECEIVE calls - 
and the indication that SEND/RECEIVE block boundaries are not preserved 
- indicates that this is a byte stream service with no internal boundaries.


All of this can be gleaned from the API in section 3.8 of RFC 793.

 The

difficulty occurs when several protocols are available, with mainly a
certain service overlapping.


You're getting far ahead of the conversation, IMO. This document needs 
to start by explaining the services we already have before jumping into 
a service of services model.


I don't disagree with the goal, but it's impractical to develop a 
meta-interface when the base interface has not been described.


Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-19 Thread Joe Touch



On 6/19/2015 3:42 PM, Mohamed Oulmahdi wrote:



On Sat, Jun 20, 2015 at 12:11 AM, Joe Touch to...@isi.edu
mailto:to...@isi.edu wrote:


You're getting far ahead of the conversation, IMO. This document
needs to start by explaining the services we already have before
jumping into a service of services model.

I don't disagree with the goal, but it's impractical to develop a
meta-interface when the base interface has not been described.


It is just to say that TCP already defines its services, and the goal is
not to give another definition of these services, but only to change the
way they are exposed to applications. So the services definition already
exists, but implicitly.


It's explicit - see section 3.8 of RFC 793. The issue with that variant 
is that it captures the state of TCP in 1981; it has evolved quite a bit 
since then. Although we do have a 793-bis in the works, the update of 
that section hasn't been tackled yet.


Let's put it this way:

- if the goal of TAPS is to unify existing APIs,
then those APIs need to be summarized together in one place


- if TAPS is indeed focused solely on an alternate API,
then it should NOT try to 'restate' the existing TCP API
in a TAPS doc

Do, or do not; there is no try.
- Yoda

Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-19 Thread Mohamed Oulmahdi
On Fri, Jun 19, 2015 at 6:15 PM, Joe Touch to...@isi.edu wrote:



 On 6/19/2015 6:22 AM, Michael Welzl wrote:
 
  On 19 Jun 2015, at 14:03, Mirja Kühlewind 
 mirja.kuehlew...@tik.ee.ethz.ch wrote:
  So there current API is always bound to a specify protocol which
  already provides you a certain set of service feature. At least in
  TCP there is not much choice left and there the current API does
  not give us a good indication which services are actually provided
  by TCP. Therefore from my point of view the only way to identify
  these services is to look at the protocol itself and not only the
  API. In SCTP it’s different and we definitely have to and will
  discuss the existing API in the document.
 
  Exactly that's why I thought starting with TCP's API
  (even when it's the abstract one) is not very helpful.
 
  Joe, Aaron: what is it you were expecting us to take away from
  reading section 3.8 of RFC 793?

 No. IMO, the current description of that API fails to indicate the
 controls *already* available to TCP.

 I don't agree that the TCP API doesn't indicate the service TCP provides
 - it's just implicit. E.g.:

 OPEN call
 indicates TCP is connection oriented

 SEND/RECEIVE calls
 indicates TCP is an ordered byte stream,
 that the user-level byte boundaries are NOT
 related to message boundaries, etc.

 Yes, there's some reading between the lines to do here.



Of course, no one use a protocol without knowing the service it offers.
When the application requests a TCP connection, it really request a
reliable and ordered connection oriented service. The protocols primitives
are used to each one to offer a part of this service. The difficulty occurs
when several protocols are available, with mainly a certain service
overlapping. In this case, exposing Transport services by the protocols
offering them is not convenient to applications developers because they
must be aware of the several protocols details that are not always evident
to some of them. The objective is so simply to change this service
exposition from a protocol-based to a service-based, allowing developers to
request services without knowing anything about the underlying protocols
offering these services.



  ( I can see it highlighting the need
  to discuss communication patterns (or decide for a specific one) in
  document #2, but not really contributing much to the list in document
  #1 ? )

 I believe the opposite is true.

 Joe

 ___
 Taps mailing list
 Taps@ietf.org
 https://www.ietf.org/mailman/listinfo/taps

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-19 Thread Mohamed Oulmahdi
On Sat, Jun 20, 2015 at 12:11 AM, Joe Touch to...@isi.edu wrote:


 You're getting far ahead of the conversation, IMO. This document needs to
 start by explaining the services we already have before jumping into a
 service of services model.

 I don't disagree with the goal, but it's impractical to develop a
 meta-interface when the base interface has not been described.


It is just to say that TCP already defines its services, and the goal is
not to give another definition of these services, but only to change the
way they are exposed to applications. So the services definition already
exists, but implicitly.



 Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-19 Thread Brian Trammell
hi Michael,

A few replies inline.

 On 18 Jun 2015, at 15:54, Michael Welzl mich...@ifi.uio.no wrote:
 
 
 On 17 Jun 2015, at 12:13, Brian Trammell i...@trammell.ch wrote:
 
 hi Michael, all,
 
 A couple of random points inline at various levels of quotation...
 
 On 17 Jun 2015, at 10:44, Michael Welzl mich...@ifi.uio.no wrote:
 
 
 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.
 
 That's part of the point we're trying to address here. The realization we 
 had here is that components *don't* necessarily map to feature, and it's not 
 clear that we can simply ignore those components that don't map, since they 
 may have impact on the interfaces/features it is possible to (reasonably) 
 implement atop those protocols.
 
 Not harmful to list but pretty useless?!
 
 Let's start with TCP as probably the most difficult example (indeed, that's 
 why we worked out this new arrangement of components for TCP first). A 
 completely clean and unambiguous decomposition of TCP into its features -- 
 what, I agree, we're after in the end -- is not *really* possible, because 
 the protocols as defined and implemented weren't really composed of discrete 
 features. The evolution of loss-based congestion control, for instance, was 
 predicated on the particular loss signals that were available at the time it 
 was first defined. The error detection mechanism likewise relies on the fact 
 that reliability is provided by retransmission. One could say that given the 
 parallel evolution of computing power that all these choices made by TCP 
 were the only obvious ones at the time. But it's precisely the co-evolution 
 of reliability and congestion control that makes gluing FEC to TCP so 
 fraught with peril. That's an important point to capture IMO.
 
 I expect that the same exercise for SCTP will show a simpler mapping between 
 components and features, since it *was* designed as a composition of 
 features.
 
 I expect that too, but I still don't understand the point of the component 
 list above. I mean, yes, you may be able to map and say we need components X 
 Y Z to provide features A and B but how does this help TAPS?

So as I see it, features are the TAPS view of the world of the future -- the 
set of things that transport protocols can do, and that a better interface can 
give you access to. Components are the view of the world of the present -- 
what the current definitions *and deployed implementations* of transport 
protocols can do, and what each of those features imply.

There are a few ways you can implement the TAPS API. The one we chose to pursue 
in the WG (or at least I thought we had) is that the TAPS API takes (1) 
information from the application about its requirements in terms of features 
and parameters on those features (if available), (2) information from the path 
about which transport protocols and options are usable on the path, and the 
selects a transport protocol, and acts as glue between the API and the 
underlying protocol.

In this approach, it is IMO important to catalog the protocol components (and 
the interactions among them) since the mappings between components and features 
might not be clean. This might not be the document to do that in. But we wanted 
to do the exercise to see what the outcome looked like.

snip

 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…
 
 I lean towards this other one, of beginning with the knobs,
 
 ... understanding that interface definitions aren't just about which knobs 
 (and indicators) the API provides, but also the interaction patterns it 
 enables, and that these interaction patterns can also be made inefficient or 
 even impractical by the details of the protocol in question. (It's always 
 *possible* to implement object transfer over streams, or time domain 
 transfer over objects, or to translate asynchonous events into a synchronous 
 API. That the Web and video thereon work is proof of that. You can run the 
 whole Internet over DNS, if you want to. It would not work as well as the 
 one we have today. :) )
 
 Yes, I agree, and I hope that this won't really bite us... or what's your 
 plan for addressing this problem?

In this document, I don't think we need to do anything. If we take an 

Re: [Taps] TCP components

2015-06-19 Thread Joe Touch


On 6/19/2015 7:15 AM, Mirja Kühlewind wrote:
 Cool! I think that the alternative approach Brian just proposed:
 Start with the feature we think/know we want to have and the compare
 them with what we have in the first document.

-1

If you don't know what you already have, it's hard to figure out why
what you need isn't there.

Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-19 Thread Joe Touch


On 6/19/2015 6:22 AM, Michael Welzl wrote:

 On 19 Jun 2015, at 14:03, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch 
 wrote:
 So there current API is always bound to a specify protocol which
 already provides you a certain set of service feature. At least in
 TCP there is not much choice left and there the current API does
 not give us a good indication which services are actually provided
 by TCP. Therefore from my point of view the only way to identify
 these services is to look at the protocol itself and not only the
 API. In SCTP it’s different and we definitely have to and will
 discuss the existing API in the document.

 Exactly that's why I thought starting with TCP's API 
 (even when it's the abstract one) is not very helpful.

 Joe, Aaron: what is it you were expecting us to take away from 
 reading section 3.8 of RFC 793?

No. IMO, the current description of that API fails to indicate the
controls *already* available to TCP.

I don't agree that the TCP API doesn't indicate the service TCP provides
- it's just implicit. E.g.:

OPEN call
indicates TCP is connection oriented

SEND/RECEIVE calls
indicates TCP is an ordered byte stream,
that the user-level byte boundaries are NOT
related to message boundaries, etc.

Yes, there's some reading between the lines to do here.

 ( I can see it highlighting the need
 to discuss communication patterns (or decide for a specific one) in
 document #2, but not really contributing much to the list in document
 #1 ? )

I believe the opposite is true.

Joe

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-18 Thread Michael Welzl

 On 18 Jun 2015, at 10:48, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch 
 wrote:
 
 Hi Joe,
 
 I believe the approach Michael is proposing is to look at existing APIs as a 
 starting point; not only abstract APIs.

No, wrong. Only abstract ones from RFCs, I said this before. These things would 
typically have preceding IETF debate, whereas trying to cover implementations 
is a huge and probably meaningless endeavour (the bar may be high for adding 
function calls to an API on system X and low for an API on system Y).


 The assumption is that someone who implemented/designed an API, thought that 
 it would be worth to provide a configuration possibility to the higher layer. 
 This assumption is more true for SCTP than for TCP because there are quite a 
 few different TCP implementation that are grown over time. Quite often a new 
 interface was only created because a new feature was added to TCP; and to be 
 on the safe side we allow the user to turn it off again.
 
 That’s the reason why I prefer the approach we are/I'm taking right now 
 (analyzing components). I think we should still describe the abstract API of 
 RFC793 (and we do) as well as the SCTP API of RFC4960 in this document, but I 
 personally would not and will not spend too much time analyzing other API. 
 However, everybody who has time and is interested in this can of course 
 provide his/her outcome as input for this document and we will happily take 
 it and compare it to what we have so far.

But you misunderstood me. I was talking about RFCs (btw 6458, not 4960), not 
implementations out there.

More below, answering Joe  (hm, that rhymes ;-)  ) -


 
 Mirja
 
 
 Am 17.06.2015 um 20:10 schrieb Joe Touch to...@isi.edu:
 
 
 
 On 6/17/2015 1:44 AM, Michael Welzl wrote:
 I think that this discussion with Joe maybe suffered from focusing on
 TCP. 
 
 To be fair, TCP has a simpler abstract API.
 
 SCTP is perhaps a better starting point because it supports
 almost everything. 
 
 IMO, that makes it very hard as a starting point, and I also think that
 TCP's variant of an API description is much better as an example.
 
 E.g., Section 10 of RFC4960 claims it defines an abstract API
 (ULP-to_SCTP), but it begins by describing a call to initialize a data
 structure (INITIALIZE). That's decidedly NOT an abstract API; it's a
 generic description of an implementation issue.
 
 IMO, if we don't understand the difference between the API in RFC793 vs.
 that in RFC4960 (and why 793 is a better example), then this is going to
 be a very bumpy road.

How abstract it is in the RFC indeed isn't my main concern here: it's to start 
with the interface (however abstract it is) offered to applications as 
described in the RFCs, as this reflects what the designers (with some level of 
IETF consensus) thought should be exposed.
Now, of course SCTP has more options and is more complex in its usage than TCP, 
but it covers a larger part of the space of services in protocols - so I 
thought it's a good starting point, as in: 80% done by looking at 1 protocol, 
check the others for the remaining 20%. Something like that.

This is just me being pragmatic and trying to have a more systematic approach 
to developing a list of services. I agree with Brian that some level of 
arbitrariness will always be there, but we must try to minimize it I think.

Cheers,
Michael

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-18 Thread Mirja Kühlewind
Hi Michael,

 Am 18.06.2015 um 15:43 schrieb Michael Welzl mich...@ifi.uio.no:
 
 
 On 18 Jun 2015, at 10:48, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch 
 wrote:
 
 Hi Joe,
 
 I believe the approach Michael is proposing is to look at existing APIs as a 
 starting point; not only abstract APIs.
 
 No, wrong. Only abstract ones from RFCs, I said this before. These things 
 would typically have preceding IETF debate, whereas trying to cover 
 implementations is a huge and probably meaningless endeavour (the bar may be 
 high for adding function calls to an API on system X and low for an API on 
 system Y).

Okay, but then I don’t really understand your approach fully. Yes we should 
document and look at what’s already specified in RFC, however isn’t the goal of 
taps to actually figure out how to change/extend/improve these APIs? How can we 
figure out what’s missing/wrong if we only look at what’s already there?

Mirja

 
 
 The assumption is that someone who implemented/designed an API, thought that 
 it would be worth to provide a configuration possibility to the higher 
 layer. This assumption is more true for SCTP than for TCP because there are 
 quite a few different TCP implementation that are grown over time. Quite 
 often a new interface was only created because a new feature was added to 
 TCP; and to be on the safe side we allow the user to turn it off again.
 
 That’s the reason why I prefer the approach we are/I'm taking right now 
 (analyzing components). I think we should still describe the abstract API of 
 RFC793 (and we do) as well as the SCTP API of RFC4960 in this document, but 
 I personally would not and will not spend too much time analyzing other API. 
 However, everybody who has time and is interested in this can of course 
 provide his/her outcome as input for this document and we will happily take 
 it and compare it to what we have so far.
 
 But you misunderstood me. I was talking about RFCs (btw 6458, not 4960), not 
 implementations out there.
 
 More below, answering Joe  (hm, that rhymes ;-)  ) -
 
 
 
 Mirja
 
 
 Am 17.06.2015 um 20:10 schrieb Joe Touch to...@isi.edu:
 
 
 
 On 6/17/2015 1:44 AM, Michael Welzl wrote:
 I think that this discussion with Joe maybe suffered from focusing on
 TCP. 
 
 To be fair, TCP has a simpler abstract API.
 
 SCTP is perhaps a better starting point because it supports
 almost everything. 
 
 IMO, that makes it very hard as a starting point, and I also think that
 TCP's variant of an API description is much better as an example.
 
 E.g., Section 10 of RFC4960 claims it defines an abstract API
 (ULP-to_SCTP), but it begins by describing a call to initialize a data
 structure (INITIALIZE). That's decidedly NOT an abstract API; it's a
 generic description of an implementation issue.
 
 IMO, if we don't understand the difference between the API in RFC793 vs.
 that in RFC4960 (and why 793 is a better example), then this is going to
 be a very bumpy road.
 
 How abstract it is in the RFC indeed isn't my main concern here: it's to 
 start with the interface (however abstract it is) offered to applications as 
 described in the RFCs, as this reflects what the designers (with some level 
 of IETF consensus) thought should be exposed.
 Now, of course SCTP has more options and is more complex in its usage than 
 TCP, but it covers a larger part of the space of services in protocols - so I 
 thought it's a good starting point, as in: 80% done by looking at 1 protocol, 
 check the others for the remaining 20%. Something like that.
 
 This is just me being pragmatic and trying to have a more systematic approach 
 to developing a list of services. I agree with Brian that some level of 
 arbitrariness will always be there, but we must try to minimize it I think.
 
 Cheers,
 Michael

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-18 Thread Michael Welzl

 On 17 Jun 2015, at 12:13, Brian Trammell i...@trammell.ch wrote:
 
 hi Michael, all,
 
 A couple of random points inline at various levels of quotation...
 
 On 17 Jun 2015, at 10:44, Michael Welzl mich...@ifi.uio.no wrote:
 
 
 On Jun 17, 2015, at 10:28 AM, Mirja Kühlewind 
 mirja.kuehlew...@tik.ee.ethz.ch wrote:
 
 Hi Michael,
 
 see below.
 
 Am 17.06.2015 um 09:36 schrieb Michael Welzl mich...@ifi.uio.no:
 
 Hi,
 
 
 On 11 Jun 2015, at 13:52, Mirja Kühlewind 
 mirja.kuehlew...@tik.ee.ethz.ch 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.
 
 That's part of the point we're trying to address here. The realization we had 
 here is that components *don't* necessarily map to feature, and it's not 
 clear that we can simply ignore those components that don't map, since they 
 may have impact on the interfaces/features it is possible to (reasonably) 
 implement atop those protocols.
 
 Not harmful to list but pretty useless?!
 
 Let's start with TCP as probably the most difficult example (indeed, that's 
 why we worked out this new arrangement of components for TCP first). A 
 completely clean and unambiguous decomposition of TCP into its features -- 
 what, I agree, we're after in the end -- is not *really* possible, because 
 the protocols as defined and implemented weren't really composed of discrete 
 features. The evolution of loss-based congestion control, for instance, was 
 predicated on the particular loss signals that were available at the time it 
 was first defined. The error detection mechanism likewise relies on the fact 
 that reliability is provided by retransmission. One could say that given the 
 parallel evolution of computing power that all these choices made by TCP 

Re: [Taps] TCP components

2015-06-18 Thread Michael Welzl

 On 18. jun. 2015, at 15.56, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch 
 wrote:
 
 Hi Michael,
 
 Am 18.06.2015 um 15:43 schrieb Michael Welzl mich...@ifi.uio.no:
 
 
 On 18 Jun 2015, at 10:48, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch 
 wrote:
 
 Hi Joe,
 
 I believe the approach Michael is proposing is to look at existing APIs as 
 a starting point; not only abstract APIs.
 
 No, wrong. Only abstract ones from RFCs, I said this before. These things 
 would typically have preceding IETF debate, whereas trying to cover 
 implementations is a huge and probably meaningless endeavour (the bar may be 
 high for adding function calls to an API on system X and low for an API on 
 system Y).
 
 Okay, but then I don’t really understand your approach fully. Yes we should 
 document and look at what’s already specified in RFC, however isn’t the goal 
 of taps to actually figure out how to change/extend/improve these APIs? How 
 can we figure out what’s missing/wrong if we only look at what’s already 
 there?

*My* goal is, and has always been, to provide a simpler, general API that is 
protocol independent. Note that this is not only for simplicity for ease of use 
BUT also for the sake of being able to automatize. After all the major goal is 
to remove the strict binding between applications and a specific protocol 
choice.

To be able to do this (documents 2 and 3), we first need a list of the existing 
services - our toolbox, if you wish (document 1). Figuring out what's missing / 
wrong about today's APIs (except that they are bound to a specific protocol) 
has never been *my* major intention, and I certainly don't see that as the goal 
of this document. I'd be surprised if that's what the charter suggests?! But of 
course my opinion is only what it is, the charter reflects the consensus...

All this being said, it can be a nice side-effect of the document (and note 
that noone knows what a TAPS system will really look like, and how these RFCs 
will actually end up being used). So I'm not strongly opposing the approach 
you're now following in that I don't see a big issue with there being a list of 
components - I just think it's not particularly useful for the goal of the 
document and doesn't really help the group progress towards its goals. I 
thought that proposing something more systematic with less arbitrariness could 
make it easier to put everyone in the same boat (in a way: look, the boat HAS 
to be like that, there wasn't much choice, sit down please rather than sorry 
I painted it green, I like that color; I can understand you would have 
preferred a blue boat...).

Cheers,
Michael

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-18 Thread Joe Touch

+1

On 6/18/2015 9:44 AM, Michael Welzl wrote:

*My*  goal is, and has always been, to provide a simpler, general API
that is protocol independent. Note that this is not only for
simplicity for ease of use BUT also for the sake of being able to
automatize. After all the major goal is to remove the strict binding
between applications and a specific protocol choice.

To be able to do this (documents 2 and 3), we first need a list of
the existing services - our toolbox, if you wish (document 1).
Figuring out what's missing / wrong about today's APIs (except that
they are bound to a specific protocol) has never been*my*  major
intention, and I certainly don't see that as the goal of this
document. I'd be surprised if that's what the charter suggests?! But
of course my opinion is only what it is, the charter reflects the
consensus...


___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


Re: [Taps] TCP components

2015-06-17 Thread Mirja Kühlewind
Hi Michael,

see below.

 Am 17.06.2015 um 09:36 schrieb Michael Welzl mich...@ifi.uio.no:
 
 Hi,
 
 
 On 11 Jun 2015, at 13:52, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch 
 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 

Re: [Taps] TCP components

2015-06-17 Thread Erik Nygren
Another major item to add to the list would be:

- MTU/MSS negotiation and management, including initial negotiation,
response to packet-too-big signals from middle-boxes, and optional probing.

To what degree is it worth talking about known design limitations and
issues associated with each?  For example, checksums in TCP not being large
enough to detect errors in many high-volume real-world scenarios?
Erik


On Jun 11, 2015 7:53 AM, Mirja Kühlewind mirja.kuehlew...@tik.ee.ethz.ch
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.

 Brian and Mirja



 ___
 Taps mailing list
 Taps@ietf.org
 https://www.ietf.org/mailman/listinfo/taps

___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps


[Taps] TCP components

2015-06-11 Thread Mirja Kühlewind

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.


Brian and Mirja



___
Taps mailing list
Taps@ietf.org
https://www.ietf.org/mailman/listinfo/taps