MMUSIC J. Lennox
Internet-Draft Vidyo
Intended status: Standards Track H. Schulzrinne
Expires: September 11, 2012 Columbia U.
March 12, 2012

Mechanisms for Media Source Selection in the Session Description Protocol (SDP)
draft-lennox-mmusic-sdp-source-selection-04

Abstract

Source-specific media attributes in the Session Description Protocol (SDP) allow endpoints to describe Real-Time Transport Protocol (RTP) sources within a media stream. This document extends that mechanism by defining how participants in a multimedia session can request specific sources from a remote party.

Status of this Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on September 11, 2012.

Copyright Notice

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.


Table of Contents

1. Introduction

The source-attribute specification [RFC5576] provides declarative definitions for Real-Time Protocol (RTP) [RFC3550] media sources in the Session Description Protocol (SDP) [RFC4566].

In some architectures (such as those described in Section 3), it is useful to provide the capability for endpoints to request specific sources of a remote party, asking the sender to selectively enable or disable them, and to specify characteristics of the sources requested. To accomplish this, this document defines a new media attribute, "remote-ssrc", which allows a receiver to indicate that it wishes to receive a remote source, and also allows it to specify attributes of the remote source. This document defines several such remote source attributes: "recv" and "preference" which are applicable to any media type, and "framerate" and "imageattr" which are specific to video sources. Currently no attributes are defined that are specific to audio or other media types.

Additionally, several new declarative ([RFC5576]) source attributes are defined: "information", providing human-readable information about a local source, and "sending", which is complementary to the "recv" remote source attribute.

2. Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] and indicate requirement levels for compliant implementations.

3. Architecture

The primary use envisioned for this mechanism is for multimedia conferences controlled by a central system. This is similar to the topologies described by RTP Topologies [RFC5117] as Topo-Mixer, Topo-Video-switch-MCU, or Topo-RTCP-terminating-MCU (depending on the treatment of RTCP), with one crucial difference: rather than only forwarding either a single media source, or an MCU-mixed media source, to receivers, the central mixer can instead simultaneously forward multiple media sources independently to each receiver, as constrained by available bandwidth.

In this architecture, the conference server can notify each participant as sources become available in the conference. Participants can then either explicitly request sources from the server, or allow the server to choose which sources to forward based on its own criteria and policy. A hybrid mode is also possible, in which participants explicitly request some sources while allowing the server to choose others.

Receivers can specify parameters for how they wish to view sources, e.g., the image size or frame rate in which they will display video sources. They can also specify priority among sources in case the server has insufficient bandwidth to send them all.

When the first receiver starts viewing a source, the conference server tells the sender to start sending it; prior to this, the sender does not send it. Similarly, when the last receiver stops viewing a source, the server tells the sender to stop sending it.

For large conferences, sending each conference source over a separate RTP session, each with its own m= line, would not be practical, due to issues such as server port consumption, NAT binding exhaustion, and ICE setup time. Thus, sources of the same media type are instead sent over a single RTP session, distinguished by their SSRC. This document defines the source negotiation mechanisms needed in SDP to enable the mechanisms defined in this architecture.

4. Overview

This mechanism builds upon the declarative source definitions defined in [RFC5576]. That document defines how to describe individual RTP sources within an RTP session in SDP. Each source is identified by its Synchronization Source (SSRC) identifier, and is associated with its CNAME (canonical-name) SDP attribute.

To enable the architecture defined in Section 3, this document defines a complementary SDP media attribute which allows the receiver of some RTP sources to let the the sources' sender know which sources the receiver would like to receive. This attribute, "remote-ssrc", is defined in Section 5.

A simple example SDP exchange using this mechanism is shown in Figure 1 and Figure 2. For brevity, only the relevant portions of the media sections of the SDP descriptions are given.

m=video 49168 RTP/AVP 96
a=rtpmap:96 H264/90000
a=ssrc:12345 cname:user1@host1.example.com
a=ssrc:67890 cname:user2@host2.example.com

In Figure 1 an SDP description indicates, using the mechanisms of [RFC5576], two sources that are available in an RTP session.

m=video 49170 RTP/AVP 96
a=rtpmap:96 H264/90000
a=remote-ssrc:12345 recv:on
a=remote-ssrc:12345 imageattr:* [x=720,y=576]
a=remote-ssrc:12345 framerate:15

In Figure 2 an SDP description sent in response requests that a specific source be sent, with resolution 720 by 576 and a framerate of 15 frames per second.

5. The "remote-ssrc" Media Attribute

The "remote-ssrc" SDP media-level attribute allows a receiver to requested a specific a remote source.


a=remote-ssrc:<ssrc-id> <attribute>
a=remote-ssrc:<ssrc-id> <attribute>:<value>

The SDP media attribute "remote-ssrc" indicates a property, known as a "remote source-level attribute", of a remote media source (RTP stream) within an RTP session. <ssrc-id> is the synchronization source ID (SSRC) of the remote source being described, interpreted as a 32-bit unsigned integer in network byte order and represented in decimal. <attribute> or <attribute>:<value> represent the source-level receive attribute specific to the given remote media source. The source-level receive attribute follows the syntax of the SDP "a=" line. It thus consists either of a single attribute name (a flag), or an attribute name and value, e.g., "framerate:30". No attributes of the former type are defined by this document. The order of multiple "remote-ssrc" media attributes within an SDP message is not significant.

These remote source IDs correspond to sources in the RTP session that may be sent by other session members. The author of the SDP message may have learned about these sources by observing them in the RTP session (either by receiving RTP packets or seeing RTCP reports about them), from earlier SDP messages containing "ssrc" attributes describing the sources, or from other means such as the SIP conference event package [RFC4575] or the XCON conference event package [I-D.ietf-xcon-event-package].

The "remote-ssrc" media attribute may be used for any RTP-based media transport. It is not defined for other transport protocols.

Though the remote source attributes specified by the "remote-ssrc" property follow the same syntax as (local) source attributes, they are defined independently. All remote source attributes MUST be registered with IANA, using the registry defined in Section 12.3.

Figure 10 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the ssrc attribute.

The "remote-ssrc" media attribute does not (itself) depend on the SDP charset, though specific remote source attributes may be defined to be.

6. Remote Source Attributes

This section defines several specific remote source-level attributes that can be applied to RTP sources.

6.1. The "recv" Remote Source-Level Attribute


a=remote-ssrc:<ssrc> recv:<state>

The "recv" remote source attribute indicates whether the author of an SDP message is interested in receiving a source. A "recv" remote source attribute with a <state> value of "on" indicates a source that the author of an SDP message is interested in receiving. Similarly, a "recv" remote source attribute with a <state> value of "off" indicates a source that the author of an SDP message is not interested in receiving. There MUST be at most one "recv" remote source-level attribute per remote media source. A "recv" attribute with a <state> value other than "on" or "off" MUST be ignored (for future extensibility).

If the media stream containing the source has the media attributes "sendonly" or "inactive", the SDP message MUST NOT list any remote sources with a "recv" attribute with the <state> "on" for that media stream.

If "remote-ssrc" attributes are given for a particular remote source, but "recv" is not specified for it, "recv:on" is the default if the media stream is "sendrecv" or "recvonly".

If no remote-ssrc attributes at all are listed for a particular remote source, the choice of whether to send it is left at the sender's discretion. However, for sources associated in with an "ssrc-group" [RFC5576], any unlisted sources of a group SHOULD be treated the same as any listed ones if the requests are consistent, unless the semantics specified for the "ssrc-group" dictates otherwise.

Figure 11 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the "recv" attribute.

Section 8 describes how the "recv" remote source attribute is used with SDP offer/answer [RFC3264].

The "recv" remote source attribute does not depend on the SDP charset.

6.2. The "framerate" Remote Source Attribute


a=remote-ssrc:<ssrc> framerate:<frame rate>

The "framerate" remote source-level attribute gives the maximum frame rate, in frames per second, which the receiver of a video source would like receive for the video. Higher framerates are likely not to be useful to the receiver. This attribute is analogous in function and syntax to the SDP "framerate" media attribute [RFC4566]. Decimal representations of fractional values using the notation "<integer>.<fraction>" are allowed. The frame rate specified MUST be greater than zero.

The "framerate" attribute is advisory; a sender MAY send a framerate other than that requested by the receiver if it is not able to send the framerate required. The sender SHOULD attempt to come as close as it can to the requested framerate, subject to other constraints of the system.

The "framerate" attribute is defined only for video media. There MUST be at most one "framerate" remote source attribute per remote media source. The "framerate" requested MUST NOT be inconsistent with any fmtp parameters specified for the media stream's payload types.

Figure 12 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the "framerate" attribute.

The "framerate" remote source attribute does not depend on the SDP charset.

6.3. The "imageattr" Remote Source Attribute


a=remote-ssrc:<ssrc> imageattr:<PT> <attr_list>

The "imageattr" remote source-level attribute describes the image resolution and other image characteristics with which a video source would like receive the video. Larger resolutions are likely not to be useful to the receiver. It is analogous in function and syntax to the "recv" portion of the SDP "imageattr" media attribute [RFC6236].

The "imageattr" attribute is advisory; a sender MAY send a resolution other than that requested by the receiver if it is not able to send the resolution required. The sender SHOULD attempt to come as close as it can to the requested resolution, subject to other constraints of the system.

Different image attributes MAY be defined per payload type defined in the media stream. The <PT> parameter MAY either be one of the media formats (RTP payload types) specified for the media stream, or the character "*" indicating that the "imageattr" attribute applies to all payload types of the session.

The <attr_list> parameter gives a list of resolutions and image aspect ratios with which the receiver wishes to display the source. It is described in detail in [RFC6236].

The "imageattr" attribute is defined only for video media. There MUST be at most one "imageattr" remote source attribute per payload type per remote media source. If an "imageattr" attribute is present with a PT value of "*", it MUST be the only "imageattr" attribute defined for that remote media source. The "imageattr" requested MUST NOT be inconsistent with any fmtp parameters specified for the media stream's payload types.

Figure 13 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the "imageattr" attribute.

The "imageattr" remote source attribute does not depend on the SDP charset.

6.4. The "priority" Remote Source Attribute


a=remote-ssrc:<ssrc> priority:<priority>

The "priority" remote source-level attribute gives the relative priority among the remote sources requested by a receiver. The <priority> parameter is a non-negative decimal integer indicating which streams should be given higher preference if the sender determines that there is insufficient bandwidth (or other resource) available to transmit all the requested streams. Larger numbers indicate a greater priority. Priority values MUST be less than 2**31 - 1, but otherwise their specific values have no semantic significance.

Figure 14 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the "priority" attribute.

The "priority" remote source attribute does not depend on the SDP charset.

7. Source Attributes

This section describes sending source attributes that a sender can use to describe RTP sources.

7.1. The "information" Source Attribute


a=ssrc:<ssrc> information:<source description>

The "information" source attribute provides textual information about a source. It is analogous in function and syntax to the SDP "i=" field for session and media information. There MUST be at most one "information" source attribute per media source. If the "charset" attribute is present at the session or media level, it specifies the character set used in the source description. If the "charset" attribute is not present, the "information" attribute MUST contain ISO 10646 characters in UTF-8 encoding.

The "information" attribute is intended to provide a free-form human-readable description of a media source. It is not suitable for parsing by automata.

Figure 15 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the "information" attribute.

7.2. The "sending" Source-Level Attribute


a=ssrc:<ssrc> sending:<state>

The "sending" remote source attribute indicates whether the author of an SDP message is interested in currently actively sending a source, due to it having been requested by the other party with a "recv" remote source attribute in an SDP offer/answer exchange. A "sending" source attribute with a <state> value of "on" indicates a source that the author of an SDP message is currently actively sending, due to it having been requested by the other party with a "recv:on" remote source attribute. Similarly, the "sending" source attribute with a <state> value of "off" indicates a source that the other party has rejected with a previous the "recv:off" remote source attribute, or that the author of the SDP message is no longer interested in sending. There MUST be at most one "sending" source-level attribute per media source. Sources which were not listed with "recv-ssrc" in the previous offer or answer SHOULD NOT have a "sending" attribute included. The "sending" attribute is only defined in the context of SDP offer/answer [RFC3264]. A "sending" attribute with a <state> value other than "on" or "off" MUST be ignored (for future extensibility).

If the media stream containing the source has the media attributes "recvonly" or "inactive", the stream MUST NOT list any sources with the "sending" attribute with the <state> on.

A source that is indicated in an offer or answer with "sending:off" SHOULD still be considered a member of the RTP session, and thus RTCP SHOULD be sent for it, unless it has left the RTP session (with an RTCP BYE message) subsequent to the sending of the offer or answer.

Figure 16 in Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for the "sending" attribute.

Further description of how the "sending" source attribute is used with SDP offer/answer [RFC3264] is given in Section 8.

The "sending" source attribute is not dependent on charset.

8. Usage With the Offer/Answer Model

When used with the SDP Offer/Answer Model [RFC3264], the "remote-ssrc" attribute MAY be included either in an SDP offer or answer. Both offers and answers MAY contain both "ssrc" and "remote-ssrc" media attributes.

If "remote-ssrc" attributes are present in an SDP offer, the answerer (if it accepts the offer) MUST include all the remotely-requested active sources in "ssrc" attributes in its answer, except for any sources which are no longer available when the answer is sent. If "remote-ssrc" attributes are present in an answer, no immediate update to SDP is necessary; however, if the endpoint subsequently sends a new SDP offer, it SHOULD include all the remotely-requested sources from the previous offer/answer exchange, unless those sources are no longer available. In both cases, remote sources with the "recv:on" remote source attribute included (implicitly or explicitly) MUST be listed in the next response -- with the "sending:on" local source attribute if the sender accepted the request to send the source, or "sending:off" if the sender does not wish to send the source. Remote sources with the "recv:off" remote source attribute MUST have the "sending:off" local source attribute. If the send/recv mode of the media stream has changed to "recvonly" or "inactive", sources MUST NOT be listed with the "sending:on" attribute, and thus all remotely-requested sources MUST be listed as "sending:off" instead.

If a sender receives a "recv:on" in an answer and does not wish to send the source, it SHOULD send a updated offer with "sending:off" as soon as is practical. If a sender wishes to stop sending a source for which its previous offer or answer had included "sending:on", it SHOULD send an updated offer with "sending:off" as soon as practical, and MUST include "sending:off" for the source in its next offer or answer (assuming the source is still in the session, and it still wishes not to send the source by the time of the offer or answer).

In general, all participants in an offer/answer exchange SHOULD list all currently available sources, unless information about available sources is being provided through some other mechanism, such as the SIP conference event package [RFC4575] or the XCON conference event package [I-D.ietf-xcon-event-package]. (Because these event packages support partial updates, whereas SDP does not, source notification through event packages can be more efficient, where applicable, than SDP can be.) In the latter case sources that were not explicitly requested in the most recent SDP offer or answer MAY be omitted.

9. Backward Compatibility

The default behavior, for remote sources which are listed neither as "recv:on" nor "recv:off", is that whether sources are to be sent is left to the sender's discretion. This is also the implicit behavior for standard RTP; thus, a device does not need to know, upon receiving an SDP message containing no "remote-ssrc" attributes, whether its peer does not understand the "remote-ssrc" attribute at all, or is simply choosing to leave source selection up to the sender's discretion.

Because offer/answer exchanges are required to include "sending" source attributes in response to previous "recv" remote source attributes, it is possible to determine based on an SDP answer, or on a subsequent offer/answer exchange, whether the peer understands the "remote-ssrc" attribute.

10. Formal Grammar

This section gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] grammar for each of the new media and source attributes defined in this document. Grammars for existing session or media attributes which have been extended to be source attributes are not included.

remote-ssrc-attr = "remote-ssrc:" ssrc-id SP attribute
; The base definition of "attribute" is in RFC 4566.
; (It is the content of "a=" lines.)
ssrc-id = integer ; 0 .. 2**32 - 1

attribute =/ remote-ssrc-attr
recv-attr = "recv:" recv-state

recv-state = "on" / "off" / token

attribute =/ recv-attr
framerate-attr = "framerate:" integer [ "." 1*DIGIT ]

attribute =/ framerate-attr
imageattr-attr = "imageattr:" PT WSP attr_list
; The definition of PT and attr_list are in
; [RFC6236]

attribute =/ imageattr-attr
priority-attr = "priority:" integer

attribute =/ priority-attr
information-attr = "information:" text
; The definition of text is in [RFC4566]

attribute =/ information-attr
sending-attr = "sending:" sending-state

sending-state = "on" / "off" / token

attribute =/ sending-attr

11. Security Considerations

All the security considerations of RTP [RFC3550] and of SDP [RFC4566] apply. Explicitly requesting sources of an RTP media stream does not appear to add further security issues.

12. IANA Considerations

12.1. New SDP Media-Level Attributes

This document defines a new SDP media-level attribute, "remote-ssrc". This attribute should be registered by IANA under "Session Description Protocol (SDP) Parameters" under "att-field (media level only)".

The "remote-ssrc" attribute is used to identify characteristics of remote media sources within a media stream. Its format is defined in Section 5.

12.2. New SDP Source-Level Attributes

This document defines two new SDP source-level attributes, "information" and "sending". These attributes should be registered by IANA under "Session Description Protocol (SDP) Parameters" under "att-field (source level)". Their format is defined in Section 7.

12.3. Registry for Remote Source-Level Attributes

This specification creates a new IANA registry named "att-field (remote source level)" within the SDP parameters registry. Remote source attributes MUST be registered with IANA and documented, under the same rules as for SDP source-level attributes as specified in [RFC5576]:

New attribute registrations are accepted according to the "Specification Required" policy of [RFC5226], provided that the specification includes the following information:

The above is the minimum that IANA will accept. Attributes that are expected to see widespread use and interoperability SHOULD be documented with a standards-track RFC that specifies the attribute more precisely.

Submitters of registrations should ensure that the specification is in the spirit of SDP attributes, most notably that the attribute is platform independent in the sense that it makes no implicit assumptions about operating systems and does not name specific pieces of software in a manner that might inhibit interoperability.

Remote source-level attributes which are substantially similar in semantics to existing source-level, session-level or media-level attributes SHOULD re-use the same attribute name as those attributes. Remote source-level attributes SHOULD NOT re-use attribute names of other level attributes that are unrelated or substantially different.

The initial set of remote source attribute names, with definitions in Section 6 of this document, is in Figure 17.

Type            SDP Name                     Reference
----            ------------------           ---------
att-field (remote source level)
                recv                        [RFCXXXX]
                framerate                   [RFCXXXX]
                imageattr                   [RFCXXXX]
                priority                    [RFCXXXX]

(Note to the RFC-Editor: please replace "XXXX" with the number of this document prior to publication as an RFC.)

13. References

13.1. Normative References

[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003.
[RFC4566] Handley, M., Jacobson, V. and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006.
[RFC5576] Lennox, J., Ott, J. and T. Schierl, "Source-Specific Media Attributes in the Session Description Protocol (SDP)", RFC 5576, June 2009.
[RFC6236] Johansson, I. and K. Jung, "Negotiation of Generic Image Attributes in the Session Description Protocol (SDP)", RFC 6236, May 2011.

13.2. Informative References

[RFC5117] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117, January 2008.
[RFC4575] Rosenberg, J., Schulzrinne, H. and O. Levin, "A Session Initiation Protocol (SIP) Event Package for Conference State", RFC 4575, August 2006.
[I-D.ietf-xcon-event-package] Camarillo, G, Srinivasan, S, Even, R and J Urpalainen, "Conference Event Package Data Format Extension for Centralized Conferencing (XCON)", Internet-Draft draft-ietf-xcon-event-package-01, September 2008.

Appendix A. Open issues

Appendix B. Changes From Earlier Versions

Note to the RFC-Editor: please remove this section prior to publication as an RFC.

Appendix B.1. Changes From Individual Submission Draft -03

Changed logic to indicate that it is valid to reject a "recv:on" request with "sending:off", either immediately or at a subsequent time.

Clarified that sources with "sending:off" are still members of the RTP session, and so still have RTCP sent for them.

Appendix B.2. Changes From Individual Submission Draft -02

Document refresh; reference updates only.

Appendix B.3. Changes From Individual Submission Draft -01

Appendix B.4. Changes From Individual Submission Draft -00

Authors' Addresses

Jonathan Lennox Vidyo, Inc. 433 Hackensack Avenue Seventh Floor Hackensack, NJ 07601 US EMail: jonathan@vidyo.com
Henning Schulzrinne Columbia University Department of Computer Science 450 Computer Science 1214 Amsterdam Ave., Mailcode: 0401 New York, NY 10027 US EMail: hgs@cs.columbia.edu URI: http://www.cs.columbia.edu/~hgs/