ietf-corpus

rfc-7053

SACK-IMMEDIATELY Extension for the Stream Control Transmission Protocol

M. Tuexen, I. Ruengeler, R. Stewart
date2013-11 streamIETF areawit wgtsvwg statusPROPOSED STANDARD pages8 canonicalhttps://www.rfc-editor.org/rfc/rfc7053 doi10.17487/RFC7053
This document updates RFC 4960 by defining a method for the sender of a DATA chunk to indicate that the corresponding Selective Acknowledgment (SACK) chunk should be sent back immediately and should not be delayed. It is done by specifying a bit in the DATA chunk header, called the (I)mmediate bit, which can get set by either the Stream Control Transmission Protocol (SCTP) implementation or the application using an SCTP stack. Since unknown flags in chunk headers are ignored by SCTP implementations, this extension does not introduce any interoperability problems.

obsoleted by

updates

Extracted elements (15)

design-rationale §1

Delayed SACKs reduce performance in sender-detectable situations such as closing an association, hitting window limits, or resetting streams. Because RFC 4960 provides no mechanism for the sender to request immediate acknowledgment in these cases, a new flag bit in the DATA chunk header was chosen as the simplest extension point.

sctp

design-rationale §6

No capability negotiation is required for this extension because RFC 4960 already mandates that unknown chunk flags be ignored by receivers. The sender can gracefully handle a receiver that does not honor the I bit (it simply falls back to delayed SACK behavior), making negotiation unnecessary overhead.

sctp

interoperability-note §6

According to RFC 4960, a receiver that does not support this extension will ignore the I bit, since unknown flags in chunk headers are ignored. Because the sender can handle the case where the receiver ignores the bit, there is no requirement to negotiate support for this feature.

sctp

interoperability-note §3

RFC 4960 specifies that the Reserved bits in the DATA chunk flags field should be set to 0 by the sender and ignored by the receiver. This pre-existing rule is what allows the I bit extension to be deployed without a handshake or version negotiation.

sctp

normative-requirement §5.1 MAY

The sender of a DATA chunk MAY set the I bit whenever it can benefit from the corresponding SACK being returned without delay. The reason the sender has set the I bit is irrelevant to the receiver.

sctp

normative-requirement §5.2 SHOULD NOT

Upon receipt of a DATA chunk with the I bit set, the receiver SHOULD NOT delay the sending of the corresponding SACK chunk; i.e., the receiver SHOULD immediately respond with the corresponding SACK chunk.

sctp

protocol-element §4.1

Applications using the SCTP_SENDER_DRY_EVENT (from RFC 6458 socket API) can request that the I bit be set on the last DATA chunk of the final user message before waiting for the event, avoiding the delay otherwise introduced by SACK deferral.

sctp

protocol-element §4.2

If sending a DATA chunk fills the congestion window or receiver window, setting the I bit improves transfer throughput by triggering an immediate SACK that unblocks the sender sooner.

sctp

protocol-element §3

The I (Immediate) bit is defined as bit 0x08 in the flags field of the SCTP DATA chunk header. When set, it signals the receiver that the corresponding SACK chunk should be sent immediately without delay.

sctp

protocol-element §7

The socket API (RFC 6458) is extended by defining the SCTP_SACK_IMMEDIATELY flag, which can be set in snd_flags of struct sctp_sndinfo (for sctp_sendv/sendmsg), sinfo_flags of struct sctp_sndrcvinfo (for sctp_send/sctp_sendx), or the flags parameter of sctp_sendmsg().

sctp

protocol-element §4.2

When an SCTP association supports Stream Reconfiguration (RFC 6525) and there are pending Outgoing SSN Reset or SSN/TSN Reset requests that require no outstanding DATA chunks, setting the I bit on the last DATA chunk improves reconfiguration performance.

sctp

protocol-element §4.2

When the association is in the SHUTDOWN-PENDING state, the sender SHOULD set the I bit on outgoing DATA chunks to reduce the number of simultaneously open associations on a busy server handling short-lived associations.

sctp

registry §8

IANA updated the SCTP 'Chunk Flags' registry for the DATA chunk to register the I bit at value 0x08, following the chunk flag registration procedure of RFC 6096. Existing entries (E=0x01, B=0x02, U=0x04) are retained; values 0x10–0x80 remain unassigned.

sctp, registry

security-consideration §9

A malicious sender can set the I bit on every DATA chunk, forcing the peer to emit a SACK for each received packet rather than every other packet. The additional processing cost is limited because, in the absence of loss or reordering, the extra SACKs contain only the simplest form (no gap reports, no duplicate TSNs); furthermore, a receiver sending a SACK per packet is already permitted by RFC 4960, so this does not introduce new traffic volume.

sctp, security

wire-format §3

The extended DATA chunk header carries an I bit at flag value 0x08, positioned between the Reserved bits and the U bit. The remainder of the DATA chunk format (Type=0, Length, TSN, Stream Identifier, Stream Sequence Number, Payload Protocol Identifier, User Data) is unchanged from RFC 4960.

sctp