NAME

  UnorderDelivery.seq - Unordered Data chunks are received for Delivery


PURPOSE

  To check that if receiver deliver data to the upper layer 
  according to the order it receives data.


SYNOPSIS

  ./UnorderDelivery.seq [-tooloption ...] -pkt ./UnorderDelivery.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 unordered DATA messages are sent to endpoint B.


TEST PROCEDURE

  Endpoint A                           Endpoint B                ULP
  (ESTABLISHED)                        (ESTABLISHED)
  DATA 1        ----------------->
                                            --------->DATA 1 Delivered
                <-----------------   SACK
 
                <-----------------   DATA
  SACK          ----------------->
  DATA 2        ----------------->
                                            --------->DATA 2 Delivered
                <-----------------   SACK
 
                <-----------------   DATA
  SACK          ----------------->
  DATA 3        ----------------->
                                            --------->DATA 3 Delivered
                <-----------------   SACK
 
                <-----------------   DATA
  SACK          ----------------->
  DATA 4        ----------------->
                                            --------->DATA 4 Delivered
                <-----------------   SACK
 
                <-----------------   DATA
  SACK          ----------------->
  TEST DESCRIPTION:
  1. To check that if DATA chunks arriving out of order of there stream 
     sequence number the receiver transfer the received DATA chunks to 
     upper layer as they are received.


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.
    When an endpoint receives a DATA chunk with the U flag set to 1, it
    must bypass the ordering mechanism and immediately deliver the data
    to the upper layer (after reassembly if the user data is fragmented
    by the data sender).
    This provides an effective way of transmitting "out-of-band" data in
    a given stream.  Also, a stream can be used as an "unordered" stream
    by simply setting the U flag to 1 in all DATA chunks sent through
    that stream.
    IMPLEMENTATION NOTE: When sending an unordered DATA chunk, an
    implementation may choose to place the DATA chunk in an outbound
    packet that is at the head of the outbound transmission queue if
    possible.
    The 'Stream Sequence Number' field in a DATA chunk with U flag set to
    1 has no significance.  The sender can fill it with arbitrary value,
    but the receiver MUST ignore the field.
    Note: When transmitting ordered and unordered data, an endpoint does
    not increment its Stream Sequence Number when transmitting a DATA
    chunk with U flag set to 1.