Skip to main content

13. Recommended Transmission Control Block (TCB) Parameters

This chapter defines the Transmission Control Block (TCB) parameters that SCTP implementations should maintain. These parameters are critical for correct SCTP operation.

13.1. Parameters Necessary for the SCTP Instance

13.1.1. Local SCTP Port Number

Description: Local SCTP port number for receiving INIT chunks. Type: 16-bit unsigned integer Purpose: Identifies local SCTP endpoint

13.1.2. Local IP Address List

Description: List of all local endpoint IP addresses. Type: Array of IP addresses Purpose: Multihoming support, interface binding, advertisement in INIT/INIT ACK

13.1.3. SCTP Protocol Version

Description: Supported SCTP protocol version number. Current Value: 1 Purpose: Protocol compatibility checking

13.1.4. Secret Key

Description: Secret key for generating State Cookies. Type: Byte sequence (recommended minimum 160 bits) Purpose: Generate and verify HMAC of State Cookies, prevent forgery, should be rotated periodically

13.1.5. Valid.Cookie.Life

Description: Valid lifetime of State Cookie. Recommended Value: 60 seconds Range: 1-60 seconds recommended Purpose: Prevent stale cookies from being accepted

13.1.6. Association.Max.Retrans

Description: Maximum retransmissions at association level. Recommended Value: 10 attempts Purpose: Association considered failed when exceeded, report COMMUNICATION LOST to ULP

13.2. Parameters Necessary per Association

13.2.1. Peer Verification Tag

Description: Verification tag received from peer. Type: 32-bit unsigned integer Source: From Initiate Tag field in INIT or INIT ACK Purpose: Used in every outgoing SCTP packet, prevents packet forgery

13.2.2. My Verification Tag

Description: Local endpoint's verification tag. Type: 32-bit unsigned integer Generation: Randomly generated at association establishment (must not be 0) Purpose: Sent to peer in INIT or INIT ACK, validates received packets

13.2.3. Association State

Description: Current association state. Possible Values: CLOSED, COOKIE-WAIT, COOKIE-ECHOED, ESTABLISHED, SHUTDOWN-PENDING, SHUTDOWN-SENT, SHUTDOWN-RECEIVED, SHUTDOWN-ACK-SENT

13.2.4. Peer Transport Address List

Description: All peer endpoint transport addresses. Source: From INIT, INIT ACK, or ASCONF Contents per Address: IP address, SCTP port, state (active/inactive), error count

13.2.5. Primary Path

Description: Primary destination address for data transmission. Type: Pointer to address in peer transport address list Purpose: Default data transmission path, changeable via SET PRIMARY

13.2.6. Overall Error Count

Description: Overall error counter at association level. Type: Integer counter Purpose: Tracks cumulative association errors, association fails when exceeds Association.Max.Retrans

13.2.7. Overall Error Threshold

Description: Overall error threshold for association failure. Recommended Value: Equal to Association.Max.Retrans Purpose: Determines association failure

13.2.8. Peer Rwnd

Description: Peer's receiver window size. Type: 32-bit unsigned integer Source: From INIT ACK, SACK, or window update Purpose: Flow control, prevent receiver buffer overflow

13.2.9. Next TSN

Description: TSN to assign to next user message. Type: 32-bit unsigned integer Initial Value: Starts from Initial TSN Purpose: Assign unique TSN to each DATA chunk, monotonically increasing (wraps to 0)

13.2.10. Cumulative TSN Ack Point

Description: Highest cumulative TSN acknowledged by peer. Type: 32-bit unsigned integer Updated From: Cumulative TSN Ack field in SACK Purpose: Determine acknowledged data, release send buffer

13.2.11. Outbound Streams

Description: Number of outbound streams this endpoint can use. Type: 16-bit unsigned integer Negotiated: During association establishment (minimum of both sides' requests) Purpose: Multi-stream support, stream ID range: 0 to (Outbound Streams - 1)

13.2.12. Inbound Streams

Description: Number of inbound streams peer can use. Type: 16-bit unsigned integer Negotiated: During association establishment Purpose: Validate received stream IDs, must be < Inbound Streams

13.2.13. Reordering Queue

Description: Stores received DATA chunks not yet delivered in order. Data Structure: Queue sorted by TSN Purpose: Handle out-of-order reception, in-order delivery to upper layer

13.2.14. Local Transport Address List

Description: Local transport addresses used by this association. Type: List of IP addresses Purpose: Multihoming support, interface binding

13.3. Per Transport Address Data

For each peer transport address, SCTP endpoint must maintain:

13.3.1. Error Count

Description: Consecutive transmission failures for this address. Type: Integer counter Purpose: Path failure detection, mark path inactive when exceeds Path.Max.Retrans

13.3.2. Error Threshold

Description: Threshold for marking path inactive. Recommended Value: Path.Max.Retrans (recommended 5) Purpose: Determine path failure

13.3.3. Path.Max.Retrans

Description: Maximum retransmissions for single path. Recommended Value: 5 attempts Purpose: Path failure detection

13.3.4. cwnd (Congestion Window)

Description: Congestion window size in bytes. Type: 32-bit unsigned integer Initial Value: min(4 * MTU, max(2 * MTU, 4380)) Purpose: Congestion control, limit outstanding data

13.3.5. ssthresh (Slow Start Threshold)

Description: Slow start threshold in bytes. Type: 32-bit unsigned integer Initial Value: Peer's Rwnd Purpose: Distinguish slow start and congestion avoidance phases

13.3.6. partial_bytes_acked

Description: Accumulated partial byte acknowledgments in congestion avoidance. Type: 32-bit unsigned integer Purpose: cwnd growth in congestion avoidance, accumulate MTU bytes before increasing cwnd

13.3.7. PMTU (Path MTU)

Description: Path MTU to this destination. Type: Integer Initial Value: First-hop MTU or conservative value (e.g., 576 bytes) Updated By: Path MTU Discovery Purpose: Data segmentation, avoid IP fragmentation

13.3.8. RTO (Retransmission Timeout)

Description: Retransmission timeout value in milliseconds. Type: Integer Initial Value: RTO.Initial (recommended 3000 ms) Range: RTO.Min to RTO.Max Purpose: Determine when to retransmit unacknowledged data, dynamically adjusted based on RTT

13.3.9. SRTT (Smoothed Round-Trip Time)

Description: Smoothed round-trip time in milliseconds. Type: Integer Purpose: Calculate RTO, estimate network delay

13.3.10. RTTVAR (Round-Trip Time Variation)

Description: Round-trip time variation in milliseconds. Type: Integer Purpose: Calculate RTO, account for RTT jitter

13.3.11. Heartbeat Interval

Description: Interval for sending heartbeats to this address. Recommended Value: 30 seconds Type: Integer (milliseconds) Purpose: Monitor path reachability, keep path active

13.3.12. Last Heartbeat Time

Description: Time of last heartbeat sent to this address. Type: Timestamp Purpose: Determine when to send next heartbeat, used with Heartbeat Interval

13.3.13. Destination Confirm Time

Description: Time when this path was last confirmed reachable. Type: Timestamp Updated When: Receive HEARTBEAT ACK, receive new data acknowledgment Purpose: Decide if heartbeat needs to be sent

13.3.14. Transport Address State

Description: Current state of this transport address. Possible Values: Active (available for data transmission), Inactive (currently unavailable), Unconfirmed (not yet verified) Purpose: Path selection and failure handling

13.4. General Parameters Needed

13.4.1. RTO.Initial

Recommended Value: 3000 milliseconds (3 seconds) Purpose: Used when no RTT measurements available

13.4.2. RTO.Min

Recommended Value: 1000 milliseconds (1 second) Purpose: Lower bound for RTO

13.4.3. RTO.Max

Recommended Value: 60000 milliseconds (60 seconds) Purpose: Upper bound for RTO

13.4.4. RTO.Alpha

Recommended Value: 1/8 (0.125) Purpose: SRTT = (1 - alpha) * SRTT + alpha * RTT'

13.4.5. RTO.Beta

Recommended Value: 1/4 (0.25) Purpose: RTTVAR = (1 - beta) * RTTVAR + beta * |SRTT - RTT'|

13.4.6. Max.Burst

Recommended Value: 4 PMTU-sized packets Purpose: Prevent burst traffic causing congestion, limit transmission after fast retransmit and timeout

13.4.7. SACK.Delay

Recommended Value: 200 milliseconds Maximum: 500 milliseconds Purpose: Allow SACK bundling, reduce control chunk overhead

13.4.8. Valid.Cookie.Life

Recommended Value: 60 seconds Purpose: Prevent replay attacks


Summary

Importance of TCB parameters:

  1. Instance-Level: Define basic SCTP endpoint configuration
  2. Association-Level: Maintain state and control information per association
  3. Address-Level: Support multihoming and path management
  4. General: Provide tunable control of protocol behavior

Implementation Recommendations: Use recommended values as defaults, allow configuration via management interface, maintain parameter consistency

Performance Optimization: Proper RTO balances fast retransmission and false retransmission avoidance, appropriate cwnd/ssthresh optimize throughput, heartbeat interval affects failure detection speed and overhead