One document matched: draft-ietf-payload-rtp-klv-03.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!-- Based on template draft-davies-template-bare.xml -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
There has to be one entity for each item to be referenced.
An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2326 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2326.xml">
<!ENTITY RFC2974 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2974.xml">
<!ENTITY RFC3264 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3264.xml">
<!ENTITY RFC3550 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY RFC3551 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3551.xml">
<!ENTITY RFC3711 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3711.xml">
<!ENTITY RFC4288 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4288.xml">
<!ENTITY RFC4301 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY RFC4855 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4855.xml">
<!ENTITY RFC5246 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5246.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most
I-Ds might want to use. (Here they are set differently than their
defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-ietf-payload-rtp-klv-03" ipr="trust200902">
<front>
<title abbrev="RTP Format for SMPTE 336M Data">RTP Payload Format for SMPTE 336M Encoded Data</title>
<!-- add 'role="editor"' below for the editors if appropriate -->
<!-- Another author who claims to be an editor -->
<author fullname="J. Downs" initials="J.D." role="editor"
surname="Downs">
<organization>PAR Government Systems Corp.</organization>
<address>
<postal>
<street></street>
<city></city>
<region></region>
<code></code>
<country>US</country>
</postal>
<phone></phone>
<email>jeff_downs@partech.com</email>
</address>
</author>
<author fullname="J. Arbeiter" initials="J.A." role="editor"
surname="Arbeiter">
<organization></organization>
<address>
<postal>
<street></street>
<city></city>
<region></region>
<code></code>
<country>US</country>
</postal>
<phone></phone>
<email>jimsgti@gmail.com</email>
</address>
</author>
<date year="2012" />
<!-- If the month and year are both specified and are the current ones,
xml2rfc will fill in the current day for you. If only the current
year is specified, xml2rfc will fill in the current day and month
for you. If the year is not the current one, it is necessary to
specify at least a month (xml2rfc assumes day="1" if not specified
for the purpose of calculating the expiry date). With drafts it is
normally sufficient to specify just the year. -->
<!-- Meta-data Declarations -->
<area>Real-time Applications and Infrastructure</area>
<workgroup>Payload Working Group</workgroup>
<!-- WG name at the upperleft corner of the doc,
IETF is fine for individual submissions.
If this element is not present, the default is "Network Working Group",
which is used by the RFC Editor as a nod to the history of the IETF. -->
<keyword>RTP</keyword>
<keyword>KLV</keyword>
<keyword>SMPTE</keyword>
<keyword>336M</keyword>
<!-- Keywords will be incorporated into HTML output
files in a meta tag but they have no effect on text or nroff
output. If you submit your draft to the RFC Editor, the
keywords will be used for the search engine. -->
<abstract>
<t>
This document specifies the payload format for packetization
of KLV (Key-Length-Value) Encoded Data, as defined by the Society of
Motion Picture and Television Engineers (SMPTE) in SMPTE 336M, into
the Real-time Transport Protocol (RTP).
</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>
This document specifies the payload format for packetization
of KLV (Key-Length-Value) Encoded Data, as defined by the Society of
Motion Picture and Television Engineers (SMPTE) in
<xref target="SMPTE336M"/>, into the Real-time Transport
Protocol (RTP) <xref target="RFC3550"/>.
</t>
<t>
The payload format is defined in such a way that arbitrary KLV
data can be carried. No restrictions are placed on which KLV
data keys can be used.
</t>
<t>
A brief description of SMPTE 336M, KLV Encoded Data, is given.
The payload format itself, including use of the RTP header fields, is
specified in <xref target="payloadfmt"/>. The media type and IANA
considerations are also described. This document concludes with
security considerations relevant to this payload format.
</t>
</section>
<section title="Conventions, Definitions and Acronyms">
<t>
The term "KLV item" is used in this document to refer to one single
universal key, length, and value triplet, or one single SMPTE
Universal Label, encoded as described in <xref target="SMPTE336M"/>.
</t>
<t>
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 <xref
target="RFC2119"/>.
</t>
</section>
<section title="Media Format Background">
<t>
<xref target="SMPTE336M"/>, Data Encoding Protocol Using
Key-Length-Value, defines a byte-level data encoding protocol for
representing data items and data groups. This encoding protocol
definition is independent of the application or transportation
method used.
</t>
<t>
SMPTE 336M data encoding can be applied to a wide variety of binary
data. This encoding has been used to provide diverse and rich
metadata sets that describe or enhance associated video
presentations. Use of SMPTE 336M encoded metadata in conjunction
with video has enabled improvements in multimedia presentations,
content management and distribution, archival and retrieval, and
production workflow.
</t>
<t>
The SMPTE 336M standard defines a Key-Length-Value (KLV) triplet as
a data interchange protocol for data items or data groups where the
Key identifies the data, the Length specifies the length of the data
and the Value is the data itself. The KLV protocol provides a
common interchange point for all compliant applications irrespective
of the method of implementation or transport.
</t>
<t>
The standard also provides methods for combining associated KLV
triplets in data sets where the set of KLV triplets is itself coded
with KLV data coding protocol. Such sets can be coded in either
full form (Universal Sets) or in one of four increasingly
bit-efficient forms (Global Sets, Local Sets, Variable Length Packs
and Defined Length Packs). The standard provides a definition of
each of these data constructs.
</t>
<t>
The standard also describes implications of KLV coding including the
use of a SMPTE Universal Label (UL) as a value within a KLV coding
triplet or whose meaning is entirely conveyed by the SMPTE UL
itself. The two kinds of usage for such standalone SMPTE ULs
are a) as a value in a KLV construct and b) as a Key that
has no Length and no Value.
</t>
<t>
The standard also defines the use of KLV coding to provide a means
to carry information that is registered with a non-SMPTE external
agency.
</t>
<t>
The encoding byte range (length of the payload) can accommodate
unusually large volumes of data. Consequently, a specific
application of KLV encoding might require only a limited operating
data range and those details shall be defined in a relevant
application document.
</t>
</section>
<section title="Payload Format" anchor="payloadfmt">
<t>
The main goal of the payload format design for SMPTE 336M data is to
provide carriage of SMPTE 336M data over RTP in a simple, yet robust
manner. All forms of SMPTE 336M data can be carried by the payload
format. The payload format maintains simplicity by using only the
standard RTP headers and not defining any payload headers.
</t>
<t>
SMPTE 336M KLV data is broken into KLVunits. A KLVunit is simply a
logical grouping of otherwise unframed KLV data, grouped based on
source data timing (see <xref target="klvunit"/>). Each KLVunit is
then placed into one or more RTP packet payloads. The RTP header
marker bit is used to assist receivers in locating the boundaries of
KLVunits.
</t>
<section title="RTP Header Usage" anchor="rtpheader">
<t>
This payload format uses the RTP packet header fields as
described in the table below:
</t>
<texttable>
<ttcol align="left">Field</ttcol>
<ttcol align="left">Usage</ttcol>
<c>
Timestamp
</c>
<c>
The RTP Timestamp encodes the instant along a presentation
timeline that the entire KLVunit encoded in the packet payload
is to be presented. When one KLVunit is placed in multiple
RTP packets, the RTP timestamp of all packets comprising that
KLVunit MUST be the same.
The timestamp clock frequency SHALL be
defined as a parameter to the <xref target="payloadformat">
payload format</xref>.
</c>
<c>
M-bit
</c>
<c>
The RTP header marker bit (M) SHALL be set to '1' for any
RTP packet which contains the final byte of a KLVunit.
For all other packets, the RTP header marker bit SHALL be set
to '0'. This allows receivers to pass a KLVunit for
parsing/decoding immediately upon receipt of the last RTP packet
comprising the KLVunit. Without this, a receiver would need
to wait for the next RTP packet with a
different timestamp to arrive, thus signaling the end of one
KLVunit and the start of another.
</c>
</texttable>
<t>
The remaining RTP header fields are used as specified in
<xref target="RFC3550"/>.
</t>
</section>
<section title="Payload Data">
<section anchor="klvunit" title="The KLVunit">
<t>
A KLVunit is a logical collection of all KLV items that are to be
presented at a specific time. A KLVunit is comprised of one or
more KLV items. Compound items (sets, packs) are allowed as per
<xref target="SMPTE336M"/>, but the contents of a compound item
MUST NOT be split across two KLVunits. Multiple KLV items in a
KLVunit occur one after another with no padding or stuffing
between items.
</t>
</section>
<section anchor="klvunit_mapping"
title="KLVunit Mapping to RTP Packet Payload">
<t>
An RTP packet payload SHALL contain one, and only one, KLVunit
or a fragment thereof. KLVunits small enough to fit into a single
RTP packet (RTP packet size is up to implementation but should
consider underlying transport/network factors such as MTU
limitations) are placed directly into the payload of the RTP
packet, with the first byte of the KLVunit (which is the first
byte of a KLV universal key) being the first byte of the RTP
packet payload.
</t>
<t>
KLVunits too large to fit into a single RTP packet payload MAY
span multiple RTP packet payloads. When this is done, the
KLVunit data MUST be sent in sequential byte order, such that
when all RTP packets comprising the KLVunit are arranged in
sequence number order, concatenating the payload data together
exactly reproduces the original KLVunit.
</t>
<t>
Additionally, when a KLVunit is fragmented across multiple RTP
packets, all RTP packets transporting the fragments a KLVunit
MUST have the same timestamp.
</t>
<t>
KLVunits are bounded with changes in RTP packet timestamps. The
marker (M) bit in the RTP packet headers marks the last RTP
packet comprising a KLVunit (see <xref target="rtpheader"/>). A
receiver MUST consider a KLVunit to be completed when it
receives either a packet with M=1 or a packet with a new
timestamp. In the former case, the packet payload is included
in the completed KLVunit; in the latter case, it is not.
</t>
</section>
</section>
<section title="Implementation Considerations">
<section anchor="loss_of_data" title="Loss of Data">
<t>
RTP is generally deployed in network environments where packet
loss might occur. RTP header fields enable detection of lost
packets, as described in <xref target="RFC3550"/>. When
transmitting payload data described by this payload format,
packet loss can cause the loss of whole KLVunits or portions
thereof.
</t>
<section title="Damaged KLVunits">
<t>
A damaged KLVunit is any KLVunit that was carried in one or
more RTP packets that have been lost. When a lost packet is
detected (through use of the sequence number header field),
the receiver:
<list style="symbols">
<t>
MUST consider any KLVunit presently being received as
damaged. The damaged KLVunit includes all packets prior
to the lost one (in sequence number order) back to, but not
including, the most recent packet in which the M
bit in the RTP header was set to '1'.
</t>
<t>
MUST consider all subsequent packets (in sequence number
order) up to and including the next one with the M-bit in the
RTP header set to '1' as part of a damaged KLVunit.
</t>
</list>
</t>
<t>
The example below illustrates how a receiver would handle a
lost packet in one possible packet sequence:
<figure>
<artwork>
<![CDATA[
+---------+-------------+ +--------------+
| RTP Hdr | Data | | |
+---------+-------------+ +--------------+
.... | ts = 30 | KLV KLV ... | | | >---+
| M = 1 | | | | |
| seq = 5 | ... KLV KLV | | | |
+---------+-------------+ +--------------+ |
Last RTP pkt for time 30 Lost RTP Pkt |
(seq = 6) |
|
+--------------------------------------------------------+
|
| +---------+-------------+ +---------+-------------+
| | RTP Hdr | Data | | RTP Hdr | Data |
| +---------+-------------+ +---------+-------------+
+--> | ts = 45 | KLV KLV ... | | ts = 45 | ... KLV ... | >---+
| M = 0 | | | M = 1 | | |
| seq = 7 | ... KLV ... | | seq = 8 | ... KLV KLV | |
+---------+-------------+ +---------+-------------+ |
RTP pkt for time 45 Last RTP pkt for time 45 |
KLVunit carried in these two packets is "damaged" |
|
+----------------------------------------------------------------+
|
| +---------+-------------+
| | RTP Hdr | Data |
| +---------+-------------+
+--> | ts = 55 | KLV KLV ... | ....
| M = 1 | |
| seq = 9 | ... KLV ... |
+---------+-------------+
Last and only RTP pkt
for time 55
]]>
</artwork>
</figure>
In this example, the packets with sequence numbers 7 and 8
contain portions of a KLVunit with timestamp of 45. This
KLVunit is considered "damaged" due to the missing RTP packet
with sequence number 6, which might have been part of this
KLVunit. The KLVunit for timestamp 30 (ended in packet with
sequence number 5) is unaffected by the missing packet. The
KLVunit for timestamp 55, carried in the packet with sequence
number 9, is also unaffected by the missing packet and is
considered complete and intact.
</t>
</section>
<section title="Treatment of Damaged KLVunits">
<t>
SMPTE 336M KLV data streams are built in such a way that it is
possible to partially recover from errors or missing data in a
stream. Exact specifics of how damaged KLVunits are handled
are left to each implementation, as different implementations
can have differing capabilities and robustness in their
downstream KLV payload processing. Because some
implementations can be particularly limited in their capacity
to handle damaged KLVunits, receivers MAY drop damaged
KLVunits entirely.
</t>
</section>
</section>
</section>
</section>
<section title="Congestion Control">
<t>
The general congestion control considerations for transporting RTP
data apply; see RTP <xref target="RFC3550"/> and any applicable
RTP profile like AVP <xref target="RFC3551"/>.
</t>
<t>
Further, SMPTE 336M data can be encoded in different schemes which
reduce the overhead associated with individual data items within the
overall stream. SMPTE 336M grouping constructs, such as local sets
and data packs, provide a mechanism to reduce bandwidth requirements.
</t>
</section>
<section title="Payload Format Parameters" anchor="payloadformat">
<t>
This RTP payload format is identified using the
application/smpte336m media type which is registered in accordance
with <xref target="RFC4855"/> and using the template of
<xref target="RFC4288"/>.
</t>
<section title="Media Type Definition" anchor="mediatype">
<t>
<list style="empty">
<t>Type name: application</t>
<t>Subtype name: smpte336m</t>
<t>Required parameters:
<list style="empty">
<t>
rate: RTP timestamp clock rate. Typically chosen based
on sampling rate of metadata being transmitted, but
other rates can be specified.
</t>
</list>
</t>
<t>Optional parameters: None</t>
<t>
Encoding considerations: This media type is framed and
binary; see Section 4.8 of <xref target="RFC4288"/>.
</t>
<t>
Security considerations: See <xref target="security"/>
of RFC&rfc.number; (note to RFC editor: please replace XXXX
with the number assigned to this RFC).
</t>
<t>
Interoperability considerations: Data items in smpte336m
can be very diverse. Receivers might only be capable of
interpreting a subset of the possible data items; unrecognized
items are skipped. Agreement on data items to be used out of
band, via application profile or similar, is typical.
</t>
<t>Published specification: RFC&rfc.number;</t>
<t>
Applications that use this media type: Streaming of metadata
associated with simultaneously streamed video and transmission
of <xref target="SMPTE336M"/> based media formats (e.g. MXF <xref
target="SMPTE377M"/>).
</t>
<t>Additional Information: none</t>
<t>
Person & email address to contact
for further information: J. Downs
<jeff_downs@partech.com>; IETF Payload Working Group
<payload@ietf.org></t>
<t>Intended usage: COMMON</t>
<t>
Restrictions on usage: This media type depends on RTP framing,
and hence is only defined for transfer via RTP
(<xref target="RFC3550"/>). Transport within other framing
protocols is not defined at this time.
</t>
<t>
Author:
<list style="empty">
<t>J. Downs <jeff_downs@partech.com></t>
<t>J. Arbeiter <jimsgti@gmail.com></t>
</list>
</t>
<t>
Change controller: IETF Payload working
group delegated from the IESG.
</t>
</list>
</t>
</section>
<section title="Mapping to SDP">
<t>
The mapping of the above defined payload format media type and its
parameters SHALL be done according to Section 3 of
<xref target="RFC4855"/>.
</t>
<section title="Offer/Answer Model and Declarative Considerations">
<t>
This payload format has no configuration or optional format
parameters. Thus, when offering SMPTE 336M Encoded Data over
RTP using SDP in an Offer/Answer model <xref target="RFC3264"/>
or in a declarative manner (e.g., SDP in the Real-time Streaming
Protocol (RTSP) <xref target="RFC2326"/> or the Session
Announcement Protocol (SAP) <xref target="RFC2974"/>), there are
no specific considerations.
</t>
</section>
</section>
</section>
<section title="IANA Considerations">
<t>
This memo requests that IANA registers application/smpte336m as
specified in <xref target="mediatype"/>.
The media type is also requested to be added to
the IANA registry for "RTP Payload Format MIME types"
(http://www.iana.org/assignments/rtp-parameters).
</t>
</section>
<section title="Security Considerations" anchor="security">
<t>
RTP packets using the payload format defined in this specification
are subject to the security considerations discussed in the RTP
specification <xref target="RFC3550"/>, and in any applicable RTP
profile. The main security considerations for the RTP packet
carrying the RTP payload format defined within this memo are
confidentiality, integrity and source authenticity. Confidentiality
is achieved by encryption of the RTP payload. Integrity of the RTP
packets through suitable cryptographic integrity protection
mechanism. Cryptographic system may also allow the authentication
of the source of the payload. A suitable security mechanism for
this RTP payload format should provide confidentiality, integrity
protection and at least source authentication capable of determining
if an RTP packet is from a member of the RTP session or not.
</t>
<t>
Note that the appropriate mechanism to provide security to RTP and
payloads following this memo may vary. It is dependent on the
application, the transport, and the signalling protocol employed.
Therefore a single mechanism is not sufficient, although if suitable
the usage of SRTP <xref target="RFC3711"/> is recommended.
Other mechanism that may be used are IPsec <xref target="RFC4301"/>
and TLS <xref target="RFC5246"/> (RTP over TCP), but
also other alternatives may exist.
</t>
<t>
This RTP payload format presents the possibility for significant
non-uniformity in the receiver-side computational complexity during
processing of SMPTE 336M payload data. Because the length of
SMPTE 336M encoded data items is essentially unbounded, receivers
must take care when allocating resources used in processing.
It is trivial to construct pathological data that would cause
a naive decoder to allocate large amounts of resources, resulting
in denial-of-service threats. Receivers SHOULD place
limits on resource allocation that are within the bounds set forth
by any application profile in use.
</t>
<t>
This RTP payload format does not contain any inheritly active
content. However, individual SMPTE 336M KLV items could be defined
to convey active content in a particular application. Therefore,
receivers capable of decoding and interpreting such data items
should use appropriate caution and security practices. In
particular, accepting active content from streams that lack
authenticity or integrity proteciton mechanisms places a receiver at
risk to attacks using spoofed packets. Receivers not capable of
decoding such data items are not at risk; unknown data items are
skipped over and discarded according to SMPTE 336M processing rules.
</t>
</section>
</middle>
<!-- *****BACK MATTER ***** -->
<back>
<!-- References split into informative and normative -->
<!-- There are 2 ways to insert reference entries from the citation libraries:
1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")
Both are cited textually in the same manner: by using xref elements.
If you use the PI option, xml2rfc will, by default, try to find included files in the same
directory as the including file. You can also define the XML_LIBRARY environment variable
with a value containing a set of directories to search. These can be either in the local
filing system or remote ones accessed by http (http://domain/dir/... ).-->
<references title="Normative References">
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
<reference anchor="SMPTE336M"
target="http://www.smpte.org">
<front>
<title>SMPTE336M-2007: Data Encoding Protocol Using Key-Length-Value</title>
<author>
<organization>Society of Motion Picture and Television Engineers
</organization>
</author>
<date year="2007" />
</front>
</reference>
&RFC2119;
&RFC3550;
&RFC3551;
&RFC4288;
&RFC4855;
</references>
<references title="Informative References">
<reference anchor="SMPTE377M"
target="http://www.smpte.org">
<front>
<title>SMPTE377M-2004: Material Exchange Format (MXF) File Format
Specification</title>
<author>
<organization>Society of Motion Picture and Television Engineers
</organization>
</author>
<date year="2004" />
</front>
</reference>
&RFC2326;
&RFC2974;
&RFC3264;
&RFC3711;
&RFC4301;
&RFC5246;
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 01:19:58 |