Subject: [rddp] ddp architectural issue

From: "Williams, Jim" <[email-masked]>
Date: Wed, 6 Nov 2002 12:49:11 -0500

Sorry if this has been discussed before.

Section 8.2.2 of draft-shah-iwarp-ddp-01.txt
discusses DDP Abortive Teardown.

A possible cause of abortive teardown is that
the transport had a gap in the received data
and timed out before being able to fill that
gap.

Assuming DDP layer is allowed to do out of order
placement, some of the data following the gap
may have already been placed.  This is a problem
if the transport used is either TCP or SCTP ordered
delivery.  Under the semantics of these transports,
that post gap data is not valid and should never have
been delivered.

I believe DDP can work around this by making a 
statement something like the following.

    In the event DDP indicates to the ULP that
    a fatal error has occurred, the ULP MUST
    assume that invalid data may have been written
    any buffers for which that DDP stream had
    write access.  Any DDP writes for which
    the ULP has received completion from DDP
    can be assumed to have been correctly written,
    however there is no guarantee that they were not
    subsequently overwritten with invalid data.

It is tempting to do some hand waving as say that
since out of order data must have originated from
the remote end, and has been validated by a CRC,
it can be assumed to valid from a DDP perspective.
My concern is that this is an architectural rat hole,
and a clear violation of transport semantics.

There may be other creative solutions to this 
problem.  I would like to see any other
thoughts on this.

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

---

From: Caitlin Bestler <[email-masked]>
Date: Fri, 8 Nov 2002 10:33:15 -0600

>that post gap data is not valid and should never have

It was not delivered, it was placed.

>problem.  I would like to see any other

More generally:

    The contents of any buffer made available as a
    target to the DDP layer must be considered by the
    ULP to be undefined until it has received the
    appropriate completion notice.
    
The out-of-order pre-placements are merely discarded
work-product. They were never delivered to the ULP.
If there is no delivery, the ULP MUST NOT make ANY
assumptions about the content of the advertised or
pre-posted buffers. This especially includes assuming that
they are either unaltered or that they have correct data, as
your statement points out, but it is really just a specific
case of the more general "the contents are undefined".

This is particularly important for pre-posted untagged
buffers. Because the RNIC knows the exact boundaries of the
advertised buffer, it is concievable that it might have
flushed an entire cacheline from the RNIC when that entire
cacheline fit within the advertised buffer. The 'correct'
value of those bytes is in a yet unreceived segment, so why
should the RNIC fetch them from host memory before making
its interim placement of the first segment? The contents of
those bytes of host memory are logically void anyway.

Caitlin Bestler
http://asomi.com/CaitlinBestler/
_______________________________________________
rddp mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rddp