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:
- Instance-Level: Define basic SCTP endpoint configuration
- Association-Level: Maintain state and control information per association
- Address-Level: Support multihoming and path management
- 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