Session Description Protocol (SDP) Extension for Setting Audio and Video Media Streams over Circuit-Switched Bearers in the Public Switched Telephone Network (PSTN)
Extracted elements (30)
RTP/AVP payload type numbers are reused in the 'm=' fmt subfield to identify codecs on circuit-switched bearers, avoiding definition of a new codec numbering scheme; in the PSTN context these numbers represent only the codec, not RTP encapsulation.
The RFC 4145 TCP connection-setup framework ('setup' and 'connection' attributes) was reused for negotiating the direction of PSTN circuit-switched bearer establishment, because its active/passive/actpass model maps directly onto the PSTN call initiation problem without requiring new primitives.
Correlation mechanisms relying on Caller ID, UUIE, or DTMF may fail even after successful negotiation because intermediate PSTN networks may strip or alter these values. A single positive correlation indication from any mechanism SHOULD be sufficient to treat the bearer as related to the session.
The 'E164' addrtype defined in this document for use with nettype 'PSTN' is distinct from the 'E.164' addrtype defined in RFC 3108 for ATM bearers; the two MUST NOT be used interchangeably.
If either party removes circuit-switched media from the session (port set to zero), it MUST terminate the circuit-switched bearer. To reestablish, a party MUST first remove the media, then use a new offer/answer with 'connection' set to 'new'.
If the answerer becomes the active party, it MUST extract the E.164 number from the offer's 'c=' line and MUST establish a circuit-switched bearer to that address, and MUST send correlation identifiers (callerid, uuie, dtmf) as applicable.
If the endpoint cannot determine the list of available codecs for circuit-switched media streams, it MUST include a single dash ('-') in the fmt subfield of the 'm=' line.
If the offerer does not know its international E.164 number, it MUST set the 'setup' attribute to 'active'. For the initial offer, the offerer MUST use 'connection' attribute value 'new'.
If the offerer receives an incoming circuit-switched call while awaiting the answer, it MUST NOT accept the call before the answer has been received. If no answer arrives in an implementation-specific time, the offerer MUST modify or terminate the session.
Implementations compliant with this specification MUST implement the SDP extensions in Section 5.2 and MUST implement the considerations in Sections 5.3, 5.4, and 5.6.
Implementations compliant with this specification MUST support the 'setup' and 'connection' attributes from RFC 4145 as applied to PSTN circuit-switched bearers.
In the 'm=' line for a circuit-switched bearer, the port subfield SHOULD be set to '9' (the discard port) and MUST be ignored on reception. The proto subfield SHOULD be set to 'PSTN'.
The direction of circuit-switched bearer setup MUST be negotiated during the offer/answer exchange using the RFC 4145 'setup' attribute ('active', 'passive', 'actpass', 'holdconn') to avoid both endpoints simultaneously initiating a connection.
The UUIE value in the 'uuie' subfield MUST start with the Protocol Discriminator octet followed by User Information octets, MUST be base-16 encoded, and MUST be considered invalid if it has an odd number of hexadecimal digits.
There MUST be at most one 'cs-correlation' attribute per media description. Unknown values encountered in the 'cs-correlation' attribute MUST be treated as unsupported and MUST NOT be included in subsequent offer/answer negotiation.
When generating the initial offer, the offerer MUST set nettype to 'PSTN' and addrtype to 'E164' in the 'c=' line, MUST include an 'a=cs-correlation' attribute, and MUST NOT include more than one 'cs-correlation' attribute per media description.
When using the 'E164' address type with the 'PSTN' network type, implementations MUST use the 'global-number-digits' construction from RFC 3966 (requiring a leading '+') for international E.164 numbers. The connection address MUST NOT be omitted when unknown; it MUST be set to '-'.
A new 'PSTN' network type is defined for the SDP 'c=' connection data line, along with a new 'E164' address type that carries international E.164 numbers (prepended with '+') or a dash ('-') when the address is unknown.
A new 'PSTN' protocol type is defined for the SDP 'm=' media description line. The port subfield carries no meaningful value for circuit-switched bearers; the fmt subfield reuses RTP/AVP payload type numbers to indicate available codecs, or '-' if unknown.
The Caller ID correlation mechanism exchanges the Calling Party Number as an international E.164 number in the 'callerid' subfield of 'cs-correlation'. Correlation succeeds if the value matches the Calling Party Number Information Element in the circuit-switched call setup signaling.
The 'cs-correlation' media-level SDP attribute is defined to carry one or more correlation mechanism subfields ('callerid', 'uuie', 'dtmf', 'external') enabling an endpoint to correlate an incoming PSTN circuit-switched bearer with an SDP-negotiated session.
The DTMF correlation mechanism negotiates a digit sequence (0-9, A-D, '#', '*', up to 32 digits) in the 'dtmf' subfield of 'cs-correlation'. After the circuit-switched bearer is established, the active party sends those DTMF tones; the passive party compares received digits to the negotiated value.
The external correlation mechanism, indicated by the 'external' subfield in 'cs-correlation' (no associated value), delegates correlation decisions to external means, typically the human user, for cases where programmatic correlation is unavailable or has failed.
The User-User Information Element (UUIE) correlation mechanism places a base-16-encoded UUIE value (Protocol Discriminator octet followed by User Information octets, up to 130 hex digits) in the 'uuie' subfield of 'cs-correlation'. The active endpoint includes this value in the PSTN call setup; the passive endpoint compares it to verify correlation.
IANA registered a new 'cs-correlation' media-level SDP attribute under the SDP Parameters registry, with a subregistry for its values ('callerid', 'uuie', 'dtmf', 'external'). New values require 'Specification Required' policy per RFC 5226.
IANA registered three new SDP parameter tokens: nettype 'PSTN', addrtype 'E164' (exclusive to PSTN nettype, distinct from RFC 3108's 'E.164'), and proto 'PSTN', all under the SDP Parameters registry.
An attacker could trick an endpoint into actively dialing a circuit-switched number (potentially premium-rate). Endpoints MUST authenticate remote endpoints that wish to remain passive; it is RECOMMENDED to have local policies restricting calls to certain number ranges and to obtain end-user consent before initiating circuit-switched connections.
An attacker who replicates a correlation identifier (e.g., Caller ID spoofing) and establishes a call within the expected time window may hijack the circuit-switched bearer. Users are advised to apply the same caution as with any phone call, and to note that IP-domain security mechanisms like SRTP are unavailable on the CS bearer.
Phone numbers in the SDP 'c=' line are sensitive; implementations should respect Calling Line Identification Restriction (CLIR) preferences and, if unable to suppress the number, inform the user that their phone number may be transmitted to the other party.
The 'cs-correlation' attribute ABNF defines: callerid value as '+' followed by 1-15 digits; uuie value as 1-65 pairs of HEXDIG (up to 130 hex digits / 65 octets); dtmf value as 1-32 characters from 0-9, A-D, '#', '*'; external has no value.