rfc-3407

Session Description Protocol (SDP) Simple Capability Declaration

F. Andreasen
date2002-10 streamIETF wgnon working group statusPROPOSED STANDARD pages10 canonicalhttps://www.rfc-editor.org/rfc/rfc3407 doi10.17487/RFC3407 errataview
This document defines a set of Session Description Protocol (SDP) attributes that enables SDP to provide a minimal and backwards compatible capability declaration mechanism. Such capability declarations can be used as input to a subsequent session negotiation, which is done by means outside the scope of this document. This provides a simple and limited solution to the general capability negotiation problem being addressed by the next generation of SDP, also known as SDPng. [STANDARDS-TRACK]

Extracted elements (23)

design-rationale §3

Capability numbers are incremented by the number of formats in the fmt list (not by 1) to allow individual format-level addressing within a capability description, providing a handle for external reference mechanisms.

realtime, sip

design-rationale §2

SDP conflates session parameters and capabilities without a clear distinction between the two. This document introduces a minimal, backwards-compatible capability declaration mechanism to address urgent needs of SIP and MGCP without waiting for the incompatible SDPng.

realtime, sip

design-rationale §3

The capability description (cdsc) refers to send and receive capability by default because the mechanism is designed to express what an endpoint is capable of supporting, not what it commits to using — actual commitment is done via separate session negotiation (e.g., offer/answer).

realtime, sip

interoperability-note §2

The mechanism is explicitly backwards compatible with SDP: capability declarations are carried as standard SDP attributes and do not alter the semantics of 'm=' lines or other existing SDP fields. An endpoint not understanding simcap attributes will simply ignore them.

realtime, sip

normative-requirement §3 MUST NOT

A given parameter MUST NOT be described by a 'cparmin' attribute more than once, and MUST NOT be described by a 'cparmax' attribute more than once.

realtime, sip

normative-requirement §3 MUST NOT

A session description MUST NOT contain more than one capability set, though the capability set can describe capabilities at both the session and media level.

realtime, sip

normative-requirement §3 MUST NOT

An endpoint MUST NOT include capabilities it knows it cannot use in a particular session. If a new capability set is received from the other endpoint, the old capability set MUST NOT be used any longer.

realtime, sip

normative-requirement §3 MUST NOT

An endpoint receiving a capability set MUST NOT assume that a subsequent attempt to negotiate a media stream using just a declared media format will succeed.

realtime, sip

normative-requirement §3 SHOULD

Capability parameter lines for a capability description SHOULD immediately follow the 'cdsc' line they refer to.

realtime, sip

normative-requirement §3 RECOMMENDED

It is RECOMMENDED that session-level capability descriptions with media type X, when no media streams of type X exist, be provided at the media-level instead to avoid ambiguity.

realtime, sip

normative-requirement §3 MUST

The capability set MUST begin with a single sequence number followed by one or more capability descriptions. If a media format is included in an 'm=' line, it MUST be included in either a session capability or a media stream capability for that media line.

realtime, sip

normative-requirement §3 MUST

The initial sequence number MUST be 0 and MUST be incremented by 1 modulo 256 with each new capability set issued. Receivers MUST NOT reject a capability set due to gaps in sequence numbers.

realtime, sip

normative-requirement §3 MUST NOT

The sequence number MUST either be provided as a session-level or media-level attribute, and MUST NOT appear more than once in the session description.

realtime, sip

normative-requirement §3 MUST

When generating a capability set, the capability number MUST start with 1 in the first capability description, and be incremented by the number of media formats in the fmt list for each subsequent capability description. Receivers MUST NOT reject capability descriptions due to gaps in capability numbers.

realtime, sip

protocol-element §3

A capability set consists of a sequence number (a=sqn) followed by one or more capability descriptions (a=cdsc). The set describes the complete media capabilities of the endpoint and supersedes any previous capability sets for the session.

realtime, sip

protocol-element §3

Capability parameter lines (a=cpar, a=cparmin, a=cparmax) provide additional parameters for the preceding 'cdsc' line. 'cpar' specifies exact values, 'cparmin' specifies minimum numerical values, and 'cparmax' specifies maximum numerical values.

realtime, sip

protocol-element §3

Each capability description (a=cdsc) contains a capability number, media type, transport, and format list — analogous to an SDP 'm=' line — and represents a send/receive capability by default.

realtime, sip

protocol-element §3

Session-level capability descriptions apply to all media streams of the indicated media type, while media-level capability descriptions apply only to that particular media stream, regardless of media type.

realtime, sip

registry §5

This document registers five new SDP 'att-field' attributes: 'sqn' (sequence number), 'cdsc' (capability description), 'cpar' (capability parameter), 'cparmin' (minimum capability parameter), and 'cparmax' (maximum capability parameter), all applicable at both session-level and media-level.

registry, realtime, sip

security-consideration §4

Capability negotiation of security-sensitive parameters is a delicate process susceptible to downgrade attacks. Capability re-negotiation may also make the session susceptible to denial of service if authentication is not carefully designed.

security, realtime, sip

wire-format §3

Capability parameter lines have the forms 'a=cpar: <cap-par>', 'a=cparmin: <cap-par>', and 'a=cparmax: <cap-par>' where cap-par is either bandwidth information ('b=') or an attribute ('a=') in its full type=value form.

realtime, sip

wire-format §3

The capability description attribute has the form 'a=cdsc: <cap-num> <media> <transport> <fmt list>' where cap-num is an integer between 1 and 255 inclusive, and the remaining fields follow SDP 'm=' line syntax.

realtime, sip

wire-format §3

The sequence number attribute has the form 'a=sqn: <sqn-num>' where sqn-num is an integer between 0 and 255 inclusive.

realtime, sip