RE: Summary of responses so far and proposal moving forward [Was Re: [tcpm] Is this a problem?]

"Anantha Ramaiah (ananth)" <> Sat, 24 November 2007 07:53 UTC

Return-path: <>
Received: from [] ( by with esmtp (Exim 4.43) id 1Ivppi-00046I-Mv; Sat, 24 Nov 2007 02:53:46 -0500
Received: from tcpm by with local (Exim 4.43) id 1Ivpph-0003wq-Qd for; Sat, 24 Nov 2007 02:53:45 -0500
Received: from [] ( by with esmtp (Exim 4.43) id 1Ivppc-0003gP-AG for; Sat, 24 Nov 2007 02:53:40 -0500
Received: from ([]) by with esmtp (Exim 4.43) id 1Ivppb-0002O7-PR for; Sat, 24 Nov 2007 02:53:40 -0500
Received: from ([]) by with ESMTP; 23 Nov 2007 23:53:39 -0800
Received: from ( []) by (8.12.11/8.12.11) with ESMTP id lAO7rd9M010104; Fri, 23 Nov 2007 23:53:39 -0800
Received: from ( []) by (8.12.10/8.12.6) with ESMTP id lAO7rdb4018426; Sat, 24 Nov 2007 07:53:39 GMT
Received: from ([]) by with Microsoft SMTPSVC(6.0.3790.1830); Fri, 23 Nov 2007 23:53:38 -0800
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable
Subject: RE: Summary of responses so far and proposal moving forward [Was Re: [tcpm] Is this a problem?]
Date: Fri, 23 Nov 2007 23:53:37 -0800
Message-ID: <>
In-Reply-To: <>
Thread-Topic: Summary of responses so far and proposal moving forward [Was Re: [tcpm] Is this a problem?]
Thread-Index: AcgtoFpOgt2rNyvPSV26pdUJJ4LQZgAyeaQg
From: "Anantha Ramaiah (ananth)" <>
To: Joe Touch <touch@ISI.EDU>
X-OriginalArrivalTime: 24 Nov 2007 07:53:38.0893 (UTC) FILETIME=[1FBF2FD0:01C82E6F]
DKIM-Signature: v=0.5; a=rsa-sha256; q=dns/txt; l=3170; t=1195890819; x=1196754819; c=relaxed/simple; s=sjdkim3002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version;;; z=From:=20=22Anantha=20Ramaiah=20(ananth)=22=20<> |Subject:=20RE=3A=20Summary=20of=20responses=20so=20far=20and=20proposal= 20moving=20forward=20[Was=20Re=3A=09[tcpm]=20Is=20this=20a=20problem?] |Sender:=20; bh=rIPip7uwkAgdnWMojRpaFCV3nBEE5F3BalhDw0sQIlU=; b=C+LfKgObUPLupCtqXEby2w9KDg/LZwiRl8c9N5oQd/ekdCg8TlYp67MWEVDZ0ytBe7Yl9f9P 2HtXwJETX6LBUsCrIAao6qUktIM+is0/lkv7oqIX0I7y5Pp1f3hnPXBG;
Authentication-Results: sj-dkim-3;; dkim=pass ( sig from verified; );
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 92df29fa99cf13e554b84c8374345c17
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>

> > Not sure what you mean above. RFC Compliance applies to 
> protocol, not 
> > to API.
> Please see RFC793. It specifies an API. Although the IETF 
> avoided APIs for a while, my understanding is that they are 
> again considered relevant standards work.

I don't think so. The API's specified by 793 needs to treated as
illustrational purposes only, they are not supposed to be interpreted as
standards. Like you noted above : "It specifies an API" not "the API".
Now RFC 793 doesn't talk about sockets, it doesn't talk about SO_LINGER
and SO_KEEPALIVE for example, does it mean that any stack which
implements API's not mentioned by RFC 793, isn't compliant? Nope.  

Again for example Keepalive option is very common in all TCP stacks, now
RFC doesn't mention about TCP keepalives, 
does it make a particular TCP stack which implements Keepalive
non-compliant, if so all TCP stacks out there (BSD, Linux etc.,) would
become non-compliant :-)

So, the point in short is if I have an socket API, which tells TCP,
abort this connection after a stipulated time in persist state, the TCP
implementation can start a timer (a new timer OR overload an unused
timer) the moment the connection enters persist state, and can tear down
the connection after the timer expiry. This action would be treated as
compliant to 1122 as would the OS running a timer in it's own context
and killing the TCP connection. The key point is that resulting action
is the same no matter which method you chose to exercise a particular
protocol action.

> > API is a local thing. One implementation can use sockets, whereas 
> > other can using something totally different, what matters 
> is what is 
> > sent on the wire and the response which is received.
> A protocol is defined by:
> 	- formats of packets sent on the wire
> 	- state at the endpoints
> 	- events that cause state transitions, packet emissions,
> 	  and signals to the application, triggered by:
> 		- packets arriving
> 		- upper layer commands (i.e., "application" events)
> 		- time

True but protocol (TCP) is one thing, upper (application) and lower
layer (IP) interfaces is another. The protocol compliance is measured by
"if I send something, what do you I get in response" "If I send
something in state X, is the behaviour as defined by the standard?".
Upper layer and lower interface are simply local and they tend to evolve
and that is benefit of a generic design of a particular protocol layer.

> RFC793 is a good example of this set.
> The upper layer commmands and signals to the upper layer 
> constitute the API, and it is as much a part of the protocol 
> as packets on the wire.
> Although there are a variety of ways to implement a SEND, 
> implementations must include them in their API, and they and 
> their basic arguments are specified in RFC793.

Right, but these are the basic API's. The API's tend to expand and
evolve and as long as their evolution doesn't "disturb" the standard,
then we are golden.


tcpm mailing list