← WebRTC Data Channel: SCTP Negotiation Acceleration Protocol

v151 · origin trial · sdp · attribute reference

a=sctp-init

A new SDP media-level attribute that carries a base64-encoded SCTP INIT chunk. When negotiated by both endpoints it lets them skip the SCTP four-way handshake: the association is treated as ESTABLISHED once the DTLS handshake completes. Defined by draft-hancke-tsvwg-snap §4; in origin trial in Chrome 151–156 (see the feature overview).

Origin trial — wire format may move The attribute is defined by an expired, unadopted individual Internet-Draft (revision -00, expired 2026-07-03 — verified via the datatracker on 2026-07-28). Chrome’s experiment is deliberately gated until the IETF adopts the draft into a working group. Do not hard-code against the -00 syntax outside the trial.

attribute definition

Attribute namesctp-init
Type of attributemedia (media-level — appears under the data m= section)
Mux categoryCAUTION (per RFC 8859 mux-category taxonomy, assigned in draft §4.2)
Subject to charsetNo
PurposeAllows the SDP to carry the information contained in an SCTP INIT chunk
Appropriate valuesA base64-encoded value
Syntaxsctp-init-value = base64 (base64 as defined in RFC 4566)
Source: draft-hancke-tsvwg-snap-00 §4.2 (verbatim fields).

where the attribute is allowed

The attribute is defined only for an m= line whose protocol identifier is UDP/DTLS/SCTP (defined in RFC 8841) with an <fmt> value of webrtc-datachannel (defined in RFC 8832). The draft notes it also covers TCP/DTLS/SCTP, and that usage with any other proto value “needs to be defined in a separate specification”.

m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=ice-ufrag:UgEn
a=ice-pwd:f/+ugRILrIUlAkSmkStnZb/h
a=ice-options:trickle
a=fingerprint:sha-256 6A:15:F0:08:...:2D:7A
a=setup:actpass
a=mid:0
a=sctp-port:5000
a=max-message-size:262144
a=sctp-init:AQAAHols3R0AUAAA/////+B5ZR3AAAAEgAgABoLA
Source: draft-hancke-tsvwg-snap-00 §4.1, §7.

worked decode

The example value above decodes to this SCTP INIT chunk (draft §4.1; chunk layout per RFC 9260 §3.3.2):

INIT chunk fieldValue in the example
Type / Chunk Flags / Chunk Length1 / 0 / 30
Initiate Tag0x896cdd1d
Advertised Receiver Window Credit (a_rwnd)0x00500000
Outbound / Inbound Streams65535 / 65535
Initial TSN0xe079651d
Optional/variable-length parametersForward TSN supported; Supported Extensions = RECONFIG (0x82), FORWARD_TSN (0xc0)
Source: draft-hancke-tsvwg-snap-00 §4.1 (verbatim example); RFC 9260 (chunk layout).

generation, validation, renegotiation

Source: draft-hancke-tsvwg-snap-00 §5.2–§5.6; RFC 8842.

IANA status

Draft §9.1 defines sctp-init as a new SDP media-level attribute (details per §4.2). As of 2026-07-28 the draft is an expired, unadopted individual submission and no IANA registration has been made — the IANA SDP Parameters registry carries no sctp-init entry (checked 2026-07-28). Treat the attribute name as provisional until a working-group draft registers it.

Source: draft-hancke-tsvwg-snap-00 §9; IANA SDP Parameters; datatracker status.

security notes

Exposing the SCTP INIT chunk — in particular the Initiate Tag — in SDP introduces no new security concern per draft §8, because SCTP-over-DTLS protects against the off-path attacks of RFC 9260 §5.3.1. Application-layer code (JavaScript, signaling) that can read or rewrite SDP can add or remove the chunk’s variable-length parameters; per §8, removing one is equivalent to the peer not supporting that parameter, and adding an unsupported one is equivalent to receiving a packet for an unnegotiated feature. See the overview security section for the amplification analysis.

Source: draft-hancke-tsvwg-snap-00 §8.

compatibility

EndpointBehavior
Chrome 151–156 with origin-trial tokenGenerates and consumes a=sctp-init per draft §5
Chrome without token / other browsersDo not generate the attribute; per §5.4 a non-supporting answerer MUST NOT include it — classic SCTP handshake runs
Source: blink-dev Intent to Experiment; draft-hancke-tsvwg-snap-00 §5.4.

see also