Re: [EME] Re: transport recovery at the APP layer ?

Joe Touch <touch@ISI.EDU> Thu, 16 November 2006 22:03 UTC

Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1GkpKc-0006HI-AG; Thu, 16 Nov 2006 17:03:38 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1GkpKa-0006H3-SQ for eme@irtf.org; Thu, 16 Nov 2006 17:03:36 -0500
Received: from vapor.isi.edu ([128.9.64.64]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1GkpKZ-0007Pt-G7 for eme@irtf.org; Thu, 16 Nov 2006 17:03:36 -0500
Received: from [127.0.0.1] (88.sub-75-215-225.myvzw.com [75.215.225.88]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id kAGM2eaw025305; Thu, 16 Nov 2006 14:02:42 -0800 (PST)
Message-ID: <455CDFF9.1050501@isi.edu>
Date: Thu, 16 Nov 2006 14:02:33 -0800
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 1.5.0.8 (Windows/20061025)
MIME-Version: 1.0
To: Rémi Després <remi.despres@wanadoo.fr>
Subject: Re: [EME] Re: transport recovery at the APP layer ?
References: <E6F7A586E0A3F94D921755964F6BE00662592C@EXCHANGE2.cs.cornell.edu> <455C7FB5.80206@wanadoo.fr>
In-Reply-To: <455C7FB5.80206@wanadoo.fr>
X-Enigmail-Version: 0.94.0.0
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 825e642946eda55cd9bc654a36dab8c2
Cc: eme@irtf.org
X-BeenThere: eme@irtf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: end-middle-end research group <eme.irtf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/eme>, <mailto:eme-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/eme>
List-Post: <mailto:eme@irtf.org>
List-Help: <mailto:eme-request@irtf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/eme>, <mailto:eme-request@irtf.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1891163749=="
Errors-To: eme-bounces@irtf.org

I'm with Paul on the integrity stuff; Craig Partridge had a nice Sigcomm
1995 paper showing how TCP checksums could miss errors in certain cases.

However, the TCP closing tells you a few things - it does tell you that,
**as far as TCP knew**, the data was delivered inorder and reliably (to
the extent that its checksum can detect errors) to the application above
TCP, which may not be what you intended.

Joe

Rémi Després wrote:
> Not relying on sequence preservation by TCP would be IMO going too far.
> Credible mechanisms are present in TCP to ensure it.
> On the other hand, TCP hasn't credible mechanisms guarantee delivery to
> the destination application for data that are acknowledged by the
> destination TCP stack, even at the end of a connection.
> 
> The E2E _guarantee _that TCP provides, _application-to-application,_ is
> _data integrity_, with neither permutation nor duplication nor
> deletion,  _from the first data transmitted to the last data 
> *received*_*. *
> Aat the end of a connection, the destination application can know, from
> the transport layer, that it has received all transmitted data , but the
> source application cannot be sure, from the transport layer, that all
> the last data it has sent have been received.
> 
> RD
> 
> Paul Francis wrote:
>> I have long held the view that the application should assume very
>> little from TCP.  If the app needs an ack of some sort, then the app
>> should provide it.  If the app really really cares about in-order
>> bytes, it should do its own checksums.   To do anything else is to
>> ignore the end-to-end principle.  If nothing else, writing apps this
>> way saves you from having to understand the minute details of TCP
>> implementations! 
>>  
>> PF
>>
>> ------------------------------------------------------------------------
>> **Rémi Després wrote:
>>
>> Joe Touch wrote:
>>> Rémi Després wrote:
>>>   
>>>> ... A transport layer acknowledgement (TCP ACK) doesn't mean that the
>>>> destination application has seen the data.
>>>>     
>>> It never did. But receiving an ACK to a FIN does.
>>>   
>> However regrettable it may be :'( , it's no true in all cases either.
>>  If a FIN is received by a TCP stack, it MUST be acked within 0.5 s to
>> conform to RFC1122  -  4.2.3.2.
>>  It MAY be acked long before that. .
>>  If the application hasn't absorbed all buffered data before the ACK
>> is sent, remaining data MAY never be received by the app.
>>
>>  Since changing all TCP stacks would not be realistic, this fact of
>> life has to be faced.
>>>> I guess what is meant by "E2E" should be clarified: transport stack
>>>> to transport stack, or app to app?
>>>>  TCP provides only the former.
>>>>  What TCP does guarantee is that all received data have been sent, in
>>>> the same order and with no intermediate omission.
>>>>     
>>> when the connection closes, the app HAS received the data.
>>>   
>>  See above.
>>
>>> ... if the TCP
>>> connection closes it knows that the other application has received the
>>> data. That's no longer true in spliced connections.
>>>   
>> It's NEVER true (see above).
>> Making clearer in IETF what the apps can expect from the TCP transport
>> service would IMO be useful.
>>
>> RD

-- 
----------------------------------------
Joe Touch
Sr. Network Engineer, USAF TSAT Space Segment

_______________________________________________
EME mailing list
EME@irtf.org
https://www1.ietf.org/mailman/listinfo/eme