Subject: [rddp] silent dropping of TCP segment

From: "Barry Reinhold" <[email-masked]>
Date: Thu, 25 Mar 2004 11:21:51 -0500

MPA clause 9, error semantics, states that an MPA aware TCP
implementation may silently drop a TCP segment when MPA detects a CRC
error. The goal of this TCP segment dropping would be to avoid forcing
the teardown of the stream by having TCP retransmit the segment.

However, clause 5.1.2 on page 11 requires that 

"The TCP layer MUST have committed to keeping each segment before it can
be passed to the MPA." 

I assume "committed" means that TCP ACKs the segment. Thus the segment
is ACKed before it is delivered to MPA. If this is the proper
understanding I don't see how "MPA" can silently drop a segment, since
by the time it can detect a CRC error TCP has already committed to it.

It is not clear to me why there is a "MUST" in clause 5.1.2. It would
seem desirable to allow MPA some control over when the ACK is to be
generated.

I would like to see the "MUST" removed from clause 5.1.2. 

Barry Reinhold
Lamprey Networks
[email-masked]
(603) 868-8411

_______________________________________________
rddp mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rddp

---

From: Michael Krause <[email-masked]>
Date: Thu, 25 Mar 2004 10:02:47 -0800

At 08:21 AM 3/25/2004, Barry Reinhold wrote:
>I assume "committed" means that TCP ACKs the segment.

Yes.

>Thus the segment is ACKed before it is delivered to MPA.

In a well-layered implementation this is true.

>If this is the proper understanding I don't see how "MPA" can silently 
>drop a segment, since

Because it is not a well-layered implementation if an MPA-aware TCP 
implementation is used.  This has also been called a rototilled 
implementation in that a design might calculate the CRC, etc. while also 
calculating the checksums in parallel as the data arrives.   Such a design 
is making an optimization for performance reasons (don't have to scan the 
data twice) and therefore has an opportunity to detect the CRC within its 
implementation and not generate a TCP ACK.

>seem desirable to allow MPA some control over when the ACK is to be

The specification assume a well-layered implementation from an architecture 
perspective (per the original charter discussions) and has normative text 
using only that perspective.

>I would like to see the "MUST" removed from clause 5.1.2.

I disagree per the logic provided above within this e-mail.

Mike

---

From: Caitlin Bestler <[email-masked]>
Date: Thu, 25 Mar 2004 20:29:44 +0200

> I would like to see the "MUST" removed from clause 5.1.2.

As noted previously, clarifying that the MPA layer MAY be able to
reverse a prior dtermination by the TCP layer that a segment was
valid might be worthwhile.

But simply dropping the language is the wrong way to do it.
There are two important constraints that I believe the same
language is part of:

a) the TCP layer MUST NOT pass duplicate segments to the
MPA layer multiple times (shifting the responsiblity for detecting
duplicates up a layer).

b) a rototilled implementation MUST NOT attempt to do "cut
through" placing. It cannot be a DDP Segment until *after*
it is a valid TCP Segment or SCTP Data Chunk.