Hi Joe, hi Michael,

I completely welcome to add more text to the Interface description section 
(3.1.2). Currently this section is very short and says regarding the (higher 
layer) interface described in FRC793:

"A User/TCP Interface is defined in [RFC0793] providing six user
   commands: Open, Send, Receive, Close, Status.  This interface does
   not describe configuration of TCP options or parameters beside use of
   the PUSH and URGENT flags.“

This text was already added based on Joe’s input. Please provide more text if 
you think this is not sufficient. 

Probably we should at least add one more sentence describing the TCP-to-User 
interface (as it is called in RFC 793) like this:

„Further the TCP-to-User interface is described providing information on the 
local connection name, the response string, the send and received buffer 
addresses, the Byte count (which counts bytes received) as well as the PUSH 
flag and URGENT flag.“

However, from my point of view I actually think that these (basic) things do 
not need to be discussed in more detail because the described interface is 
completely okay and can probably be mostly say as it is. The more complicated 
question is which additional things are needed and, even more important, how 
can you design a transport interface where the application does not need to 
choose the protocol first. Because the interface in RFC 793 only describes a 
User/TCP interface where TCP already determines a certain transport service or 
a set of transport services features relating to specific transport components. 
The whole goal or taps is to make things more flexible which mean we need more 
information before we open a connection and probably also during the 
connection. One information could be „I want to use a TCP header“ and maybe 
together with these features… However, as soon as we have chosen certain 
protocol which might be TCP be still need Open, send, receive and closes 
commands as described in RFC 793.

So what I want to say is, that the described interface in RFC 793 is so basic 
that it is not wrong and should be described in this doc (as it is) but it does 
help us very much to get to the goal we would like to reach in taps which I 
currently would describe as: Extend the application layer interface to 
consequently provide a more flexible transport layer. Or even better the other 
way around: Create a more flexible transport layer which most likely will lead 
to an extended application-level interface.

Another thing I also would like to say (again) at this point is that the 
current doc will not specify an new interface. We on purpose ‚only‘ talk about 
transport components and features in this document because we first need to 
know what we want to do before we can talk about the interface.

However, again, if you think there is something important missing in this doc, 
please send text!
Currently we will (more or less) just integrate all text that we get because it 
is much easier to discuss about text that is there and something that is not 
there. That does also mean that any text that is currently in the doc can be 
discussed, changed or removed!

Mirja



> Am 30.05.2015 um 14:24 schrieb Michael Welzl <mich...@ifi.uio.no>:
> 
> 
>> On 29. mai 2015, at 19.32, Joe Touch <to...@isi.edu> wrote:
>> 
>> First, I think this discussion would benefit from a clarification of
>> what "API" means, or at least to stop using that term in isolation.
>> 
>> There are three distinct concepts:
>> 
>>      A- abstract protocol "upper layer interface"    
>>              e.g., OPEN, CLOSE, ABORT, as per RFC 793
>> 
>>      B- programmer API
>>              e.g., Linux C/C++ TCP socket interface
>> 
>>      C- instance of a programmer API
>>              e.g., Linux Ubuntu 15.04 C/C++ TCP socket interface
>> 
>> IMO, this document MUST discuss A, and can be address potential
>> extensions to A based on examining variants of B and C.
>> 
>> There are also the protocol features, which are the properties of the
>> protocol that:
>>      - can be explicitly configured and monitored
>>              these are *exactly* A, B, and/or C above
>> 
>>      - can be implicitly detected
>>              some are based on the definition of the protocol,
>>              such as reliable, byte sequence delivery
>> 
>>              some are an artifact of the implementation,
>>              such as specific delays due to burst losses
>> 
>> However, *none* of this is a rat-hole IF TAPS is intended to explain the
>> service interface to the user. IMO, B and C above should be secondary
>> considerations after A is clearly documented, but this draft is a long
>> way from that.
> 
> I agree: A should be there, and it should probably the primary focus, as 
> starting with a list of A would add a lot of clarity to the document and the 
> discussion of it.
> 
> Some text on protocol internals, explaing what a protocol does even though 
> these things may not be exposed to an application, can be valuable even if 
> only to know which protocol to choose. So I'm not suggesting removing 
> everything but I'd agree that the focus of the document should shift towards 
> a list of A.
> 
> Cheers,
> Michael

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

Reply via email to