UnorderDelivery.seq - Unordered Data chunks are received for Delivery
To check that if receiver deliver data to the upper layer according to the order it receives data.
./UnorderDelivery.seq [-tooloption ...] -pkt ./UnorderDelivery.def -tooloption : v6eval tool option See Also: ../common/STD_PKT_COMMON.def ../common/SCTP_COMMON.def
Association is established between endpoint A and B. Arrange data in endpoint A such that unordered DATA messages are sent to endpoint B.
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.
None
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.