RFC 6796
RFC 6796
Hilt
Request for Comments: 6796 Bell Labs/Alcatel-Lucent
Category: Standards Track G. Camarillo
ISSN: 2070-1721 Ericsson
J. Rosenberg
jdrosen.net
D. Worley
Ariadne
December 2012
Abstract
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved.
Table of Contents
1. Introduction ....................................................4
2. Terminology .....................................................5
3. Media Policy Data Set Format ....................................5
3.1. Namespace and Media Type ...................................5
3.2. Extensibility ..............................................5
3.3. Attributes .................................................6
3.3.1. The ’visibility’ Attribute ..........................6
3.3.2. The ’direction’ Attributes ..........................6
3.3.3. The ’q’ Attribute ...................................6
3.3.4. The ’media-type’ Attribute ..........................7
3.3.5. The ’label’ Attribute ...............................7
3.3.6. The ’enabled’ Attribute .............................7
4. Session Info Documents ..........................................7
4.1. Mapping between SDP and Session Info Documents .............8
4.2. The <session-info> Element ................................10
4.3. The <streams> Element .....................................10
4.3.1. The <stream> Element ...............................10
4.4. The <media-intermediaries> Element ........................11
4.4.1. The <fixed-intermediary> Element ...................12
4.4.2. The <turn-intermediary> Element ....................13
4.4.3. The <msrp-intermediary> Element ....................13
5. Session Policy Documents .......................................14
5.1. Merging Session Policies ..................................14
5.1.1. Single Value Selection .............................14
5.1.2. Merging Sets .......................................15
5.1.3. Local Policy Server Selection ......................16
5.2. The <session-policy> Element ..............................16
5.3. The <media-types-allowed> Element .........................16
5.4. The <media-types-excluded> Element ........................17
5.5. The <codecs-allowed> Element ..............................17
5.6. The <codecs-excluded> Element .............................18
1. Introduction
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].
urn:ietf:params:xml:ns:mediadataset
The media type for the Media Policy Data Set Format is:
application/media-policy-dataset+xml
3.2. Extensibility
3.3. Attributes
The value of the ’q’ attribute is a decimal number within the range
of 0 to 1, inclusive, with two or fewer decimal places. An element
with a higher ’q’ value is preferred over one with a lower ’q’ value.
o no: specifies that the user agent MUST NOT establish the media
stream.
Session info documents use the <session-info> root element. They use
elements described in this section and common elements described in
Section 6.
<session-info></session-info>
pair, the UA MUST insert a <codec> element for each of the codecs
that were agreed upon for the particular stream in the offer/answer
exchange. The <codec> elements MUST have ’q’ attributes with values
that decrease with the order the codecs are given in the "m=" line.
(Other than the ordering restriction, the particular values used are
not specified by this document.)
For any particular "m=" line, the codecs MUST be listed in decreasing
order of the values of the ’q’ attributes of the corresponding
<codec> elements.
This element MAY have the direction, label, and enabled attributes
(see Section 3.3).
This element MAY have the ’direction’ attribute (see Section 3.3).
The <msrp-uri> element contains a URI that indicates the MSRP server
to use for an intermediary. The UA uses this URI to authenticate
with the MSRP relay, and then uses the URI it learns through that
authentication process for any MSRP media it sends or receives. The
URIs in the <msrp-uri> element MUST have a scheme of "msrps:".
The following example illustrates the merging process for two data
sets. In this example, the UA supports the following set of audio
codecs: PCMA, PCMU, and G729. After applying session policy document
1, the UA removes PCMA as it is disallowed by this policy. The
remaining set of codecs is PCMU and G729. Session policy document 2
disallows all codecs that are not listed. After applying this
policy, the set of codecs allowed is G729.
The combined set of media types/codecs MUST again be valid and well-
formed according to the schema definitions. A conflict occurs if the
combined property set is not a well-formed document after the merging
process is completed.
Some properties require that only values from the local policy server
are used. The local policy server is the policy server that is in
the local domain of the user agent.
Domains often require that a user agent only uses ports in a certain
range for media streams. The <local-ports> element defines a policy
for the ports a user agent can use for media. The value of this
element consists of the decimal representation of a start port number
and an end port number, separated by a hyphen ("-"). The start/end
port numbers are the first/last port numbers that can be used, that
is, the range is inclusive. The start/end port numbers must be in
the range 1 to 65535 (inclusive).
This element MAY have the ’visibility’ attribute (see Section 3.3).
This section describes common XML elements that are used in session
info and session policy documents to encode the media properties of
SIP sessions.
This element MAY have the ’q’ attribute (see Section 3.3).
The <codec> element MAY have the ’q’ attribute (see Section 3.3).
The <context> element MAY contain multiple <contact> elements and one
<info> element. It can also contain optional <policy-server-URI> and
<token> elements.
o outbound proxy
o SIP methods
o body disposition
o body format
o body encryption
7. Examples
<session-policy xmlns="urn:ietf:params:xml:ns:mediadataset">
<context>
<policy-server-URI>sips:policy@biloxi.example.com</policy-server-URI>
<contact>sip:policy_manager@example.com</contact>
<info>Access network policies</info>
</context>
<media-types-allowed>
<media-type>audio</media-type>
<media-type>video</media-type>
</media-types-allowed>
<codecs-excluded>
<codec>
<media-type-subtype>audio/G729</media-type-subtype>
</codec>
<codec>
<media-type-subtype>audio/G723</media-type-subtype>
</codec>
</codecs-excluded>
</session-policy>
7.2.1. Example 1
v=0
o=alice 2890844526 2890844526 IN IP4 host.somewhere.example
s=
c=IN IP4 host.somewhere.example
t=0 0
m=audio 49562 RTP/AVP 0 1 3
a=rtpmap:0 PCMU/8000
a=rtpmap:1 1016/8000
a=rtpmap:3 GSM/8000
m=video 51234 RTP/AVP 31 34
a=rtpmap:31 H261/90000
a=rtpmap:34 H263/90000
MPDF document:
<session-info xmlns="urn:ietf:params:xml:ns:mediadataset">
<context>
<contact>sip:alice@somewhere.example</contact>
<info>session information</info>
</context>
<streams>
<stream>
<media-type>audio</media-type>
<codec q="1.0">
<media-type-subtype>audio/PCMU</media-type-subtype>
</codec>
<codec q="0.9">
<media-type-subtype>audio/1016</media-type-subtype>
</codec>
<codec q="0.8">
<media-type-subtype>audio/GSM</media-type-subtype>
</codec>
<local-host-port>host.somewhere.example:49562</local-host-port>
</stream>
<stream>
<media-type>video</media-type>
<codec q="1.0">
<media-type-subtype>video/H261</media-type-subtype>
</codec>
<codec q="0.9">
<media-type-subtype>video/H263</media-type-subtype>
</codec>
<local-host-port>host.somewhere.example:51234</local-host-port>
</stream>
</streams>
</session-info>
7.2.2. Example 2
v=0
o=alice 2890844526 2890844526 IN IP4 host.somewhere.example
s=
c=IN IP4 host.somewhere.example
t=0 0
m=audio 49562 RTP/AVP 0 1 3
a=rtpmap:0 PCMU/8000
a=rtpmap:1 1016/8000
a=rtpmap:3 GSM/8000
m=video 51234 RTP/AVP 31 34
a=rtpmap:31 H261/90000
a=rtpmap:34 H263/90000
v=0
o=bob 2890844730 2890844730 IN IP4 host.anywhere.example
s=
c=IN IP4 host.anywhere.example
t=0 0
m=audio 52124 RTP/AVP 0 3
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
m=video 50286 RTP/AVP 31
a=rtpmap:31 H261/90000
MPDF document that represents the local and the remote session
description:
<session-info xmlns="urn:ietf:params:xml:ns:mediadataset">
<context>
<contact>sip:alice@somewhere.example</contact>
<info>session information</info>
</context>
<streams>
<stream>
<media-type>audio</media-type>
<codec q="1.0">
<media-type-subtype>audio/PCMU</media-type-subtype>
</codec>
<codec q="0.9">
<media-type-subtype>audio/GSM</media-type-subtype>
</codec>
<local-host-port>host.somewhere.example:49562</local-host-port>
<remote-host-port>host.anywhere.example:52124</remote-host-port>
</stream>
<stream>
<media-type>video</media-type>
<codec q="1.0">
<media-type-subtype>video/H261</media-type-subtype>
</codec>
<local-host-port>host.somewhere.example:51234</local-host-port>
<remote-host-port>host.anywhere.example:50286</remote-host-port>
</stream>
</streams>
</session-info>
<session-info xmlns="urn:ietf:params:xml:ns:mediadataset">
<context>
<contact>sip:alice@somewhere.example</contact>
<info>modified session information</info>
</context>
<streams>
<stream label=’1’>
<media-type>audio</media-type>
<codec q="1.0">
<media-type-subtype>audio/PCMU</media-type-subtype>
</codec>
<codec q="0.9">
<media-type-subtype>audio/GSM</media-type-subtype>
</codec>
<local-host-port>host.somewhere.example:49562</local-host-port>
<remote-host-port>host.anywhere.example:52124</remote-host-port>
</stream>
<stream label=’2’>
<media-type>video</media-type>
<codec q="1.0">
<media-type-subtype>video/H261</media-type-subtype>
</codec>
<local-host-port>host.somewhere.example:51234</local-host-port>
<remote-host-port>host.anywhere.example:50286</remote-host-port>
</stream>
</streams>
<max-stream-bw label=’2’>128</max-stream-bw>
<max-session-bw>192</max-session-bw>
</session-info>
8. RELAX NG Definition
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
ns="urn:ietf:params:xml:ns:mediadataset"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<choice>
<element name="session-info">
<interleave>
<optional>
<ref name="ElementStreams"/>
</optional>
<zeroOrMore>
<ref name="ElementMaxBandwidth"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMaxSessionBandwidth"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMaxStreamBandwidth"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMediaIntermediaries"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementQoSDSCP"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementAny"/>
</zeroOrMore>
</interleave>
</element>
<element name="session-policy">
<interleave>
<optional>
<ref name="ElementContext"/>
</optional>
<optional>
<ref name="ElementLocalPorts"/>
</optional>
<zeroOrMore>
<ref name="ElementMediaTypesAllowed"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMediaTypesExcluded"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementCodecsAllowed"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementCodecsExcluded"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMaxBandwidth"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMaxSessionBandwidth"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementMaxStreamBandwidth"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementQoSDSCP"/>
</zeroOrMore>
<zeroOrMore>
<ref name="ElementAny"/>
</zeroOrMore>
</interleave>
</element>
</choice>
</start>
<define name="ElementMediaTypesAllowed">
<element name="media-types-allowed">
<ref name="PolicyGeneralAttributes"/>
<zeroOrMore>
<ref name="ElementMediaType"/>
</zeroOrMore>
</element>
</define>
<define name="ElementMediaTypesExcluded">
<element name="media-types-excluded">
<ref name="PolicyGeneralAttributes"/>
<zeroOrMore>
<ref name="ElementMediaType"/>
</zeroOrMore>
</element>
</define>
<define name="ElementMediaType">
<element name="media-type">
<data type="string" />
<optional>
<ref name="AttributeQ"/>
</optional>
<optional>
<ref name="AttributeGeneric"/>
</optional>
</element>
</define>
<define name="ElementCodecsAllowed">
<element name="codecs-allowed">
<ref name="PolicyGeneralAttributes"/>
<zeroOrMore>
<ref name="ElementCodec"/>
</zeroOrMore>
</element>
</define>
<define name="ElementCodecsExcluded">
<element name="codecs-excluded">
<ref name="PolicyGeneralAttributes"/>
<zeroOrMore>
<ref name="ElementCodec"/>
</zeroOrMore>
</element>
</define>
<define name="ElementCodec">
<element name="codec">
<optional>
<ref name="AttributeQ"/>
</optional>
<optional>
<ref name="AttributeGeneric"/>
</optional>
<element name="media-type-subtype">
<data type="string" />
</element>
<zeroOrMore>
<element name="mime-parameter">
<data type="string" />
</element>
</zeroOrMore>
</element>
</define>
<define name="ElementStreams">
<element name="streams">
<optional>
<ref name="AttributeGeneric"/>
</optional>
<zeroOrMore>
<ref name="ElementStream"/>
</zeroOrMore>
</element>
</define>
<define name="ElementStream">
<element name="stream">
<optional>
<ref name="AttributeDirection"/>
</optional>
<optional>
<ref name="AttributeLabel"/>
</optional>
<optional>
<ref name="AttributeEnabled"/>
</optional>
<optional>
<ref name="AttributeGeneric"/>
</optional>
<ref name="ElementMediaType"/>
<oneOrMore>
<ref name="ElementCodec"/>
</oneOrMore>
<element name="local-host-port">
<data type="string" />
</element>
<optional>
<element name="remote-host-port">
<data type="string" />
</element>
</optional>
</element>
</define>
<define name="ElementMaxBandwidth">
<element name="max-bw">
<data type="integer" />
<ref name="PolicyGeneralAttributes"/>
</element>
</define>
<define name="ElementMaxSessionBandwidth">
<element name="max-session-bw">
<data type="integer" />
<ref name="PolicyGeneralAttributes"/>
</element>
</define>
<define name="ElementMaxStreamBandwidth">
<element name="max-stream-bw">
<data type="integer" />
<ref name="PolicyGeneralAttributes"/>
<optional>
<ref name="AttributeMediaType"/>
</optional>
<optional>
<ref name="AttributeLabel"/>
</optional>
</element>
</define>
<define name="ElementMediaIntermediaries">
<element name="media-intermediaries">
<ref name="PolicyGeneralAttributes"/>
<oneOrMore>
<choice>
<element name="fixed-intermediary">
<element name="int-host-port">
<data type="string" />
</element>
<zeroOrMore>
<element name="int-addl-port">
<data type="integer" />
</element>
</zeroOrMore>
</element>
<element name="turn-intermediary">
<element name="int-host-port">
<data type="string" />
</element>
<zeroOrMore>
<element name="int-addl-port">
<data type="integer" />
</element>
</zeroOrMore>
<zeroOrMore>
<element name="shared-secret">
<data type="string" />
</element>
</zeroOrMore>
</element>
</choice>
</oneOrMore>
</element>
</define>
<define name="ElementQoSDSCP">
<element name="qos-dscp">
<data type="integer" />
<ref name="PolicyGeneralAttributes"/>
<optional>
<ref name="AttributeMediaType"/>
</optional>
</element>
</define>
<define name="ElementLocalPorts">
<element name="local-ports">
<data type="string" />
<interleave>
<optional>
<ref name="AttributeVisibility"/>
</optional>
<optional>
<ref name="AttributeGeneric"/>
</optional>
</interleave>
</element>
</define>
<define name="ElementContext">
<element name="context">
<interleave>
<optional>
<element name="info">
<data type="string" />
</element>
</optional>
<optional>
<element name="policy-server-URI">
<data type="string" />
</element>
</optional>
<optional>
<element name="token">
<data type="token" />
</element>
</optional>
<optional>
<element name="request-URI">
<data type="string" />
</element>
</optional>
<zeroOrMore>
<element name="contact">
<data type="string" />
</element>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="PolicyGeneralAttributes">
<optional>
<ref name="AttributeVisibility"/>
</optional>
<optional>
<ref name="AttributeDirection"/>
</optional>
<optional>
<ref name="AttributeGeneric"/>
</optional>
</define>
<define name="AttributeVisibility">
<attribute name="visibility">
<choice>
<value>hidden</value>
<value>visible</value>
</choice>
</attribute>
</define>
<define name="AttributeDirection">
<attribute name="direction">
<choice>
<value>sendonly</value>
<value>recvonly</value>
<value>sendrecv</value>
</choice>
</attribute>
</define>
<define name="AttributeQ">
<attribute name="q">
<data type="decimal" />
</attribute>
</define>
<define name="AttributeMediaType">
<attribute name="media-type">
<data type="string" />
</attribute>
</define>
<define name="AttributeLabel">
<attribute name="label">
<data type="string" />
</attribute>
</define>
<define name="AttributeEnabled">
<attribute name="enabled">
<data type="boolean" />
</attribute>
</define>
<define name="AttributeGeneric">
<zeroOrMore>
<attribute>
<anyName>
<except>
<name ns="">visibility</name>
<name ns="">direction</name>
<name ns="">q</name>
<name ns="">media-type</name>
<name ns="">label</name>
<name ns="">enabled</name>
</except>
</anyName>
</attribute>
</zeroOrMore>
</define>
<define name="ElementAny">
<element>
<anyName>
<except>
<name>context</name>
<name>streams</name>
<name>max-bw</name>
<name>max-session-bw</name>
<name>max-stream-bw</name>
<name>media-intermediaries</name>
<name>qos-dscp</name>
<name>local-ports</name>
<name>media-types-allowed</name>
<name>media-types-excluded</name>
<name>media-type</name>
<name>codecs-allowed</name>
<name>codecs-excluded</name>
</except>
</anyName>
<ref name="anyExtension"/>
</element>
</define>
<define name="anyExtension">
<zeroOrMore>
<choice>
<element>
<anyName/>
<ref name="anyExtension"/>
</element>
<attribute>
<anyName/>
</attribute>
<text/>
</choice>
</zeroOrMore>
</define>
</grammar>
9. Security Considerations
Applications that use this media type: This document type is used to
convey session description and media policy information between SIP
user agents and a domain.
Additional Information:
URI: urn:ietf:params:xml:schema:mediadataset
XML:
BEGIN
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type"
content="text/html;charset=iso-8859-1"/>
<title>Media Policy Data Set Namespace</title>
</head>
<body>
<h1>Namespace for Media Policy Data Sets</h1>
<h2>urn:ietf:params:xml:ns:mediadataset</h2>
<p>See <a href="http://www.rfc-editor.org/rfc/rfc6796.txt">
RFC 6796</a>.</p>
</body>
</html>
END
11. References
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
Types", RFC 3023, January 2001.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004.
[W3C.REC-xml-20081126]
Sperberg-McQueen, C., Yergeau, F., Maler, E., Bray, T.,
and J. Paoli, "Extensible Markup Language (XML) 1.0 (Fifth
Edition)", World Wide Web Consortium Recommendation REC-
xml-20081126, November 2008,
<http://www.w3.org/TR/2008/REC-xml-20081126>.
[W3C.REC-xml-names-19990114]
Hollander, D., Bray, T., and A. Layman, "Namespaces in
XML", World Wide Web Consortium First Edition REC-xml-
names-19990114, January 1999,
<http://www.w3.org/TR/1999/REC-xml-names-19990114>.
[RFC2648] Moats, R., "A URN Namespace for IETF Documents", RFC 2648,
August 1999.
[RFC4629] Ott, H., Bormann, C., Sullivan, G., Wenger, S., and R.
Even, "RTP Payload Format for ITU-T Rec", RFC 4629,
January 2007.
Appendix A. Acknowledgements
Many thanks to Allison Mankin, Dan Petrie, Martin Dolly, Adam Roach,
and Ben Campbell for the discussions and suggestions. Many thanks to
Roni Even, Mary Barnes, Yaron Sheffer, Pete McCann, and Henry S.
Thompson for reviewing the document and to Jari Urpalainen for
helping with the RELAX NG schema.
Authors’ Addresses
Volker Hilt
Bell Labs/Alcatel-Lucent
Lorenzstrasse 10
70435 Stuttgart
Germany
EMail: volker.hilt@bell-labs.com
Gonzalo Camarillo
Ericsson
Hirsalantie 11
Jorvas 02420
Finland
EMail: Gonzalo.Camarillo@ericsson.com
Jonathan Rosenberg
jdrosen.net
Monmouth, NJ
USA
EMail: jdrosen@jdrosen.net
Dale R. Worley
Ariadne Internet Services, Inc.
738 Main St.
Waltham, MA 02451
US
EMail: worley@ariadne.com