NAME

  SO_MixA2A1A4A3.seq - Ordered Data chunks are received for Re-order (A2->A1->A4->A3)


PURPOSE

  To check that if DATA chunks arrive out of order of their stream
  sequence number, the endpoint MUST hold the received DATA chunks
  from delivery to the ULP until they are re-ordered.


SYNOPSIS

  ./SO_MixA2A1A4A3.seq [-tooloption ...] -pkt ./SO_Segment.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def


PRE-TEST CONDITION

  Association is established between endpoint A and B. Arrange data in
  endpoint A such that ordered DATA messages are sent to endpoint B.


TEST PROCEDURE

  Endpoint A                           Endpoint B                ULP
  (ESTABLISHED)                        (ESTABLISHED)
  DATA A2      ---------------->
  [Strm=0, Seq=1]
               <----------------        SACK
  DATA A1      ---------------->
  [Strm=0, Seq=0]
               <----------------        SACK
                                        DATA A1, A2 Arrive       ----->
               <----------------        DATA R1 (ECHO of A1)
  SACK         ---------------->
               <----------------        DATA R2 (ECHO of A2)
  SACK         ---------------->
  DATA A4      ---------------->
  [Strm=0, Seq=3]
               <----------------        SACK
  DATA A3      ---------------->
  [Strm=0, Seq=2]
               <----------------        SACK
                                        DATA A3, A4 Arrive       ----->
               <----------------        DATA R3 (ECHO of A3)
  SACK         ---------------->
               <----------------        DATA R4 (ECHO of A4)
  SACK         ---------------->
  TEST DESCRIPTION:
  1. Send DATA A2 from endpoint A to B with Strm=0 and Seq=1.
  2. Check A: DATA A2 is not delivered to the ULP.
  3. Send DATA A1 from endpoint A to B with Strm=0 and Seq=0.
  4. Check D: DATA A1, A2 is delivered to the ULP and be send back.
  5. Send DATA A4 from endpoint A to B with Strm=0 and Seq=3.
  6. Check A: DATA A4 is not delivered to the ULP.
  7. Send DATA A3 from endpoint A to B with Strm=0 and Seq=2.
  8. Check D: DATA A3, A4 is delivered to the ULP and be send back.


NOTE

  None


REFERENCE

  RFC 4960
  6.6.  Ordered and Unordered Delivery
    Within a stream, an endpoint MUST deliver DATA chunks received with
    the U flag set to 0 to the upper layer according to the order of
    their Stream Sequence Number.  If DATA chunks arrive out of order of
    their Stream Sequence Number, the endpoint MUST hold the received
    DATA chunks from delivery to the ULP until they are reordered.
    However, an SCTP endpoint can indicate that no ordered delivery is
    required for a particular DATA chunk transmitted within the stream by
    setting the U flag of the DATA chunk to 1.