Tech-invite3GPPspaceIETF RFCsSIP
9190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 7195

Session Description Protocol (SDP) Extension for Setting Audio and Video Media Streams over Circuit-Switched Bearers in the Public Switched Telephone Network (PSTN)

Pages: 39
Proposed Standard
Part 2 of 2 – Pages 17 to 39
First   Prev   None

Top   ToC   RFC7195 - Page 17   prevText

5.3. Negotiating the Correlation Mechanisms

The four correlation mechanisms presented above (based on Called Party Number, User-User Information Element, DTMF digit sending, and external) are non-exclusive and can be used independently of each other. In order to know how to populate the "cs-correlation" attribute, the endpoints need to agree which endpoint will become the active party, i.e., the one that will set up the circuit-switched bearer.

5.3.1. Determining the Direction of the Circuit-Switched Bearer Setup

In order to avoid a situation where both endpoints attempt to initiate a connection simultaneously, the direction in which the circuit-switched bearer is set up MUST be negotiated during the offer/answer exchange. The framework defined in RFC 4145 [RFC4145] allows the endpoints to agree which endpoint acts as the active endpoint when initiating a TCP connection. While RFC 4145 [RFC4145] was originally designed for establishing TCP connections, it can be easily extrapolated to the connection establishment of circuit-switched bearers. This specification uses the concepts specified in RFC 4145 [RFC4145] for agreeing on the direction of establishment of a circuit-switched bearer. RFC 4145 [RFC4145] defines two new attributes in SDP: "setup" and "connection". The "setup" attribute indicates which of the endpoints should initiate the connection establishment of the PSTN circuit- switched bearer. Four values are defined in Section 4 of RFC 4145 [RFC4145]: "active", "passive", "actpass", and "holdconn". Please refer to Section 4 of RFC 4145 [RFC4145] for a detailed description of this attribute. The "connection" attribute indicates whether a new connection is needed or an existing connection is reused. The attribute can take the values "new" or "existing". Please refer to Section 5 of RFC 4145 [RFC4145] for a detailed description of this attribute. Implementations that are compliant with this specification MUST support the "setup" and "connection" attributes specified in RFC 4145 [RFC4145], but applied to circuit-switched bearers in the PSTN. We define the active party as the one that initiates the circuit- switched bearer after the offer/answer exchange. The passive party is the one receiving the circuit-switched bearer. Either party may indicate its desire to become the active or passive party during the offer/answer exchange using the procedures described in Section 5.6.
Top   ToC   RFC7195 - Page 18

5.3.2. Populating the "cs-correlation" Attribute

By defining values for the subfields in the "cs-correlation" attribute, the endpoint indicates that it is willing to become the active party and that it can use those values in the Calling Party Number, in the User-User Information Element, or as DTMF tones during the circuit-switched bearer setup. Thus, the following rules apply: o An endpoint that can only become the active party in the circuit- switched bearer setup MUST include all correlation mechanisms it supports in the "cs-correlation" attribute and MUST also specify values for the "callerid", "uuie", and "dtmf" subfields. Notice that the "external" subfield does not accept a value. o An endpoint that can only become the passive party in the circuit- switched bearer setup MUST include all correlation mechanisms it supports in the "cs-correlation" attribute but MUST NOT specify values for the subfields. o An endpoint that is willing to become either the active or passive party (by including the "a=setup:actpass" attribute in the offer) MUST include all correlation mechanisms it supports in the "cs-correlation" attribute and MUST also specify values for the "callerid", "uuie", and "dtmf" subfields. Notice that the "external" subfield does not accept a value.

5.3.3. Considerations for Correlations

Passive endpoints should expect an incoming circuit-switched (CS) call for setting up the audio bearer. Passive endpoints MAY suppress the incoming CS alert during certain time periods. Additional restrictions can be applied, such as the passive endpoint not alerting incoming calls originated from the number that was observed during the offer/answer negotiation. There may be cases when an endpoint is not willing to include one or more correlation mechanisms in the "a=cs-correlation" attribute line even if it supports it. For example, some correlation mechanisms can be omitted if the endpoint is certain that the PSTN network does not support carrying the correlation identifier. Also, since using the DTMF-based correlation mechanism requires the call to be accepted before DTMF tones can be sent, some endpoints may enforce a policy restricting this due to, for example, cost associated with received calls, making the DTMF-based mechanism unusable.
Top   ToC   RFC7195 - Page 19
   Note that it cannot be guaranteed that the correlation mechanisms
   relying on caller identification, User-User Information Element, and
   DTMF sending will succeed even if the usage of those was agreed
   beforehand.  This is due to the fact that correlation mechanisms
   require support from the circuit-switched bearer technology used.

   Therefore, even a single positive indication using any of these
   mechanisms SHOULD be interpreted by the passive endpoint so that the
   circuit-switched bearer establishment is related to the ongoing
   session, even if the other correlation mechanisms fail.

   If, after successfully negotiating any of the "callerid", "uuie", or
   "dtmf" correlation mechanisms in the SDP offer/answer exchange, an
   endpoint receives an incoming establishment of a circuit-switched
   bearer with no correlation information present, the endpoint first
   checks whether or not the offer/answer exchange was also used to
   successfully negotiate the "external" correlation mechanism.  If it
   was, the endpoint should let the decision be made by external means,
   typically the human user.  If the "external" correlation mechanism
   was not successfully negotiated, the endpoint should treat the call
   as unrelated to the ongoing session in the IP domain.

5.4. Considerations for Usage of Existing SDP

5.4.1. Originator of the Session

According to SDP [RFC4566], the origin line in SDP has the following syntax: o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address> Of interest here are the <nettype> and <addrtype> fields, which indicate the type of network and type of address, respectively. Typically, this field carries the IP address of the originator of the session. Even if the SDP was used to negotiate an audio or video media stream transported over a circuit-switched bearer, the originator is using SDP over an IP bearer. Therefore, <nettype> and <addrtype> fields in the "o=" line should be populated with the IP address identifying the source of the signaling.
Top   ToC   RFC7195 - Page 20

5.4.2. Contact Information

SDP [RFC4566] defines the "p=" line, which may include the phone number of the person responsible for the conference. Even though this line can carry a phone number, it is not suited for the purpose of defining a connection address for the media. Therefore, we have selected to define the PSTN-specific connection addresses in the "c=" line.

5.5. Considerations for Usage of Third Party Call Control (3PCC)

"Best Current Practices for Third Party Call Control (3PCC) in the Session Initiation Protocol (SIP)" [RFC3725] outlines several flows that are possible in third party call control scenarios and recommends some flows for specific situations. One of the assumptions in [RFC3725] is that an SDP offer may include a "black hole" connection address, which has the property that packets sent to it will never leave the host that sent them. For IPv4, this "black hole" connection address is 0.0.0.0 or a domain name within the .invalid DNS top level domain. When using an E.164 address scheme in the context of third party call control, when the User Agent needs to indicate an unknown phone number, it MUST populate the <addrtype> of the SDP "c=" line with a "-" string. Note: This may result in the recipient of the initial offer rejecting such offer if the recipient of the offer was not aware of its own E.164 number. Consequently, it will not be possible to establish a circuit-switched bearer, since neither party is aware of its E.164 number.

5.6. Offer/Answer Mode Extensions

In this section, we define extensions to the offer/answer model defined in "An Offer/Answer Model with the Session Description Protocol (SDP)" [RFC3264] to allow for PSTN addresses to be used with the offer/answer model.
Top   ToC   RFC7195 - Page 21

5.6.1. Generating the Initial Offer

The offerer, wishing to use PSTN audio or video stream, MUST populate the "c=" and "m=" lines as follows. The endpoint MUST set the <nettype> in the "c=" line to "PSTN" and the <addrtype> to "E164". Furthermore, the endpoint SHOULD set the <connection-address> field to its own international E.164 number (with a leading "+"). If the endpoint is not aware of its own E.164 number, it MUST set the <connection-address> to "-". In the "m=" line, the endpoint MUST set the <media> subfield to "audio" or "video", depending on the media type, and the <proto> subfield to "PSTN". The <port> subfield SHOULD be set to "9" (the discard port). The values "audio" or "video" in the <media> subfield MUST NOT be set by the endpoint unless it has knowledge that these bearer types are available on the circuit-switched network. The <fmt> subfield carries the payload type number(s) the endpoint is wishing to use. Payload type numbers in this case refer to the codecs that the endpoint wishes to use on the PSTN media stream. For example, if the endpoint wishes to use the GSM codec, it would add payload type number 3 in the list of codecs. The list of payload types MUST only contain those codecs the endpoint is able to use on the PSTN bearer. In case the endpoint is not aware of the codecs available for the circuit-switched media streams, it MUST include a dash ("-") in the <fmt> subfield. The mapping table of static payload types numbers to payload types is initially specified in [RFC3551] and maintained by IANA. For dynamic payload types, the endpoint MUST define the set of valid encoding names and related parameters using the "a=rtpmap" attribute line. See Section 6 of RFC 4566 [RFC4566] for details. When generating the offer, the offerer MUST include an "a=cs-correlation" attribute line in the SDP offer. The offerer MUST NOT include more than one "cs-correlation" attribute per media description. The "a=cs-correlation" line SHOULD contain an enumeration of all the correlation mechanisms supported by the offerer, in the format of subfields. See Section 5.3.3 for more information on usage of the correlation mechanisms. The current list of subfields include "callerid", "uuie", "dtmf", and "external", and they refer to the correlation mechanisms defined in Sections 5.2.3.2, 5.2.3.3, 5.2.3.4, and 5.2.3.5, respectively.
Top   ToC   RFC7195 - Page 22
   If the offerer supports any of the correlation mechanisms defined in
   this memo and is willing to become the active party, the offerer MUST
   add the "callerid", "uuie", "dtmf", and/or "external" subfields and
   MUST specify values for them as follows:

   o  The international E.164 number as the value in the "callerid"
      subfield.

   o  The contents of the User-User Information Element as the value of
      the "uuie" subfield.

   o  The DTMF tone string as the value of the "dtmf" subfield.

   o  The endpoint MUST NOT specify any value for the "external"
      subfield.

   If the offerer is only able to become the passive party in the
   circuit-switched bearer setup, it MUST add at least one of the
   possible correlation mechanisms but MUST NOT specify values for those
   subfields.

   For example, if the offerer is willing to use the User-User
   Information Element and DTMF digit-sending mechanisms but can only
   become the passive party, and is also able to let the human user
   decide whether the correlation should be done or not, it includes the
   following lines in the SDP:

      a=cs-correlation:uuie dtmf external

      a=setup:passive

   If, on the other hand, the offerer is willing to use the User-User
   Information Element and the DTMF correlation mechanisms and is able
   to become the active or passive side, and is also able to let the
   human user decide whether the correlation should be done or not, it
   includes the following lines in the SDP:

      a=cs-correlation:uuie:56A390F3D2B7310023 dtmf:14D*3 external

      a=setup:actpass

   The negotiation of the value of the "setup" attribute takes place as
   defined in Section 4.1 of RFC 4145 [RFC4145].

   The offerer states which role or roles it is willing to perform; the
   answerer, taking the offerer's willingness into consideration,
   chooses which roles both endpoints will actually perform during the
   circuit-switched bearer setup.
Top   ToC   RFC7195 - Page 23
   By "active" endpoint, we refer to an endpoint that will establish the
   circuit-switched bearer; by "passive" endpoint, we refer to an
   endpoint that will receive a circuit-switched bearer.

   If an offerer does not know its international E.164 number, it MUST
   set the "setup" attribute to the value "active".  If the offerer
   knows its international E.164 number, it SHOULD set the value to
   either "actpass" or "passive".

   Also "holdconn" is a permissible value in the "setup" attribute.  It
   indicates that the connection should not be established for the time
   being.

   The offerer uses the "connection" attribute to decide whether a new
   circuit-switched bearer is to be established or not.  For the initial
   offer, the offerer MUST use value "new".

5.6.2. Generating the Answer

If the offer contained a circuit-switched audio or video stream, the answerer first determines whether it is able to accept and use such streams on the circuit-switched network. If the answerer does not support or is not willing to use circuit-switched media for the session, it MUST construct an answer where the port number for such media stream(s) is set to zero, according to Section 6 of [RFC3264]. If the answerer is willing to use circuit-switched media for the session, it MUST ignore the received port number (unless the port number is set to zero). If the offer included a "-" as the payload type number, it indicates that the offerer is not willing or able to define any specific payload type. Most often, a "-" is expected to be used instead of the payload type when the endpoint is not aware of or not willing to define the codecs that will eventually be used on the circuit- switched bearer. The circuit-switched signaling protocols have their own means of negotiating or indicating the codecs; therefore, an answerer SHOULD accept such offers and SHOULD set the payload type to "-" in the answer. If the answerer explicitly wants to specify a codec for the circuit- switched media, it MAY set the respective payload numbers in the <fmt> subfield in the answer. This behavior, however, is NOT RECOMMENDED. When receiving the offer, the answerer MUST determine whether it becomes the active or passive party.
Top   ToC   RFC7195 - Page 24
   If the SDP in the offer indicates that the offerer is only able to
   become the active party, the answerer needs to determine whether it
   is able to become the passive party.  If this is not possible, e.g.,
   due to the answerer not knowing its international E.164 number, the
   answerer MUST reject the circuit-switched media by setting the port
   number to zero on the answer.  If the answerer is aware of its
   international E.164 number, it MUST include the "setup" attribute in
   the answer and set it to value "passive" or "holdconn".  The answerer
   MUST also include its E.164 number in the "c=" line.

   If the SDP in the offer indicates that the offerer is only able to
   become the passive party, the answerer MUST verify that the offerer's
   E.164 number is included in the "c=" line of the offer.  If the
   number is included, the answerer MUST include the "setup" attribute
   in the answer and set it to value "active" or "holdconn".  If the
   number is not included, the recipient of the offer is not willing to
   establish a connection the E.164 based on a priori knowledge of cost,
   or other reasons, call establishment is not possible, and the
   answerer MUST reject the circuit-switched media by setting the port
   number to zero in the answer.

   If the SDP in the offer indicates that the offerer is able to become
   either the active or passive party, the answerer determines which
   role it will take.  If the offer includes an international E.164
   number in the "c=" line, the answerer SHOULD become the active party.
   If the answerer does not become the active party and if the answerer
   is aware of its E.164 number, it MUST become the passive party.  If
   the answerer does not become the active or the passive party, it MUST
   reject the circuit-switched media by setting the port number to zero
   in the answer.

   For each media description where the offer includes a
   "cs-correlation" attribute, the answerer MUST select from the offer
   those correlation mechanisms it supports and include in the answer
   one "a=cs-correlation" attribute line containing those mechanisms it
   is willing to use.  The answerer MUST only add one "cs-correlation"
   attribute in those media descriptions where also the offer included a
   "cs-correlation" attribute.  The answerer MUST NOT add any mechanisms
   that were not included in the offer.  If there is more than one
   "cs-correlation" attribute per media description in the offer, the
   answerer MUST discard all but the first for any media description.
   Also, the answerer MUST discard all unknown "cs-correlation"
   attribute values.

   If the answerer becomes the active party, it MUST add a value to any
   of the possible subfields.
Top   ToC   RFC7195 - Page 25
   If the answerer becomes the passive party, it MUST NOT add any values
   to the subfields in the "cs-correlation" attribute.

   After generating and sending the answer, if the answerer became the
   active party, it

   o  MUST extract the E.164 number from the "c=" line of the offer and
      MUST establish a circuit-switched bearer to that address.

   o  if the SDP answer contained a value for the "callerid" subfield,
      MUST set the Calling Party Number Information Element to that
      number.

   o  if the SDP answer contained a value for the "uuie" subfield, MUST
      send the User-User Information Element according to the rules
      defined for the circuit-switched technology used and set the value
      of the Information Element to that received in the SDP offer.

   o  if the SDP answer contained a value for the "dtmf" subfield, MUST
      send those DTMF digits according to the circuit-switched
      technology used.

   If, on the other hand, the answerer became the passive party, it

   o  MUST be prepared to receive a circuit-switched bearer,

   o  if the offer contained a value for the "callerid" subfield, MUST
      compare that value to the Calling Party Number Information Element
      of the circuit-switched bearer.  If the received Calling Party
      Number Information Element matches the value of the "callerid"
      subfield, the call SHOULD be treated as correlated to the ongoing
      session.

   o  if the offer contained a value for the "dtmf" subfield, MUST be
      prepared to receive and collect DTMF digits once the circuit-
      switched bearer is set up.  The answerer MUST compare the received
      DTMF digits to the value of the "dtmf" subfield.  If the received
      DTMF digits match the value of the "dtmf" subfield in the
      "cs-correlation" attribute, the call SHOULD be treated as
      correlated to the ongoing session.

   o  if the offer contained a value for the "uuie" subfield, MUST be
      prepared to receive a User-User Information Element once the
      circuit-switched bearer is set up.  The answerer MUST compare the
      received UUIE to the value of the "uuie" subfield.  If the value
      of the received UUIE matches the value of the "uuie" subfield, the
      call SHOULD be treated as correlated to the ongoing session.
Top   ToC   RFC7195 - Page 26
   o  if the offer contained an "external" subfield, MUST be prepared to
      receive a circuit-switched call and use the external means
      (typically, the human user) for accepting or rejecting the call.

   If the answerer becomes the active party, generates an SDP answer,
   and then it finds out that the circuit-switched call cannot be
   established, then the answerer MUST create a new SDP offer where the
   circuit-switched stream is removed from the session (actually, by
   setting the corresponding port in the "m=" line to zero) and send it
   to its counterpart.  This is to synchronize both parties (and
   potential intermediaries) on the state of the session.

5.6.3. Offerer Processing the Answer

When receiving the answer, if the SDP does not contain an "a=cs-correlation" attribute line, the offerer should take that as an indication that the other party does not support or is not willing to use the procedures defined in the document for this session and MUST revert to normal processing of SDP. When receiving the answer, the offerer MUST first determine whether it becomes the active or passive party, as described in Section 5.3.1. If the offerer becomes the active party, it o MUST extract the E.164 number from the "c=" line and MUST establish a circuit-switched bearer to that address. o if the SDP answer contained a value for the "uuie" subfield, MUST send the User-User Information Element according to the rules defined for the circuit-switched technology used and set the value of the Information Element to that received in the SDP answer. o if the SDP answer contained a value for the "dtmf" subfield, MUST send those DTMF digits according to the circuit-switched technology used. If the offerer becomes the passive party: o It MUST be prepared to receive a circuit-switched bearer. o Note that if delivery of the answer is delayed for some reason, the circuit-switched call attempt may arrive at the offerer before the answer has been processed. In this case, since the correlation mechanisms are negotiated as part of the offer/answer exchange, the answerer cannot know whether or not the incoming
Top   ToC   RFC7195 - Page 27
      circuit-switched call attempt is correlated with the session being
      negotiated; thus, the offerer SHOULD answer the circuit-switched
      call attempt only after it has received and processed the answer.

   o  If the answer contained a value for the "dtmf" subfield, the
      offerer MUST be prepared to receive and collect DTMF digits once
      the circuit-switched bearer is set up.  The offerer SHOULD compare
      the received DTMF digits to the value of the "dtmf" subfield.  If
      the received DTMF digits match the value of the "dtmf" subfield in
      the "cs-correlation" attribute, the call SHOULD be treated as
      correlated to the ongoing session.

   o  If the answer contained a value for the "uuie" subfield, the
      offerer MUST be prepared to receive a User-User Information
      Element once the circuit-switched bearer is set up.  The offerer
      SHOULD compare the received UUIE to the value of the "uuie"
      subfield.  If the value of the received UUIE matches the value of
      the "uuie" subfield, the call SHOULD be treated as correlated to
      the ongoing session.

   o  If the answer contained an "external" subfield, the offerer MUST
      be prepared to receive a circuit-switched call and use the
      external means (typically, the human user) for accepting or
      rejecting the call.

   According the "An Offer/Answer Model with the Session Description
   Protocol (SDP)" [RFC3264], the offerer needs to be ready to receive
   media as soon as the offer has been sent.  It may happen that the
   answerer, if it became the active party, will initiate a circuit-
   switched bearer setup that will arrive at the offerer before the
   answer has arrived.  However, the offerer needs to receive the answer
   and examine the information about the correlation mechanisms in order
   to successfully perform correlation of the circuit-switched call to
   the session.  Therefore, if the offerer receives an incoming circuit-
   switched call, it MUST NOT accept the call before the answer has been
   received.  If no answer is received during an implementation-specific
   time, the offerer MUST either modify the session according to
   [RFC3264] or terminate it according to the session signaling
   procedures in question (for terminating a SIP session, see Section 15
   of [RFC3261]).

5.6.4. Modifying the Session

If, at a later time, one of the parties wishes to modify the session, e.g., by adding a new media stream or by changing properties used on an existing stream, it may do so via the mechanisms defined in "An Offer/Answer Model with the Session Description Protocol (SDP)" [RFC3264].
Top   ToC   RFC7195 - Page 28
   If there is an existing circuit-switched bearer between the endpoints
   and the offerer wants to reuse that, the offerer MUST set the value
   of the "connection" attribute to "existing".

   If either party removes the circuit-switched media from the session
   (by setting the port number to zero), it MUST terminate the circuit-
   switched bearer using whatever mechanism is appropriate for the
   technology in question.

   If either party wishes to drop and reestablish an existing call, that
   party MUST first remove the circuit-switched media from the session
   by setting the port number to zero and then use another offer/answer
   exchange where it MUST set the "connection" attribute to "new".  If
   the media types are different (for example, a different codec will be
   used for the circuit-switched bearer), the media descriptions for
   terminating the existing bearer and the new bearer can be in the same
   offer.

   If either party would like to remove existing RTP-based media from
   the session and replace that with a circuit-switched bearer, it would
   create a new offer to add the circuit-switched media as described in
   Section 5.6.1 above, replacing the RTP-based media description with
   the circuit-switched media description, as specified in RFC 3264
   [RFC3264].

   Once the offer/answer exchange is done, but the circuit-switched
   bearer is not yet established, there may be a period of time when no
   media is available.  Also, it may happen that correlating the
   circuit-switched call fails for reasons discussed in Section 5.3.3.
   In this case, even if the offer/answer exchange was successful,
   endpoints are not able to receive or send media.  It is up to the
   implementation to decide the behavior in this case; if nothing else
   is done, the user most likely hangs up after a while if there is no
   other media in the session.  Note that this may also happen when
   switching from one RTP media to another RTP media (for example, when
   firewall blocks the new media stream).

   If either party would like to remove existing circuit-switched media
   from the session and replace that with RTP-based media, it would
   modify the media description as per the procedures defined in RFC
   3264 [RFC3264].  The endpoint MUST then terminate the circuit-
   switched bearer using whatever mechanism is appropriate for the
   technology in question.

5.7. Formal Syntax

The following is the formal Augmented Backus-Naur Form (ABNF) [RFC5234] syntax that supports the extensions defined in this
Top   ToC   RFC7195 - Page 29
   specification.  The syntax is built above the SDP [RFC4566] and the
   tel URI [RFC3966] grammars.  Implementations that are compliant with
   this specification MUST be compliant with this syntax.

   Figure 2 shows the formal syntax of the extensions defined in this
   memo.

           ; extension to the connection field originally specified
           ; in RFC 4566

           connection-field   =  [%x63 "=" nettype SP addrtype SP
           connection-address CRLF]
           ; CRLF defined in RFC 5234

           ;nettype and addrtype are defined in RFC 4566

           connection-address =/  global-number-digits / "-"
           ; global-number-digits specified in RFC 3966

           ;subrules for correlation attribute
           attribute          =/ cs-correlation-attr
           ; attribute defined in RFC 4566
           cs-correlation-attr = "cs-correlation:" corr-mechanisms
           corr-mechanisms    = corr-mech *(SP corr-mech)
           corr-mech          = caller-id-mech / uuie-mech /
                                dtmf-mech / external-mech /
                                ext-mech
           caller-id-mech     = "callerid" [":" caller-id-value]
           caller-id-value    = "+" 1*15DIGIT
           ; DIGIT defined in RFC 5234
           uuie-mech          = "uuie" [":" uuie-value]
           uuie-value         = 1*65(HEXDIG HEXDIG)
                                ;This represents up to 130 HEXDIG
                                ; (65 octets)
                                ;HEXDIG defined in RFC 5234
                                ;HEXDIG defined as 0-9, A-F
           dtmf-mech          = "dtmf" [":" dtmf-value]
           dtmf-value         = 1*32(DIGIT / %x41-44 / %x23 / %x2A )
                                ;0-9, A-D, '#' and '*'
           external-mech      = "external"
           ext-mech           = ext-mech-name [":" ext-mech-value]
           ext-mech-name      = token
           ext-mech-value     = token
           ; token is specified in RFC 4566

                  Figure 2: Syntax of the SDP Extensions
Top   ToC   RFC7195 - Page 30

6. Examples

In the examples below, where an SDP line is too long to be displayed as a single line, a breaking character "\" indicates continuation in the following line. Note that this character is included for display purposes only. Implementations MUST write a single line without breaks.

6.1. Single PSTN Audio Stream

Endpoint A Endpoint B | | | (1) SDP offer (PSTN audio) | |--------------------------------->| | | | (2) SDP answer (PSTN audio) | |<---------------------------------| | | | PSTN call setup | |<---------------------------------| | | |<==== media over PSTN bearer ====>| | | Figure 3: Basic Flow Figure 3 shows a basic example that describes a single audio media stream over a circuit-switched bearer. Endpoint A generates an SDP offer, which is shown in Figure 4. The offer describes a PSTN circuit-switched bearer in the "m=" and "c=" line where it also indicates its international E.164 number format. Additionally, Endpoint A expresses that it can initiate the circuit-switched bearer or be the recipient of it in the "a=setup" attribute line. The SDP offer also includes correlation identifiers that this endpoint will insert in the Calling Party Number and/or User-User Information Element of the PSTN call setup if eventually this endpoint initiates the PSTN call. Endpoint A also includes "external" as one correlation mechanism, indicating that it can use the human user to perform correlation in case other mechanisms fail.
Top   ToC   RFC7195 - Page 31
           v=0
           o=alice 2890844526 2890842807 IN IP4 192.0.2.5
           s=
           t=0 0
           m=audio 9 PSTN -
           c=PSTN E164 +441134960123
           a=setup:actpass
           a=connection:new
           a=cs-correlation:callerid:+441134960123 \
             uuie:56A390F3D2B7310023 external

                          Figure 4: SDP Offer (1)

   Endpoint B generates an SDP answer (Figure 5), describing a PSTN
   audio media on port 9 without information on the media subtype on the
   "m=" line.  The "c=" line contains B's international E.164 number.
   In the "a=setup" line, Endpoint B indicates that it is willing to
   become the active endpoint when establishing the PSTN call, and it
   also includes the "a=cs-correlation" attribute line containing the
   values it is going to include in the Calling Party Number and User-
   User Information Element of the PSTN call establishment.  Endpoint B
   is also able to perform correlation by external means, in case other
   correlation mechanisms fail.

         v=0
         o=- 2890973824 2890987289 IN IP4 192.0.2.7
         s=
         t=0 0
         m=audio 9 PSTN -
         c=PSTN E164 +441134960124
         a=setup:active
         a=connection:new
         a=cs-correlation:callerid:+441134960124 \
           uuie:74B9027A869D7966A2 external

             Figure 5: SDP Answer with Circuit-Switched Media

   When Endpoint A receives the answer, it examines that B is willing to
   become the active endpoint when setting up the PSTN call.  Endpoint A
   temporarily stores B's E.164 number and the User-User IE value of the
   "cs-correlation" attribute and waits for a circuit-switched bearer
   establishment.

   Endpoint B initiates a circuit-switched bearer using whatever
   circuit-switched technology is available for it.  The Called Party
   Number is set to A's number, and the Calling Party Number is set to
   B's own number.  Endpoint B also sets the User-User Information
   Element value to the one contained in the SDP answer.
Top   ToC   RFC7195 - Page 32
   When Endpoint A receives the circuit-switched bearer establishment,
   it examines the UUIE and the Calling Party Number and, by comparing
   those received during the offer/answer exchange, determines that the
   call is related to the SDP session.

   It may also be that neither the UUIE nor the Calling Party Number is
   received by the called party, or the format of the Calling Party
   Number is changed by the PSTN.  Implementations may still accept such
   call establishment attempts as being related to the session that was
   established in the IP network.  As it cannot be guaranteed that the
   values used for correlation are always passed intact through the
   network, they should be treated as additional hints that the circuit-
   switched bearer is actually related to the session.

6.2. Advanced SDP Example: Circuit-Switched Audio and Video Streams

Endpoint A Endpoint B | | | (1) SDP offer (PSTN audio and video) | |------------------------------------------->| | | | (2) SDP answer (PSTN audio) | |<-------------------------------------------| | | | PSTN call setup | |<-------------------------------------------| | | |<======== media over PSTN bearer ==========>| | | Figure 6: Circuit-Switched Audio and Video Streams Figure 6 shows an example of negotiating audio and video media streams over circuit-switched bearers.
Top   ToC   RFC7195 - Page 33
         v=0
         o=alice 2890844526 2890842807 IN IP4 192.0.2.5
         s=
         t=0 0
         a=setup:actpass
         a=connection:new
         c=PSTN E164 +441134960123
         m=audio 9 PSTN -
         a=cs-correlation:dtmf:1234536
         m=video 9 PSTN 34
         a=rtpmap:34 H263/90000
         a=cs-correlation:callerid:+441134960123

       Figure 7: SDP Offer with Circuit-Switched Audio and Video (1)

   Upon receiving the SDP offer described in Figure 7, Endpoint B
   rejects the video stream as the device does not currently support
   video, but it accepts the circuit-switched audio stream.  As Endpoint
   A indicated that it is able to become either the active or passive
   party, Endpoint B gets to select which role it would like to take.
   Since the offer contained the international E.164 number of Endpoint
   A, Endpoint B decides that it becomes the active party in setting up
   the circuit-switched bearer.  B includes a new value in the "dtmf"
   subfield of the "cs-correlation" attribute, which it is going to send
   as DTMF tones once the bearer setup is complete.  The answer is
   described in Figure 8.

         v=0
         o=- 2890973824 2890987289 IN IP4 192.0.2.7
         s=
         t=0 0
         a=setup:active
         a=connection:new
         c=PSTN E164 +441134960124
         m=audio 9 PSTN -
         a=cs-correlation:dtmf:654321
         m=video 0 PSTN 34
         a=cs-correlation:callerid:+441134960124

      Figure 8: SDP Answer with Circuit-Switched Audio and Video (2)

7. Security Considerations

This document provides an extension to RFC 4566 [RFC4566] and RFC 3264 [RFC3264]. As such, the security considerations of those documents apply.
Top   ToC   RFC7195 - Page 34
   This memo provides mechanisms to agree on a correlation identifier or
   identifiers that are used to evaluate whether an incoming circuit-
   switched bearer is related to an ongoing session in the IP domain.
   If an attacker replicates the correlation identifier and establishes
   a call within the time window the receiving endpoint is expecting a
   call, the attacker may be able to hijack the circuit-switched bearer.
   These types of attacks are not specific to the mechanisms presented
   in this memo.  For example, Caller ID spoofing is a well-known attack
   in the PSTN.  Users are advised to use the same caution before
   revealing sensitive information as they would on any other phone
   call.  Furthermore, users are advised that mechanisms that may be in
   use in the IP domain for securing the media, like Secure RTP (SRTP)
   [RFC3711], are not available in the CS domain.

   For the purposes of establishing a circuit-switched bearer, the
   active endpoint needs to know the passive endpoint's phone number.
   Phone numbers are sensitive information, and some people may choose
   not to reveal their phone numbers when calling using supplementary
   services like Calling Line Identification Restriction (CLIR) in GSM.
   Implementations should take the caller's preferences regarding
   calling line identification into account if possible, by restricting
   the inclusion of the phone number in the SDP "c=" line if the caller
   has chosen to use CLIR.  If this is not possible, implementations may
   present a prompt informing the user that their phone number may be
   transmitted to the other party.

   As with IP addresses, if there is a desire to protect the SDP
   containing phone numbers carried in SIP, implementers are advised to
   follow the security mechanisms defined in [RFC3261].

   It is possible that an attacker creates a circuit-switched session
   whereby the attacked endpoint should dial a circuit-switched number,
   perhaps even a premium-rate telephone number.  To mitigate the
   consequences of this attack, endpoints MUST authenticate and trust
   remote endpoints users who try to remain passive in the circuit-
   switched connection establishment.  It is RECOMMENDED that endpoints
   have local policies precluding the active establishment of circuit-
   switched connections to certain numbers (e.g., international,
   premium, and long distance).  Additionally, it is strongly
   RECOMMENDED that the end user is asked for consent prior to the
   endpoint initiating a circuit-switched connection.
Top   ToC   RFC7195 - Page 35

8. IANA Considerations

IANA has registered a number of SDP tokens according to the following data.

8.1. Registration of the New "cs-correlation" SDP Attribute

Contact: Miguel Garcia <miguel.a.garcia@ericsson.com> Attribute name: cs-correlation Long-form attribute name: PSTN Correlation Identifier Type of attribute: media level only Subject to charset: No Description: This attribute provides the Correlation Identifier used in PSTN signaling Appropriate values: see Section 5.2.3.1 Specification: RFC 7195 The IANA has created a subregistry for the "cs-correlation" attribute under the "Session Description Protocol (SDP) Parameters" registry. The initial values for the subregistry are presented in the following; IANA has registered these values accordingly: Value of "cs-correlation" attribute Reference Description ----------------------------------- --------- ------------------- callerid RFC 7195 Caller ID uuie RFC 7195 User-User Information Element dtmf RFC 7195 Dual-Tone Multi-Frequency external RFC 7195 External As per the terminology in [RFC5226], the registration policy for new values of the "cs-correlation" attribute is "Specification Required".
Top   ToC   RFC7195 - Page 36

8.2. Registration of a New "nettype" Value

IANA has registered a new "nettype" in the "Session Description Protocol (SDP) Parameters" registry [IANA]. The registration data, according to RFC 4566 [RFC4566], is as follows. Type SDP Name Reference -------------- ------------------ --------- nettype PSTN RFC 7195

8.3. Registration of a New "addrtype" Value

IANA has registered a new "addrtype" in the "Session Description Protocol (SDP) Parameters" registry [IANA]. The registration data, according to RFC 4566 [RFC4566], is as follows. Type SDP Name Reference -------------- ------------------ --------- addrtype E164 RFC 7195 Note: This document defines the "E164" addrtype in the context of the "PSTN" nettype only. RFC 3108 [RFC3108] also defines address type "E.164". This definition is distinct from the one defined by this memo and shall not be used with <nettype> "PSTN".

8.4. Registration of a New "proto" Value

IANA has registered a new "proto" in the "Session Description Protocol (SDP) Parameters" registry [IANA]. The registration data, according to RFC 4566 [RFC4566], is as follows. Type SDP Name Reference -------------- ------------------ --------- proto PSTN RFC 7195 The related "fmt" namespace reuses the conventions and payload type number defined for RTP/AVP. In this document, the RTP audio and video media types, when applied to PSTN circuit-switched bearers, represent merely an audio or video codec in its native format directly on top of a single PSTN bearer. In some cases, the endpoint is not able to determine the list of available codecs for circuit-switched media streams. In this case, in order to be syntactically compliant with SDP [RFC4566], the endpoint MUST include a single dash ("-") in the <fmt> subfield.
Top   ToC   RFC7195 - Page 37

9. Acknowledgments

The authors want to thank Paul Kyzivat, Flemming Andreasen, Thomas Belling, John Elwell, Jari Mutikainen, Miikka Poikselka, Jonathan Rosenberg, Ingemar Johansson, Christer Holmberg, Alf Heidermark, Tom Taylor, Thomas Belling, Keith Drage, and Andrew Allen for providing their insight and comments on this document.

10. References

10.1. Normative References

[ITU.Q931.1998] International Telecommunications Union, "Digital Subscriber Signalling System No. 1 - ISDN User-Network Interface Layer 3 Specification for Basic Call Control", ITU-T Recommendation Q931, May 1998. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002. [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, December 2004. [RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in the Session Description Protocol (SDP)", RFC 4145, September 2005. [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006. [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, October 2006. [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008. [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
Top   ToC   RFC7195 - Page 38

10.2. Informative References

[IANA] IANA, "Session Description Protocol (SDP) Parameters Registry", <http://www.iana.org/assignments/ sdp-parameters>. [ITU.E164.2010] International Telecommunications Union, "The International Public Telecommunication Numbering Plan", ITU-T Recommendation E.164, 2010. [ITU.Q23.1988] International Telecommunications Union, "Technical features of push-button telephone sets", ITU-T Technical Recommendation Q.23, 1988. [RFC3108] Kumar, R. and M. Mostafa, "Conventions for the use of the Session Description Protocol (SDP) for ATM Bearer Connections", RFC 3108, May 2001. [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003. [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video Conferences with Minimal Control", STD 65, RFC 3551, July 2003. [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004. [RFC3725] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. Camarillo, "Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April 2004. [RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message Session Relay Protocol (MSRP)", RFC 4975, September 2007. [SIP-UUI] Johnston, A. and J. Rafferty, "A Mechanism for Transporting User to User Call Control Information in SIP", Work in Progress, April 2014.
Top   ToC   RFC7195 - Page 39
   [TS.24.008] 3GPP, "Mobile radio interface Layer 3 specification; Core
               network protocols; Stage 3", 3GPP TS 24.008 3.20.0,
               December 2005.

Authors' Addresses

Miguel A. Garcia-Martin Ericsson Calle Via de los Poblados 13 Madrid, ES 28033 Spain EMail: miguel.a.garcia@ericsson.com Simo Veikkolainen Nokia P.O. Box 226 NOKIA GROUP, FI 00045 Finland Phone: +358 50 486 4463 EMail: simo.veikkolainen@nokia.com