rfc9223xml2.original.xml | rfc9223.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!DOCTYPE rfc [ | |||
C.2119.xml"> | <!ENTITY nbsp " "> | |||
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY zwsp "​"> | |||
C.8174.xml"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY RFC5651 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY wj "⁠"> | |||
C.5651.xml"> | ||||
<!ENTITY RFC5775 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5775.xml"> | ||||
<!ENTITY RFC6726 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6726.xml"> | ||||
<!ENTITY RFC6330 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6330.xml"> | ||||
<!ENTITY RFC3986 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.3986.xml"> | ||||
<!ENTITY RFC1952 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.1952.xml"> | ||||
<!ENTITY RFC2557 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2557.xml"> | ||||
<!ENTITY RFC8551 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8551.xml"> | ||||
<!ENTITY RFC5445 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5445.xml"> | ||||
<!ENTITY RFC5052 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5052.xml"> | ||||
<!ENTITY RFC6363 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6363.xml"> | ||||
<!ENTITY RFC7231 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7231.xml"> | ||||
<!ENTITY RFC6968 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6968.xml"> | ||||
<!ENTITY RFC3740 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.3740.xml"> | ||||
<!ENTITY I-D.ietf-quic-http SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/ | ||||
reference.I-D.ietf-quic-http.xml"> | ||||
<!ENTITY RFC9000 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.9000.xml"> | ||||
<!ENTITY RFC6347 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6347.xml"> | ||||
<!ENTITY RFC8932 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8932.xml"> | ||||
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3 | ||||
/reference.I-D.ietf-tls-dtls13.xml"> | ||||
]> | ]> | |||
<rfc submissionType="IETF" docName="draft-zia-route-06" category="info" ipr="tru | ||||
st200902"> | ||||
<!-- Generated by id2xml 1.5.0 on 2022-02-11T22:53:42Z --> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="no"?> | ||||
<?rfc text-list-symbols="oo*+-"?> | ||||
<?rfc toc="yes"?> | ||||
<front> | ||||
<title abbrev="ROUTE">Real-time Transport Object delivery over Unidirecti | ||||
onal Transport (ROUTE)</title> | ||||
<author initials="W" surname="Zia" fullname="Waqar Zia"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="independent" cat | |||
<organization>Qualcomm CDMA Technologies GmbH</organization> | egory="info" docName="draft-zia-route-06" number="9223" ipr="trust200902" obsole | |||
<address> | tes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" | |||
<postal> | version="3"> | |||
<street>Anzinger Str. 13</street> | ||||
<city>Munich</city> | ||||
<region></region> | ||||
<code>81671</code> | ||||
<country>Germany</country> | ||||
</postal> | ||||
<phone></phone> | ||||
<email>wzia@qti.qualcomm.com</email> | ||||
<uri></uri> | ||||
</address> | ||||
</author> | ||||
<author initials="T" surname="Stockhammer" fullname="Thomas Stockhammer"> | <front> | |||
<organization>Qualcomm CDMA Technologies GmbH</organization> | <title abbrev="ROUTE">Real-Time Transport Object Delivery over Unidirectiona | |||
<address> | l Transport (ROUTE)</title> | |||
<postal> | <seriesInfo name="RFC" value="9223"/> | |||
<street>Anzinger Str. 13</street> | <author initials="W" surname="Zia" fullname="Waqar Zia"> | |||
<city>Munich</city> | <organization>Qualcomm CDMA Technologies GmbH</organization> | |||
<region></region> | <address> | |||
<code>81671</code> | <postal> | |||
<country>Germany</country> | <street>Anzinger Str. 13</street> | |||
<city>Munich</city> | ||||
<region/> | ||||
<code>81671</code> | ||||
<country>Germany</country> | ||||
</postal> | </postal> | |||
<phone></phone> | <phone/> | |||
<email>tsto@qti.qualcomm.com</email> | <email>wzia@qti.qualcomm.com</email> | |||
<uri></uri> | <uri/> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="T" surname="Stockhammer" fullname="Thomas Stockhammer"> | ||||
<author initials="L" surname="Chaponniere" fullname="Lenaig Chaponniere"> | <organization>Qualcomm CDMA Technologies GmbH</organization> | |||
<organization>Qualcomm Technologies Inc.</organization> | <address> | |||
<address> | <postal> | |||
<postal> | <street>Anzinger Str. 13</street> | |||
<street>5775 Morehouse Drive</street> | <city>Munich</city> | |||
<city>San Diego</city> | <region/> | |||
<region>CA</region> | <code>81671</code> | |||
<code>92121</code> | <country>Germany</country> | |||
<country>USA</country> | ||||
</postal> | </postal> | |||
<phone></phone> | <phone/> | |||
<email>lguellec@qti.qualcomm.com</email> | <email>tsto@qti.qualcomm.com</email> | |||
<uri></uri> | <uri/> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="L" surname="Chaponniere" fullname="Lenaig Chaponniere"> | ||||
<author initials="G" surname="Mandyam" fullname="Giridhar Mandyam"> | <organization>Qualcomm Technologies Inc.</organization> | |||
<organization>Qualcomm Technologies Inc.</organization> | <address> | |||
<address> | <postal> | |||
<postal> | <street>5775 Morehouse Drive</street> | |||
<street>5775 Morehouse Drive</street> | <city>San Diego</city> | |||
<city>San Diego</city> | <region>CA</region> | |||
<region>CA</region> | <code>92121</code> | |||
<code>92121</code> | <country>United States of America</country> | |||
<country>USA</country> | ||||
</postal> | </postal> | |||
<phone></phone> | <phone/> | |||
<email>mandyam@qti.qualcomm.com</email> | <email>lguellec@qti.qualcomm.com</email> | |||
<uri></uri> | <uri/> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="G" surname="Mandyam" fullname="Giridhar Mandyam"> | ||||
<author initials="M" surname="Luby" fullname="Michael Luby"> | <organization>Qualcomm Technologies Inc.</organization> | |||
<organization>BitRipple, Inc.</organization> | <address> | |||
<address> | <postal> | |||
<postal> | <street>5775 Morehouse Drive</street> | |||
<street>1133 Miller Ave</street> | <city>San Diego</city> | |||
<city>Berkeley</city> | <region>CA</region> | |||
<region>CA</region> | <code>92121</code> | |||
<code>94708</code> | <country>United States of America</country> | |||
<country>USA</country> | ||||
</postal> | </postal> | |||
<phone></phone> | <phone/> | |||
<email>luby@bitripple.com</email> | <email>mandyam@qti.qualcomm.com</email> | |||
<uri></uri> | <uri/> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="M" surname="Luby" fullname="Michael Luby"> | ||||
<date year="2022" month="February"/> | <organization>BitRipple, Inc.</organization> | |||
<address> | ||||
<!-- [rfced] Please insert any keywords (beyond those that appear in the title) | <postal> | |||
for use on https://www.rfc-editor.org/search. --> | <street>1133 Miller Ave</street> | |||
<city>Berkeley</city> | ||||
<region>CA</region> | ||||
<code>94708</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<phone/> | ||||
<email>luby@bitripple.com</email> | ||||
<uri/> | ||||
</address> | ||||
</author> | ||||
<date month="April" year="2022"/> | ||||
<keyword>example</keyword> | <keyword>Multicast | |||
</keyword> | ||||
<keyword>Broadcast | ||||
</keyword> | ||||
<keyword>FEC | ||||
</keyword> | ||||
<keyword>DASH | ||||
</keyword> | ||||
<keyword>HLS | ||||
</keyword> | ||||
<keyword>FLUTE | ||||
</keyword> | ||||
<abstract><t> | <abstract> | |||
<t> | ||||
The Real-time Transport Object delivery over Unidirectional Transport | The Real-time Transport Object delivery over Unidirectional Transport | |||
protocol (ROUTE protocol) is specified for robust delivery of | (ROUTE) protocol is specified for robust delivery of Application Objects, | |||
Application Objects, including Application Objects with real-time | including Application Objects with real-time delivery constraints, to | |||
delivery constraints, to receivers over a unidirectional transport. | receivers over a unidirectional transport. Application Objects consist of | |||
Application Objects consist of data that has meaning to applications | data that has meaning to applications that use the ROUTE protocol for | |||
that use the ROUTE protocol for delivery of data to receivers, for | delivery of data to receivers; for example, it can be a file, a Dynamic | |||
example, it can be a file, or a DASH or HLS segment, a WAV audio | Adaptive Streaming over HTTP (DASH) or HTTP Live Streaming (HLS) segment, a | |||
clip, etc. The ROUTE protocol also supports low-latency streaming | WAV audio clip, etc. The ROUTE protocol also supports low-latency streaming | |||
applications.</t> | applications.</t> | |||
<t> | ||||
<t> | ||||
The ROUTE protocol is suitable for unicast, broadcast, and multicast | The ROUTE protocol is suitable for unicast, broadcast, and multicast | |||
transport. Therefore, it can be run over UDP/IP including multicast | transport. Therefore, it can be run over UDP/IP, including multicast | |||
IP. The ROUTE protocol can leverage the features of the underlying | IP. The ROUTE protocol can leverage the features of the underlying | |||
protocol layer, e.g. to provide security it can leverage IP security | protocol layer, e.g., to provide security, it can leverage IP security | |||
protocols such as IPSec.</t> | protocols such as IPsec.</t> | |||
<t> | ||||
<t> | ||||
This document specifies the ROUTE protocol such that it could be used | This document specifies the ROUTE protocol such that it could be used | |||
by a variety of services for delivery of Application Objects by | by a variety of services for delivery of Application Objects by | |||
specifying their own profiles of this protocol (e.g. by adding or | specifying their own profiles of this protocol (e.g., by adding or | |||
constraining some features).</t> | constraining some features).</t> | |||
<t> | ||||
<t> | ||||
This is not an IETF specification and does not have IETF consensus.</t> | This is not an IETF specification and does not have IETF consensus.</t> | |||
</abstract> | ||||
</abstract> | </front> | |||
</front> | <middle> | |||
<section anchor="sect-1" numbered="true" toc="default"> | ||||
<middle> | <name>Introduction</name> | |||
<section title="Introduction" anchor="sect-1"><section title="Overview" a | <section anchor="sect-1.1" numbered="true" toc="default"> | |||
nchor="sect-1.1"><t> | <name>Overview</name> | |||
<t> | ||||
The Real-time Transport Object delivery over Unidirectional Transport | The Real-time Transport Object delivery over Unidirectional Transport | |||
protocol (ROUTE protocol) can be used for robust delivery of | (ROUTE) protocol can be used for robust delivery of | |||
Application Objects, including Application Objects with real-time | Application Objects, including Application Objects with real-time | |||
delivery constraints, to receivers over a unidirectional transport. | delivery constraints, to receivers over a unidirectional transport. | |||
Unidirectional transport in this document has identical meaning as in | Unidirectional transport in this document has identical meaning to that in | |||
RFC 6726 <xref target="RFC6726"/>, i.e., transport in the direction of receiv | RFC 6726 <xref target="RFC6726" format="default"/>, i.e., transport in the di | |||
er(s) | rection of receiver(s) | |||
from a sender. The robustness is enabled by a built-in mechanism e.g. | from a sender. The robustness is enabled by a built-in mechanism, e.g., | |||
signaling for loss detection, enabling loss recovery, and optionally | signaling for loss detection, enabling loss recovery, and optionally | |||
integrating application-layer Forward Error Correction (FEC).</t> | integrating application-layer Forward Error Correction (FEC).</t> | |||
<t> | ||||
<t> | ||||
Application Objects consist of data that has meaning to applications | Application Objects consist of data that has meaning to applications | |||
that use the ROUTE protocol for delivery of data to receivers, e.g., | that use the ROUTE protocol for delivery of data to receivers, e.g., | |||
an Application Object can be a file, or an MPEG Dynamic Adaptive | an Application Object can be a file, an MPEG Dynamic Adaptive | |||
Streaming over HTTP (DASH)[DASH] video segment, a WAV audio clip, an | Streaming over HTTP (DASH) <xref target="DASH"/> video segment, a WAV audio c | |||
MPEG Common Media Application Format (CMAF) [CMAF] addressable | lip, an | |||
MPEG Common Media Application Format (CMAF) <xref target="CMAF"/> addressable | ||||
resource, an MPEG-4 video clip, etc.</t> | resource, an MPEG-4 video clip, etc.</t> | |||
<t> | <t> | |||
The ROUTE protocol is designed to enable delivery of sequences of | The ROUTE protocol is designed to enable delivery of sequences of | |||
related Application Objects in a timely manner to receivers, e.g., a | related Application Objects in a timely manner to receivers, e.g., a | |||
sequence of DASH video segments associated to a Representation or a | sequence of DASH video segments associated to a Representation or a | |||
sequence of CMAF addressable resources associated to a CMAF Track. | sequence of CMAF addressable resources associated to a CMAF Track. | |||
The applications of this protocol target services enabled on media | The applications of this protocol target services enabled on media | |||
consumption devices such as smartphones, tablets, television sets and | consumption devices such as smartphones, tablets, television sets, and | |||
so on. Most of these applications are real-time in the sense that | so on. Most of these applications are real-time in the sense that | |||
they are sensitive to and reply upon such timely reception of data. | they are sensitive to and rely upon such timely reception of data. | |||
The ROUTE protocol also supports chunked delivery of real-time | The ROUTE protocol also supports chunked delivery of real-time | |||
Application Objects to enable low latency streaming applications | Application Objects to enable low-latency streaming applications | |||
(similar in its properties to chunked delivery using HTTP). The | (similar in its properties to chunked delivery using HTTP). The | |||
protocol also enables low-latency delivery of DASH and Apple HTTP | protocol also enables low-latency delivery of DASH and Apple HTTP | |||
Live Streaming (HLS) content with CMAF Chunks.</t> | Live Streaming (HLS) content with CMAF Chunks.</t> | |||
<t> | ||||
<t> | ||||
Content not intended for rendering in real time as it is received | Content not intended for rendering in real time as it is received | |||
e.g. a downloaded application, or a file comprising continuous or | (e.g., a downloaded application), a file comprising continuous or | |||
discrete media and belonging to an app-based feature, or a file | discrete media and belonging to an app-based feature, or a file | |||
containing (opaque) data to be consumed by a Digital Rights | containing (opaque) data to be consumed by a Digital Rights | |||
Management (DRM) system client can also delivered by ROUTE.</t> | Management (DRM) system client can also be delivered by ROUTE.</t> | |||
<t> | <t> | |||
The ROUTE protocol supports a caching model, where Application | The ROUTE protocol supports a caching model where Application | |||
Objects are recovered into a cache at the receiver and may be made | Objects are recovered into a cache at the receiver and may be made | |||
available to applications via standard HTTP requests from the cache. | available to applications via standard HTTP requests from the cache. | |||
Many current day applications rely on using HTTP to access content, | Many current day applications rely on using HTTP to access content; | |||
and hence this approach enables such applications in | hence, this approach enables such applications in | |||
broadcast/multicast environments.</t> | broadcast/multicast environments.</t> | |||
<t> | ||||
ROUTE is aligned with File Delivery over Unidirectional Transport (FLUTE) | ||||
as defined in RFC 6726 <xref target="RFC6726" format="default"/> as well as | ||||
the extensions defined in Multimedia Broadcast/Multicast Service (MBMS) | ||||
<xref target="MBMS"/>, but it also makes use of some principles of | ||||
FCAST (Object Delivery for the Asynchronous Layered Coding (ALC) and | ||||
NACK-Oriented Reliable Multicast (NORM) Protocols) as defined in RFC 6968 <xr | ||||
ef | ||||
target="RFC6968" format="default"/>; for example, object metadata and the | ||||
object content may be sent together in a compound object.</t> | ||||
<t> | <t> | |||
ROUTE is aligned with FLUTE as defined in RFC 6726 <xref target="RFC6726"/> a | ||||
s well | ||||
as the extensions defined in MBMS [MBMS], but also makes use of some | ||||
principles of FCAST (Object Delivery for the ALC and NACK-Oriented | ||||
Reliable Multicast Protocols) as defined in RFC 6968 <xref target="RFC6968"/> | ||||
; for | ||||
example, object metadata and the object content may be sent together | ||||
in a compound object.</t> | ||||
<t> | ||||
The alignment to FLUTE is enabled since in addition to reusing | The alignment to FLUTE is enabled since in addition to reusing | |||
several of the basic FLUTE protocol features, as referred to by this | several of the basic FLUTE protocol features, as referred to by this | |||
document, certain optimizations and restrictions are added that | document, certain optimizations and restrictions are added that | |||
enable optimized support for real-time delivery of media data; hence, | enable optimized support for real-time delivery of media data; hence, | |||
the name of the protocol. Among others, the source ROUTE protocol | the name of the protocol. Among others, the source ROUTE protocol | |||
enables or enhances the following functionalities:</t> | enables or enhances the following functionalities:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>Real-time delivery of object-based media data | <li>Real-time delivery of object-based media data</li> | |||
</t> | <li>Flexible packetization, including enabling media-aware | |||
<t>Flexible packetization, including enabling media-aware | ||||
packetization as well as transport-aware packetization of delivery | packetization as well as transport-aware packetization of delivery | |||
objects</t> | objects</li> | |||
<li>Independence of Application Objects and delivery objects, i.e., a | ||||
<t>Independence of Application Objects and delivery objects, i.e. a | ||||
delivery object may be a part of a file or may be a group of | delivery object may be a part of a file or may be a group of | |||
files.</t> | files.</li> | |||
</ul> | ||||
</list> | <t> | |||
</t> | ||||
<t> | ||||
Advanced Television Systems Committee (ATSC) 3.0 specifies the ROUTE | Advanced Television Systems Committee (ATSC) 3.0 specifies the ROUTE | |||
protocol integrated with an ATSC 3.0 services layer. That | protocol integrated with an ATSC 3.0 services layer. That | |||
specification will be referred to as ATSC-ROUTE [ATSCA331] for the | specification will be referred to as ATSC-ROUTE <xref target="ATSCA331"/> for | |||
remainder of this document. DVB has specified a profile of ATSC-ROUTE | the | |||
remainder of this document. Digital Video Broadcasting (DVB) has specified a | ||||
profile of ATSC-ROUTE | ||||
in DVB Adaptive Media Streaming over IP Multicast (DVB-MABR) | in DVB Adaptive Media Streaming over IP Multicast (DVB-MABR) | |||
[DVBMABR]. This document specifies the Application Object delivery | <xref target="DVBMABR"/>. This document specifies the Application Object deli very | |||
aspects (delivery protocol) for such services, as the corresponding | aspects (delivery protocol) for such services, as the corresponding | |||
delivery protocol could be used as a reference by a variety of | delivery protocol could be used as a reference by a variety of | |||
services by specifying profiles of ROUTE in their respective fora, | services by specifying profiles of ROUTE in their respective fora, | |||
e.g. by adding new optional features atop or by restricting various | e.g., by adding new optional features atop or by restricting various | |||
optional features specified in this document in a specific service | optional features specified in this document in a specific service | |||
standard. Hence in the context of this document, the aforementioned | standard. Hence, in the context of this document, the aforementioned | |||
ATSC-ROUTE and DVB-MABR are the services using ROUTE. The definition | ATSC-ROUTE and DVB-MABR are the services using ROUTE. The definition | |||
of profiles by the services also have to give due consideration to | of profiles by the services also have to give due consideration to | |||
compatibility issues, and some related guidelines are also provided | compatibility issues, and some related guidelines are also provided | |||
in this document.</t> | in this document.</t> | |||
<t> | ||||
<t> | ||||
This document is not an IETF specification and does not have IETF | This document is not an IETF specification and does not have IETF | |||
consensus. It is provided here to aid the production of interoperable | consensus. It is provided here to aid the production of interoperable | |||
implementations.</t> | implementations.</t> | |||
</section> | ||||
<section anchor="sect-1.2" numbered="true" toc="default"> | ||||
<name>Protocol Stack for ROUTE</name> | ||||
</section> | <t> | |||
<section title="Protocol Stack for ROUTE" anchor="sect-1.2"><t> | ||||
ROUTE delivers Application Objects such as MPEG DASH or HLS segments | ROUTE delivers Application Objects such as MPEG DASH or HLS segments | |||
and optionally the associated repair data, operating over UDP/IP | and optionally the associated repair data, operating over UDP/IP | |||
networks, as depicted in Figure 1. The session metadata signaling to | networks, as depicted in <xref target="protocol-layering"/>. The session meta | |||
realize ROUTE session as specified in this document MAY be delivered | data signaling to | |||
out-of-band or in-band as well. Since ROUTE delivers objects in an | realize a ROUTE session as specified in this document <bcp14>MAY</bcp14> be d | |||
elivered | ||||
out of band or in band as well. Since ROUTE delivers objects in an | ||||
application cache at the receiver from where the application can | application cache at the receiver from where the application can | |||
access them using HTTP, an application like DASH may use its | access them using HTTP, an application like DASH may use its | |||
standardized unicast streaming mechanisms in conjunction with ROUTE | standardized unicast streaming mechanisms in conjunction with ROUTE | |||
over broadcast/multicast to augment the services. </t> | over broadcast/multicast to augment the services. </t> | |||
<figure title="Protocol Layering" anchor="fig-1"> | <table anchor="protocol-layering"> | |||
<artwork><![CDATA[ | <name>Protocol Layering</name> | |||
+-----------------------------------+ | <tbody> | |||
|Application (DASH and HLS segments,| | ||||
| CMAF chunks etc.) | | ||||
+-----------------------------------+ | ||||
| ROUTE | | ||||
+-----------------------------------+ | ||||
| UDP | | ||||
+-----------------------------------+ | ||||
| IP | | ||||
+-----------------------------------+ | ||||
]]> | ||||
</artwork> | ||||
</figure> | ||||
</section> | <tr> | |||
<td align="center">Application (DASH and HLS segments, CMAF Chun | ||||
ks, etc.) | ||||
</td> | ||||
</tr> | ||||
<section title="Data Model" anchor="sect-1.3"><t> | <tr> | |||
The ROUTE data model is constituted by the following key concepts. | <td align="center">ROUTE | |||
</td> | ||||
</tr> | ||||
<list style="hanging" hangIndent="6"> | <tr> | |||
<td align="center">UDP | ||||
</td> | ||||
</tr> | ||||
<t hangText="Application Object:"> data that has meaning to the application t | <tr> | |||
hat | <td align="center">IP | |||
uses the ROUTE protocol for delivery of data to receivers, e.g., an | </td> | |||
Application Object can be a file, or a DASH video segment, a WAV | </tr> | |||
audio clip, an MPEG-4 video clip, etc.</t> | ||||
<t hangText="Delivery Object:"> An object on course of delivery to the applic | </tbody> | |||
ation | </table> | |||
from the ROUTE sender to ROUTE receiver.</t> | ||||
<t hangText="Transport Object:"> an object identified by the Transport Object | </section> | |||
Identifier (TOI)in RFC 5651 <xref target="RFC5651"/>. It MAY be a either a so | <section anchor="sect-1.3" numbered="true" toc="default"> | |||
urce | <name>Data Model</name> | |||
or a repair object, if it is carried by a Source Flow or a Repair | <t> | |||
Flow, respectively.</t> | The ROUTE data model is constituted by the following key concepts. | |||
<t hangText="Transport Session:"> An Layered Coding Transport (LCT) channel, | </t> | |||
as | <dl newline="false" spacing="normal" indent="6"> | |||
defined by RFC 5651 <xref target="RFC5651"/>. Transport session SHALL be uniq | <dt>Application Object:</dt> | |||
uely | <dd> data that has meaning to the application that | |||
uses the ROUTE protocol for delivery of data to receivers, e.g., an | ||||
Application Object can be a file, a DASH video segment, a WAV | ||||
audio clip, an MPEG-4 video clip, etc.</dd> | ||||
<dt>Delivery Object:</dt> | ||||
<dd> an object on course of delivery to the application | ||||
from the ROUTE sender to ROUTE receiver.</dd> | ||||
<dt>Transport Object:</dt> | ||||
<dd> an object identified by the Transport Object Identifier (TOI) | ||||
in RFC 5651 <xref target="RFC5651" format="default"/>. It | ||||
<bcp14>MAY</bcp14> be either a source or a repair object, depending on | ||||
if it is | ||||
carried by a Source Flow or a Repair Flow, respectively.</dd> | ||||
<dt>Transport Session:</dt> | ||||
<dd>a Layered Coding Transport (LCT) channel, as | ||||
defined by RFC 5651 <xref target="RFC5651" format="default"/>. A Transport Se | ||||
ssion <bcp14>SHALL</bcp14> be uniquely | ||||
identified by a unique Transport Session Identifier (TSI) value in | identified by a unique Transport Session Identifier (TSI) value in | |||
the LCT header. The TSI is scoped by the IP address of the sender, | the LCT header. The TSI is scoped by the IP address of the sender, | |||
and the IP address of the sender together with the TSI uniquely | and the IP address of the sender together with the TSI uniquely | |||
identify the session. Transport sessions are a subset of a ROUTE | identify the session. Transport Sessions are a subset of a ROUTE | |||
session. For media delivery, a Transport Session would typically | session. For media delivery, a Transport Session would typically | |||
carry a media component, for example a DASH Representation. Within | carry a media component, for example, a DASH Representation. Within | |||
each transport session, one or more objects are carried, typically | each Transport Session, one or more objects are carried, typically | |||
objects that are related, e.g. DASH Segments associated to one | objects that are related, e.g., DASH segments associated to one | |||
Representation.</t> | Representation.</dd> | |||
<t hangText="ROUTE Session:"> An ensemble or multiplex of one or more | ||||
Transport Sessions. Each ROUTE Session is associated with an IP | ||||
address/port combination. ROUTE session typically carries one or more media | ||||
components of streaming media e.g. Representations associated with a DASH | ||||
Media Presentation.</t> | ||||
<t hangText="Source Flow:"> Transport session carrying source data. Source Fl | ||||
ow is | ||||
independent of the repair Flow, i.e. the Source Flow MAY be used by | ||||
a ROUTE receiver without the ROUTE Repair Flows.</t> | ||||
<t hangText="Repair Flow:"> Transport session carrying repair data for one | ||||
or more Source Flows.</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="Architecture and Scope of Specification" anchor="sect-1.4 | <dt>ROUTE Session:</dt> | |||
"><t> | <dd>an ensemble or multiplex of one or more | |||
The scope of the ROUTE protocol is robust and real-time transport of | Transport Sessions. Each ROUTE session is associated with an IP | |||
delivery objects using LCT packets. This architecture is depicted in | address/port combination. A ROUTE session typically carries one or more media | |||
Figure 2.</t> | components of streaming media e.g., Representations associated with a DASH | |||
Media Presentation.</dd> | ||||
<dt>Source Flow:</dt> | ||||
<dd>a Transport Session carrying source data. Source Flow is | ||||
independent of the Repair Flow, i.e., the Source Flow <bcp14>MAY</bcp14> be u | ||||
sed by | ||||
a ROUTE receiver without the ROUTE Repair Flows.</dd> | ||||
<dt>Repair Flow:</dt> | ||||
<dd>a Transport Session carrying repair data for one | ||||
or more Source Flows.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sect-1.4" numbered="true" toc="default"> | ||||
<name>Architecture and Scope of Specification</name> | ||||
<t> | <t> | |||
The scope of the ROUTE protocol is to enable robust and real-time transport o | ||||
f | ||||
delivery objects using LCT packets. This architecture is depicted in | ||||
<xref target="architecture-diagram"/>.</t> | ||||
<t> | ||||
The normative aspects of the ROUTE protocol focus on the following | The normative aspects of the ROUTE protocol focus on the following | |||
aspects:</t> | aspects:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>The format of the LCT packets that carry the | <li>The format of the LCT packets that carry the transport objects.</l | |||
transport objects.</t> | i> | |||
<li>The robust transport of the delivery object using a repair | ||||
<t>The robust transport of the delivery object using a repair | protocol based on Forward Error Correction (FEC).</li> | |||
protocol based on Forward Error Correction (FEC).</t> | <li>The definition and possible carriage of object metadata along with | |||
<t>The definition and possible carriage of object metadata along with | ||||
the delivery objects. Metadata may be conveyed in LCT packets | the delivery objects. Metadata may be conveyed in LCT packets | |||
and/or separate objects.</t> | and/or separate objects.</li> | |||
<li>The ROUTE session, LCT channel, and delivery object description | ||||
<t>The ROUTE session, LCT channel and delivery object description | ||||
provided as service metadata signaling to enable the reception of | provided as service metadata signaling to enable the reception of | |||
objects.</t> | objects.</li> | |||
<li>The normative aspects (formats, semantics) of the delivery | ||||
<t>The normative aspects (formats, semantics) of the delivery objects | objects conveyed as a content manifest to be delivered along with | |||
conveyed as a content manifest to be delivered along with the | the objects to optimize the performance for specific applications | |||
objects to optimize the performance for specific applications; | e.g., real-time delivery. The objects and manifest are made | |||
e.g., real-time delivery. The objects and manifest are made | available to the application through an Application Object cache. | |||
available to the application through an Application Object cache. | The interface of this cache to the application is not specified in | |||
The interface of this cache to the application is not specified in | this document; however, it will typically be enabled by the | |||
this document, however it will typically be enabled by the | application acting as an HTTP client and the cache as the HTTP | |||
application acting as an HTTP Client and the cache as the HTTP | server.</li> | |||
server.</t> | </ul> | |||
<figure anchor="architecture-diagram"> | ||||
</list> | <name>Architecture/Functional Block Diagram</name> | |||
</t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<figure title="Architecture/functional block diagram" anchor="fig-2"><art | ||||
work><![CDATA[ | ||||
Application Objects | Application Objects | |||
Application to application | Application to application | |||
Objects from ^ | Objects from ^ | |||
an application +--------------------------------------------+ | an application +--------------------------------------------+ | |||
+ | ROUTE Receiver | | | + | ROUTE Receiver | | | |||
| | +------+------+ | | | | +------+------+ | | |||
| | | Application | | | | | | Application | | | |||
| | | Object Cache| | | | | | Object Cache| | | |||
| | +------+------+ | | | | +------+------+ | | |||
| LCT over| +---------------+ ^ | | | LCT over| +---------------+ ^ | | |||
skipping to change at line 391 ¶ | skipping to change at line 375 ¶ | |||
| ROUTE | | | +---------------+ +----+----+ | | | ROUTE | | | +---------------+ +----+----+ | | |||
| Sender +----------+ ^ | | | Sender +----------+ ^ | | |||
+----+---+ | | | | | +----+---+ | | | | | |||
| | | +---------------+ | | | | | | +---------------+ | | | |||
| | | | Repair object | | | | | | | | Repair object | | | | |||
| | +->+ recovery +-------+ | | | | +->+ recovery +-------+ | | |||
+----------->+ +---------------+ | | +----------->+ +---------------+ | | |||
ROUTE | | | ROUTE | | | |||
Metadata +--------------------------------------------+ | Metadata +--------------------------------------------+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section title="Intellectual Property" anchor="sect-1.5"><t> | ||||
The protocol described in this document may be subject to | ||||
intellectual property rights disclosed to the IETF in accordance with | ||||
BCP 78 and recorded in the datatracker entry for this document.</t> | ||||
</section> | ||||
<section title="Conventions used in this document" anchor="sect-1.6"><t> | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in BCP | ||||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, the | ||||
y appear in all | ||||
capitals, as shown here.</t> | ||||
</section> | <section anchor="sect-1.6" numbered="true" toc="default"> | |||
<name>Conventions Used in This Document</name> | ||||
</section> | <t> | |||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
<section title="ROUTE Packet Format" anchor="sect-2"><section title="Pack | </section> | |||
et Structure and Header Fields" anchor="sect-2.1"><t> | </section> | |||
<section anchor="sect-2" numbered="true" toc="default"> | ||||
<name>ROUTE Packet Format</name> | ||||
<section anchor="sect-2.1" numbered="true" toc="default"> | ||||
<name>Packet Structure and Header Fields</name> | ||||
<t> | ||||
The packet format used by ROUTE Source Flows and Repair Flows follows | The packet format used by ROUTE Source Flows and Repair Flows follows | |||
the ALC packet format specified in RFC 5775 <xref target="RFC5775"/>, with th e UDP | the ALC packet format specified in RFC 5775 <xref target="RFC5775" format="de fault"/> with the UDP | |||
header followed by the default LCT header and the source FEC Payload | header followed by the default LCT header and the source FEC Payload | |||
ID followed by the packet payload. The overall ROUTE packet format is | ID followed by the packet payload. The overall ROUTE packet format is | |||
as depicted in Figure 3 below.</t> | as depicted in <xref target="route-packet-format"/>.</t> | |||
<figure anchor="route-packet-format"> | ||||
<figure title="Overall ROUTE packet format" anchor="fig-3"><artwork><![CD | <name>Overall ROUTE Packet Format</name> | |||
ATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| UDP Header | | | UDP Header | | |||
| | | | | | |||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | |||
| Default LCT header | | | Default LCT header | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| FEC Payload ID | | | FEC Payload ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Payload Data | | | Payload Data | | |||
| ... | | | ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> | <t> | |||
The Default LCT header is as defined in the LCT building block in RFC | The Default LCT header is as defined in the LCT building block in RFC | |||
5651 <xref target="RFC5651"/>.</t> | 5651 <xref target="RFC5651" format="default"/>.</t> | |||
<t> | ||||
<t> | The LCT packet header fields <bcp14>SHALL</bcp14> be used as defined by the L | |||
The LCT packet header fields SHALL be used as defined by the LCT | CT | |||
building block in RFC 5651 <xref target="RFC5651"/>. The semantics and usage | building block in RFC 5651 <xref target="RFC5651" format="default"/>. The sem | |||
of the | antics and usage of the | |||
following LCT header fields SHALL be further constrained in ROUTE as | following LCT header fields <bcp14>SHALL</bcp14> be further constrained in RO | |||
UTE as | ||||
follows: | follows: | |||
<list style="hanging" hangIndent="6"> | </t> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>Version number (V):</dt> | ||||
<dd> This 4-bit field indicates the protocol | ||||
version number. The version number <bcp14>SHALL</bcp14> be set to '0001', as | ||||
specified in | ||||
RFC 5651 <xref target="RFC5651" format="default"/>.</dd> | ||||
<dt>Congestion Control flag (C) field:</dt> | ||||
<dd> This 2-bit field, as | ||||
defined in RFC 5651 <xref target="RFC5651" format="default"/>, <bcp14>SHALL</ | ||||
bcp14> be set to '00'.</dd> | ||||
<dt>Protocol-Specific Indication (PSI):</dt> | ||||
<dd> The most significant bit of this 2-bit flag is called the | ||||
Source Packet Indicator (SPI) and indicates whether the current | ||||
packet is a source packet or a FEC repair packet. The SPI | ||||
<bcp14>SHALL</bcp14> be set to '1' to indicate a source packet and | ||||
<bcp14>SHALL</bcp14> bet set to '0' to indicate a repair | ||||
packet.</dd> | ||||
<dt>Transport Session Identifier flag (S):</dt> | ||||
<dd> This 1-bit field | ||||
<bcp14>SHALL</bcp14> be set to '1' to indicate a 32-bit word in the TSI field | ||||
.</dd> | ||||
<dt>Transport Object Identifier flag (O):</dt> | ||||
<dd> This 2-bit field <bcp14>SHALL</bcp14> | ||||
be set to '01' to indicate the number of full 32-bit words in the TOI | ||||
field.</dd> | ||||
<dt>Half-word flag (H):</dt> | ||||
<dd> This 1-bit field <bcp14>SHALL</bcp14> be set to '0' to | ||||
indicate that no half-word field sizes are used.</dd> | ||||
<dt>Codepoint (CP):</dt> | ||||
<dd> This 8-bit field is used to indicate the type of the payload | ||||
that is carried by this packet; for ROUTE, it is defined as shown | ||||
below to indicate the type of delivery object carried in the payload | ||||
of the associated ROUTE packet. The remaining unmapped Codepoint | ||||
values can be used by a service using ROUTE. In this case, the | ||||
Codepoint values <bcp14>SHALL</bcp14> follow the semantics specified | ||||
in the following table. "IS" stands for Initialization Segment of | ||||
the media content such as the DASH Initialization Segment | ||||
<xref target="DASH"/>. The various modes of operation in the table | ||||
(File/Entity/Package Mode) are specified in <xref target="sect-4" | ||||
format="default"/>. The table also lists a Codepoint value range | ||||
that is reserved for future service-specific uses.</dd> | ||||
</dl> | ||||
<table anchor="codepoint-values"> | ||||
<name>Codepoint Values</name> | ||||
<t hangText="Version number (V):"> This 4-bit field indicates the protocol | <thead> | |||
version number. The version number SHALL be set to '0001', as specified in | <tr> | |||
RFC 5651 <xref target="RFC5651"/>.</t> | <th>Codepoint value | |||
</th> | ||||
<th>Semantics | ||||
</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>0 | ||||
</td> | ||||
<td>Reserved (not used) | ||||
</td> | ||||
<t hangText="Congestion Control flag (C) field:"> This 2-bit field, as | </tr> | |||
defined in RFC 5651 <xref target="RFC5651"/>, SHALL be set to '00'.</t> | ||||
<t hangText="Protocol-Specific Indication (PSI):"> The most significant bit | <tr> | |||
of this two bit flag is called the Source Packet Indicator (SPI) and | <td>1 | |||
indicates whether the current packet is a source packet or an FEC repair | </td> | |||
packet. The SPI SHALL be set to '1' to indicate a source packet, and SHALL | <td>Non Real Time (NRT) - File Mode | |||
bet set to '0' to indicate a repair packet.</t> | </td> | |||
<t hangText="Transport Session Identifier flag (S):"> This 1-bit field | </tr> | |||
SHALL be set to '1' to indicate a 32-bit word in the TSI field.</t> | <tr> | |||
<td>2 | ||||
</td> | ||||
<td>NRT - Entity Mode | ||||
</td> | ||||
<t hangText="Transport Object Identifier flag (O):"> This 2-bit field SHALL | </tr> | |||
be set to '01' to indicate the number of full 32-bit words in the TOI | ||||
field.</t> | ||||
<t hangText="Half-word flag (H):"> This 1-bit field SHALL be set to '0' to | <tr> | |||
indicate that no half-word field sizes are used.</t> | <td>3 | |||
</td> | ||||
<td>NRT - Unsigned Package Mode | ||||
</td> | ||||
<t hangText="Codepoint (CP):"> This 8-bit field is used to indicate the | </tr> | |||
type of the payload that is carried by this packet, and for ROUTE, is | ||||
defined as shown below to indicate the type of delivery object carried in | ||||
the payload of the associated ROUTE packet. The remaining, unmapped | ||||
Codepoint values can be used by a service using ROUTE. In this case, the | ||||
Codepoint values SHALL follow the semantics specified in the following | ||||
table. "IS" stands for Initialization Segment of the media content such as | ||||
the DASH Initialization Segment [DASH]. The various modes of operation in | ||||
the table (File/Entity/Package Mode) are specified in <xref | ||||
target="sect-4"/>. The table also lists a Codepoint value range that is | ||||
reserved for future service-specific uses.</t> | ||||
</list> | <tr> | |||
</t> | <td>4 | |||
</td> | ||||
<td>NRT - Signed Package Mode | ||||
</td> | ||||
<figure><artwork><![CDATA[ | </tr> | |||
Codepoint value | Semantics | ||||
0 | Reserved (not used) | ||||
1 | Non Real Time (NRT) - File Mode | ||||
2 | NRT - Entity Mode | ||||
3 | NRT - Unsigned Package Mode | ||||
4 | NRT - Signed Package Mode | ||||
5 | New IS, timeline changed | ||||
6 | New IS, timeline continued | ||||
7 | Redundant IS | ||||
8 | Media Segment, File Mode | ||||
9 | Media Segment, Entity Mode | ||||
10 | Media Segment, File Mode with CMAF Random | ||||
| Access Chunk | ||||
11 - 255 | Reserved, service-specific | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | <tr> | |||
<list style="hanging" hangIndent="6"> | <td>5 | |||
</td> | ||||
<td>New IS, timeline changed | ||||
</td> | ||||
<t hangText="Congestion Control Information (CCI):"> For packets carrying | </tr> | |||
DASH segments, MAY convey the 32-bit earliest presentation time [DASH] of | ||||
the DASH segment contained in the ROUTE packet. In this case, this | ||||
information can be used by a ROUTE receiver for fast stream acquisition | ||||
(details in <xref target="sect-6.2"/>). Otherwise this field SHALL be set | ||||
to 0.</t> | ||||
<t hangText="Transport Session Identifier (TSI):"> This 32-bit field | <tr> | |||
identifies the Transport Session in ROUTE. The context of the Transport | <td>6 | |||
Session is provided by signaling metadata. The value TSI = 0 SHALL only be | </td> | |||
used for service-specific signaling.</t> | <td>New IS, timeline continued | |||
</td> | ||||
<t hangText="Transport Object Identifier (TOI):"> This 32-bit field SHALL | </tr> | |||
identify the object within this session to which the payload of the current | ||||
packet belongs. The mapping of the TOI field to the object is provided by | ||||
the Extended File Delivery Table (FDT).</t> | ||||
</list> | <tr> | |||
</t> | <td>7 | |||
</section> | </td> | |||
<td>Redundant IS | ||||
</td> | ||||
<section title="LCT Header Extensions" anchor="sect-2.2"><t> | </tr> | |||
The following LCT header extensions are defined or used by ROUTE: | ||||
<list style="hanging" hangIndent="6"> | <tr> | |||
<td>8 | ||||
</td> | ||||
<td>Media Segment, File Mode | ||||
</td> | ||||
<t hangText="EXT_FTI:"> as specified in RFC 5775.</t> | </tr> | |||
<t hangText="EXT_TOL:"> The length in bytes of the multicast transport | <tr> | |||
object shall be signaled using EXT_TOL as specified by ATSC-ROUTE | <td>9 | |||
[ATSCA331] with 24 bits or, if required, 48 bits of Transfer Length. The | </td> | |||
frequency of using the EXT_TOL header extension is determined by channel | <td>Media Segment, Entity Mode | |||
conditions that may cause the loss of the packet carrying Close Object (B) | </td> | |||
flag <xref target="RFC5651"/>.</t> | ||||
<t> | </tr> | |||
NOTE: The transport object length can also be determined without the | ||||
use of EXT_TOL by examining the LCT packet with the Close Object (B) | ||||
flag. However, if this packet is lost, then the EXT_TOL information | ||||
can be used by the receiver to determine the transport object length.</t> | ||||
<t hangText="EXT_TIME Header:"> as specified in RFC 5651 <xref | <tr> | |||
target="RFC5651"/>. The Sender Current Time SHALL be signaled using | <td>10 | |||
EXT_TIME.</t> | </td> | |||
<td>Media Segment, File Mode with CMAF Random Access chunk | ||||
</td> | ||||
</list> | </tr> | |||
</t> | ||||
</section> | <tr> | |||
<td>11 - 255 | ||||
</td> | ||||
<td>Reserved, service-specific | ||||
</td> | ||||
<section title="FEC Payload ID for Source Flows" anchor="sect-2.3"><t> | </tr> | |||
The syntax of the FEC Payload ID for the Compact No-Code FEC Scheme | ||||
used in ROUTE Source Flows is a 32-bit unsigned integer value that | ||||
SHALL express the start_offset, as an octet number corresponding to | ||||
the first octet of the fragment of the delivery object carried in | ||||
this packet. The start_offset value for the first fragment of any | ||||
delivery object SHALL be set to 0. Figure 4 shows the 32-bit | ||||
start_offset field.</t> | ||||
<figure title="FEC Payload ID for Source Flows." anchor="fig-4."><artwork | </tbody> | |||
><![CDATA[ | </table> | |||
<dl newline="false" spacing="normal"> | ||||
<dt>Congestion Control Information (CCI):</dt> | ||||
<dd> For packets carrying DASH segments, CCI <bcp14>MAY</bcp14> convey | ||||
the 32-bit earliest presentation time <xref target="DASH"/> of the | ||||
DASH segment contained in the ROUTE packet. In this case, this | ||||
information can be used by a ROUTE receiver for fast stream | ||||
acquisition (details in <xref target="sect-6.2" | ||||
format="default"/>). Otherwise, this field <bcp14>SHALL</bcp14> be | ||||
set to 0.</dd> | ||||
<dt>Transport Session Identifier (TSI):</dt> | ||||
<dd> This 32-bit field | ||||
identifies the Transport Session in ROUTE. The context of the Transport | ||||
Session is provided by signaling metadata. The value TSI = 0 <bcp14>SHALL</bc | ||||
p14> only be | ||||
used for service-specific signaling.</dd> | ||||
<dt>Transport Object Identifier (TOI):</dt> | ||||
<dd> This 32-bit field <bcp14>SHALL</bcp14> | ||||
identify the object within this session to which the payload of the current | ||||
packet belongs. The mapping of the TOI field to the object is provided by | ||||
the Extended File Delivery Table (FDT).</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sect-2.2" numbered="true" toc="default"> | ||||
<name>LCT Header Extensions</name> | ||||
<t> | ||||
The following LCT header extensions are defined or used by ROUTE: | ||||
</t> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>EXT_FTI:</dt> | ||||
<dd> as specified in RFC 5775.</dd> | ||||
<dt>EXT_TOL:</dt> | ||||
<dd> the length in bytes of the multicast transport object shall be | ||||
signaled using EXT_TOL as specified by ATSC-ROUTE <xref | ||||
target="ATSCA331"/> with 24 bits or, if required, 48 bits of | ||||
Transfer Length. The frequency of using the EXT_TOL header extension | ||||
is determined by channel conditions that may cause the loss of the | ||||
packet carrying the Close Object flag (B) <xref target="RFC5651" | ||||
format="default"/>.</dd> | ||||
<dt/> | ||||
<dd> | ||||
NOTE: The transport object length can also be determined without the use of | ||||
EXT_TOL by examining the LCT packet with the Close Object flag | ||||
(B). However, if this packet is lost, then the EXT_TOL information can be | ||||
used by the receiver to determine the transport object length.</dd> | ||||
<dt>EXT_TIME Header:</dt> | ||||
<dd> as specified in RFC 5651 <xref target="RFC5651" format="default"/ | ||||
>. The Sender Current Time <bcp14>SHALL</bcp14> be signaled using | ||||
EXT_TIME.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sect-2.3" numbered="true" toc="default"> | ||||
<name>FEC Payload ID for Source Flows</name> | ||||
<t> | ||||
The syntax of the FEC Payload ID for the Compact No-Code FEC Scheme used in | ||||
ROUTE Source Flows is a 32-bit unsigned integer value that | ||||
<bcp14>SHALL</bcp14> express the start_offset as an octet number | ||||
corresponding to the first octet of the fragment of the delivery object | ||||
carried in this packet. The start_offset value for the first fragment of | ||||
any delivery object <bcp14>SHALL</bcp14> be set to 0. <xref | ||||
target="start_offset"/> shows the 32-bit start_offset field.</t> | ||||
<figure anchor="start_offset"> | ||||
<name>FEC Payload ID for Source Flows</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| start_offset | | | start_offset | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="sect-2.4" numbered="true" toc="default"> | ||||
<section title="FEC Payload ID for Repair Flows" anchor="sect-2.4"><t> | <name>FEC Payload ID for Repair Flows</name> | |||
FEC Payload ID for Repair Flows is specified in RFC 6330 <xref target="RFC633 | <t> | |||
0"/>.</t> | FEC Payload ID for Repair Flows is specified in RFC 6330 <xref target="RFC633 | |||
0" format="default"/>.</t> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section anchor="sect-3" numbered="true" toc="default"> | |||
<name>Session Metadata</name> | ||||
<section title="Session Metadata" anchor="sect-3"><t> | <t> | |||
The required session metadata for Source and Repair Flows is | The required session metadata for Source and Repair Flows is | |||
specified in the following sections. The list specified here is not | specified in the following sections. The list specified here is not | |||
exhaustive; a service MAY signal more metadata to meet its needs. The | exhaustive; a service <bcp14>MAY</bcp14> signal more metadata to meet its nee ds. The | |||
data format is also not specified beyond its cardinality; the exact | data format is also not specified beyond its cardinality; the exact | |||
format of specifying the data is left for the service, e.g. by using | format of specifying the data is left for the service, e.g., by using | |||
XML encoding format, as has been done by [DVBMABR] and [ATSCA331]. | XML encoding format, as has been done by <xref target="DVBMABR"/> and <xref t | |||
arget="ATSCA331"/>. | ||||
It is specified in the following if an attribute is mandatory (m), | It is specified in the following if an attribute is mandatory (m), | |||
conditional mandatory (cm) or optional (o) to realize a basic ROUTE | conditional mandatory (cm) or optional (o) to realize a basic ROUTE | |||
session. A mandatory filed SHALL always be present in the session | session. A mandatory field <bcp14>SHALL</bcp14> always be present in the sess | |||
metadata, and a conditional mandatory field SHALL be present if the | ion | |||
metadata, and a conditional mandatory field <bcp14>SHALL</bcp14> be present i | ||||
f the | ||||
specified condition is true. The delivery of the session metadata to | specified condition is true. The delivery of the session metadata to | |||
the ROUTE receiver is beyond scope of this document.</t> | the ROUTE receiver is beyond the scope of this document.</t> | |||
<section anchor="sect-3.1" numbered="true" toc="default"> | ||||
<section title="Generic Metadata" anchor="sect-3.1"><t> | <name>Generic Metadata</name> | |||
<t> | ||||
Generic metadata is applicable to both Source and Repair Flows as | Generic metadata is applicable to both Source and Repair Flows as | |||
follows. Before a receiver can join a ROUTE session, the receiver | follows. Before a receiver can join a ROUTE session, the receiver | |||
needs to obtain this generic metadata that contains at least the | needs to obtain this generic metadata that contains at least the | |||
following information: | following information: | |||
<list style="hanging" hangIndent="6"> | ||||
<t hangText="ROUTE version number (m):"> The version number of ROUTE used | ||||
in this session. The version number conforming to this document SHALL be | ||||
1.</t> | ||||
<t hangText="Connection ID (m):"> unique identifier of a Connection, | ||||
usually consisting of 4-tuple: source IP address/source port number, | ||||
destination IP address/destination port number. The IP addresses can be | ||||
IPv4 or IPv6 addresses, depending upon which IP version is used by the | ||||
deployment.</t> | ||||
</list> | ||||
</t> | </t> | |||
</section> | <dl newline="false" spacing="normal"> | |||
<dt>ROUTE version number (m):</dt> | ||||
<section title="Session Metadata for Source Flows" anchor="sect-3.2"><t> | <dd> the version number of ROUTE used | |||
stsi (m): LCT TSI value corresponding to the transport session for | in this session. The version number conforming to this document <bcp14>SHALL< | |||
/bcp14> be | ||||
1.</dd> | ||||
<dt>Connection ID (m):</dt> | ||||
<dd> the unique identifier of a Connection, | ||||
usually consisting of the following 4-tuple: source IP address/source port nu | ||||
mber, | ||||
destination IP address/destination port number. The IP addresses can be | ||||
IPv4 or IPv6 addresses depending upon which IP version is used by the | ||||
deployment.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sect-3.2" numbered="true" toc="default"> | ||||
<name>Session Metadata for Source Flows</name> | ||||
<t> | ||||
stsi (m): The LCT TSI value corresponding to the Transport Session for | ||||
the Source Flow. | the Source Flow. | |||
<list style="hanging" hangIndent="6"> | </t> | |||
<dl newline="false" spacing="normal"> | ||||
<t hangText="rt (o):"> A Boolean flag which SHALL indicate whether the | <dt>rt (o):</dt> | |||
<dd> A Boolean flag that <bcp14>SHALL</bcp14> indicate whether the | ||||
content component carried by this Source Flow corresponds to real-time | content component carried by this Source Flow corresponds to real-time | |||
streaming media, or non-real-time content. When set to "true", it SHALL be | streaming media or non-real-time content. When set to "true", it <bcp14>SHALL </bcp14> be | |||
an indication of real-time content, and when absent or set to "false", it | an indication of real-time content, and when absent or set to "false", it | |||
SHALL be an indication of non-real-time (NRT) content.</t> | <bcp14>SHALL</bcp14> be an indication of non-real-time (NRT) content.</dd> | |||
<dt>minBufferSize (o):</dt> | ||||
<t hangText="minBufferSize (o):"> A 32-bit unsigned integer which SHALL | <dd> A 32-bit unsigned integer that <bcp14>SHALL</bcp14> | |||
represent, in kilobytes, the minimum required storage size of the receiver | represent, in kilobytes, the minimum required storage size of the receiver | |||
transport buffer, for the parent LCT channel of this Source Flow. The | transport buffer for the parent LCT channel of this Source Flow. The | |||
buffer holds the data belonging to a Source Object till its complete | buffer holds the data belonging to a source object until its complete | |||
reception. This attribute is only applicable when rt = "true".</t> | reception. This attribute is only applicable when rt = "true".</dd> | |||
<dt/> | ||||
<t>A service which chooses not to signal this attribute relies on | <dd>A service that chooses not to signal this attribute relies on | |||
receiver implementation, which must discard the received data beyond | the receiver implementation, which must discard the received data beyond | |||
its buffering capability. Such discarding of data will impact the | its buffering capability. Such discarding of data will impact the | |||
service quality.</t> | service quality.</dd> | |||
<dt>EFDT (cm):</dt> | ||||
<t hangText="EFDT (cm):"> when present, SHALL contain a single instance of | <dd> When present, <bcp14>SHALL</bcp14> contain a single instance of | |||
an FDT-Instance element per RFC 6726 FLUTE <xref target="RFC6726"/>, which | an FDT-Instance element per RFC 6726 FLUTE <xref target="RFC6726" format="def | |||
MAY contain the optional FDT extensions as defined in <xref | ault"/>, which | |||
target="sect-4.1"/>. The optional EFDT element MAY only be present for File | <bcp14>MAY</bcp14> contain the optional FDT extensions as defined in <xref ta | |||
Mode of delivery. In File Mode, it SHALL be present if this Source Flow | rget="sect-4.1" format="default"/>. The optional EFDT element <bcp14>MAY</bcp14> | |||
transports streaming media segments.</t> | only be present for File | |||
Mode of delivery. In File Mode, it <bcp14>SHALL</bcp14> be present if this So | ||||
<t hangText="contentType (o):"> A string that SHALL represent the media | urce Flow | |||
type for the media content. It SHALL obey the semantics of the Content-Type | transports streaming media segments.</dd> | |||
header as specified by HTTP/1.1 protocol in RFC 7231 <xref | <dt>contentType (o):</dt> | |||
target="RFC7231"/>. This document does not define any new contentType | <dd> A string that <bcp14>SHALL</bcp14> represent the media | |||
strings. In its absence, the signalling of media type for the media content | type for the media content. It <bcp14>SHALL</bcp14> obey the semantics of the | |||
is beyond the scope of this document.</t> | Content-Type | |||
header as specified by the HTTP/1.1 protocol in RFC 7231 <xref target="RFC723 | ||||
1" format="default"/>. This document does not define any new contentType | ||||
strings. In its absence, the signaling of media type for the media content | ||||
is beyond the scope of this document.</dd> | ||||
<dt>applicationMapping (m):</dt> | ||||
<dd> A set of identifiers that provide an application-specific | ||||
mapping of the received Application Objects to the Source Flows. For | ||||
example, for DASH, this would provide the mapping of a Source Flow | ||||
to a specific DASH Representation from a Media Presentation | ||||
Description (MPD), the latter identified by its Representation and | ||||
corresponding Adaptation Set and Period IDs.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sect-3.3" numbered="true" toc="default"> | ||||
<name>Session Metadata for Repair Flows</name> | ||||
<t hangText="applicationMapping (m):"> A set of identifiers that provide an | <dl> | |||
application-specific mapping of the received Application Objects to the | ||||
Source Flows. For example, for DASH, this would provide the mapping a | ||||
Source Flow to a specific DASH representation from a Media Presentation | ||||
Description (MPD), the latter identified by its Representation and | ||||
corresponding Adaptation Set and Period IDs.</t> | ||||
</list> | <dt>minBuffSize (o): | |||
</dt> | ||||
<dd> | ||||
<t> | ||||
A 32-bit unsigned integer whose value <bcp14>SHALL</bcp14> | ||||
represent a required size of the receiver transport buffer for | ||||
AL&nbhy;FEC decoding processing. When present, this attribute | ||||
<bcp14>SHALL</bcp14> indicate the minimum buffer size that is | ||||
required to handle all associated objects that are assigned to a | ||||
super-object, i.e., a delivery object formed by the concatenation of | ||||
multiple FEC transport objects in order to bundle these FEC | ||||
transport objects for AL-FEC protection. | ||||
</t> | </t> | |||
<t> | ||||
A service that chooses not to signal this attribute relies on the receiver | ||||
implementation, which must discard the received repair data beyond its | ||||
buffering capability. Such discarding of data will impact the service | ||||
quality.</t> | ||||
</dd> | ||||
</section> | <dt>fecOTI (m): | |||
</dt> | ||||
<section title="Session metadata for Repair Flows" anchor="sect-3.3"><t> | <dd>A parameter consisting of the concatenation of Common and | |||
minBuffSize (o): A 32-bit unsigned integer whose value SHALL | Scheme-Specific FEC Object Transmission Information (FEC OTI) as | |||
represent a required size of the receiver transport buffer for AL-FEC | defined in Sections <xref target="RFC6330" sectionFormat="bare" | |||
decoding processing. When present, this attribute SHALL indicate the | section="3.3.2"/> and <xref target="RFC6330" sectionFormat="bare" | |||
minimum buffer size that is required to handle all associated objects | section="3.3.3"/> of <xref target="RFC6330" format="default"/> and | |||
that are assigned to a super-object i.e. a delivery object formed by | that corresponds to the delivery objects carried in the Source Flow | |||
the concatenation of multiple FEC transport objects in order to | to which this Repair Flow is associated, with the following | |||
bundle these FEC transport objects for AL-FEC protection.</t> | qualification: the 40-bit Transfer Length (F) field may either | |||
represent the actual size of the object, or it is encoded as all | ||||
<t> | zeroes. In the latter case, the FEC transport object size either is | |||
A service which chooses not to signal this attribute relies on | unknown or cannot be represented by this attribute. In other words, | |||
receiver implementation, which must discard the received repair data | for the all-zeroes format, the delivery objects in the Source Flow | |||
beyond its buffering capability. Such discarding of data will impact | correspond to streaming content, either a live Service whereby | |||
the service quality.</t> | content encoding has not yet occurred at the time this session data | |||
was generated or pre-recorded streaming content whose delivery | ||||
<t> | object sizes, albeit known at the time of session data generation, | |||
fecOTI (m): A parameter consisting of the concatenation of Common | are variable and cannot be represented as a single value by the | |||
and Scheme-Specific FEC Object Transmission Information (FEC OTI) as | fecOTI attribute. | |||
defined in Sections 3.3.2 and 3.3.3 of RFC 6330 <xref target="RFC6330"/>, and | </dd> | |||
which | ||||
corresponds to the delivery objects carried in the Source Flow to | ||||
which this Repair Flow is associated, with the following | ||||
qualification. The 40-bit Transfer Length (F) field may either | ||||
represent the actual size of the object, or it is encoded as all | ||||
zeroes. In the latter case, it means that the FEC transport object | ||||
size is either unknown, or cannot be represented by this attribute. | ||||
In other words, for the all-zeroes format, the delivery objects in | ||||
the Source flow correspond to streaming content - either a live | ||||
Service whereby content encoding has not yet occurred at the time | ||||
this session data was generated, or pre-recorded streaming content | ||||
whose delivery object sizes, albeit known at the time of session data | ||||
generation, are variable and cannot be represented as a single value | ||||
by the fecOTI attribute. | ||||
<list style="hanging" hangIndent="6"> | ||||
<t hangText="ptsi (m):"> TSI value(s) of each Source Flow protected by this | ||||
Repair Flow.</t> | ||||
<t hangText="mappingTOIx (o):"> Values of the constant X for use in | ||||
deriving the TOI of the delivery object of each protected Source Flow from | ||||
the TOI of the FEC (super-)object. The default value is "1". Multiple | ||||
mappingTOIx values MAY be provided for each protected Source Flow, | ||||
depending upon the usage of FEC (super-)object.</t> | ||||
<t hangText="mappingTOIy (o):"> The corresponding constant Y to each | <dt>ptsi (m): | |||
mappingTOIx, when present, for use in deriving the parent SourceTOI value | </dt> | |||
from the above equation. The default value is "0".</t> | <dd>TSI value(s) of each Source Flow protected by this Repair Flow. | |||
</dd> | ||||
</list> | <dt>mappingTOIx (o): | |||
</t> | </dt> | |||
<dd>Values of the constant X for use in deriving the TOI of the | ||||
delivery object of each protected Source Flow from the TOI of the | ||||
FEC (super-)object. The default value is "1". Multiple mappingTOIx | ||||
values <bcp14>MAY</bcp14> be provided for each protected Source | ||||
Flow depending upon the usage of FEC (super-)object. | ||||
</dd> | ||||
</section> | <dt>mappingTOIy (o): | |||
</dt> | ||||
<dd>The corresponding constant Y to each mappingTOIx, when present, | ||||
for use in deriving the parent SourceTOI value from the above | ||||
equation. The default value is "0". | ||||
</dd> | ||||
</dl> | ||||
</section> | </section> | |||
</section> | ||||
<section title="Delivery Object Mode" anchor="sect-4"><t> | <section anchor="sect-4" numbered="true" toc="default"> | |||
<name>Delivery Object Mode</name> | ||||
<t> | ||||
ROUTE provides several different delivery object modes, and one of | ROUTE provides several different delivery object modes, and one of | |||
these modes may suite the application needs better for a given | these modes may suit the application needs better for a given | |||
transport session. A delivery object is self-contained for the | Transport Session. A delivery object is self contained for the | |||
application, typically associated with certain properties, metadata | application, typically associated with certain properties, metadata, | |||
and timing-related information that are of relevance for the | and timing-related information relevant to the | |||
application. The signaling of the delivery object mode is done on an | application. The signaling of the delivery object mode is done on an | |||
object based using Codepoint as specified in <xref target="sect-2.1"/>.</t> | object basis using Codepoint as specified in <xref target="sect-2.1" format=" | |||
default"/>.</t> | ||||
<section anchor="sect-4.1" numbered="true" toc="default"> | ||||
<section title="File Mode" anchor="sect-4.1"><t> | <name>File Mode</name> | |||
File mode uses an out-of-band Extended FDT (EDFT) signaling for | <t> | |||
File Mode uses an out-of-band Extended FDT (EFDT) signaling for | ||||
recovery of delivery objects with the following extensions and | recovery of delivery objects with the following extensions and | |||
considerations.</t> | considerations.</t> | |||
<section anchor="sect-4.1.1" numbered="true" toc="default"> | ||||
<name>Extensions to FDT</name> | ||||
<t> | ||||
The following extensions are specified to FDT, as specified in RFC 6726 | ||||
<xref target="RFC6726" format="default"/>. An Extended FDT-Instance is an | ||||
instance of FLUTE FDT, as specified in <xref target="RFC6726" | ||||
format="default"/>, plus optionally one or more of the following | ||||
extensions: | ||||
<section title="Extensions to FDT" anchor="sect-4.1.1"><t> | </t> | |||
Following extensions are specified to FDT specified in RFC 6726 | <dl newline="false" spacing="normal"> | |||
<xref target="RFC6726"/>. An Extended FDT Instance is an instance of FLUTE FD | <dt>efdtVersion:</dt> | |||
T as | <dd> A value that <bcp14>SHALL</bcp14> represent the version of | |||
specified in <xref target="RFC6726"/>, plus optionally one or more of the fol | this Extended FDT-Instance.</dd> | |||
lowing | <dt>maxExpiresDelta:</dt> | |||
extensions. | <dd>Let "tp" represent the wall clock time at | |||
<list style="hanging" hangIndent="6"> | ||||
<t hangText="efdtVersion:"> A value that SHALL represent the version of | ||||
this Extended FDT Instance.</t> | ||||
<t hangText="maxExpiresDelta:"> Let "tp" represent the wall clock time at | ||||
the receiver when the receiver acquires the first ROUTE packet carrying | the receiver when the receiver acquires the first ROUTE packet carrying | |||
data of the object described by this Extended FDT Instance. | data of the object described by this Extended FDT-Instance. | |||
maxExpiresDelta, when present, SHALL represent a time interval which when | maxExpiresDelta, when present, <bcp14>SHALL</bcp14> represent a time interval | |||
added to "tp" SHALL represent the expiration time of the associated | that when | |||
Extended FDT Instance "te". The time interval is expressed in number of | added to "tp" <bcp14>SHALL</bcp14> represent the expiration time of the assoc | |||
iated | ||||
Extended FDT-Instance "te". The time interval is expressed in number of | ||||
seconds. When maxExpiresDelta is not present, the expiration time of the | seconds. When maxExpiresDelta is not present, the expiration time of the | |||
Extended FDT Instance SHALL be given by the sum of a) the value of the ERT | Extended FDT-Instance <bcp14>SHALL</bcp14> be given by the sum of a) the valu e of the ERT | |||
field in the EXT_TIME LCT header extension in the first ROUTE packet | field in the EXT_TIME LCT header extension in the first ROUTE packet | |||
carrying data of that file, and b) the current receiver time when parsing | carrying data of that file, and b) the current receiver time when parsing | |||
the packet header of that ROUTE packet. See Sections 5.4 and 6.3.3 on | the packet header of that ROUTE packet. See Sections <xref target="sect-5.4" | |||
additional rules for deriving the Extended FDT Instance expiration | format="counter"/> and <xref target="sect-6.3.3" format="counter"/> on | |||
time. Hence te__= tp + maxExpiresDelta</t> | additional rules for deriving the Extended FDT-Instance expiration | |||
time. Hence, <tt>te = tp + maxExpiresDelta</tt> | ||||
</dd> | ||||
<t hangText="maxTransportSize:"> An attribute that SHALL represent the | <dt>maxTransportSize:</dt> | |||
<dd> An attribute that <bcp14>SHALL</bcp14> represent the | ||||
maximum transport size in bytes of any delivery object described by this | maximum transport size in bytes of any delivery object described by this | |||
Extended FDT Instance. This attribute SHALL be present if a) the | Extended FDT-Instance. This attribute <bcp14>SHALL</bcp14> be present if a) t | |||
fileTemplate is present in Extended FDT-Instance; or b) one or more File | he | |||
elements, if present in this Extended FDT Instance, do not include the | fileTemplate is present in Extended FDT-Instance, or b) one or more File | |||
elements, if present in this Extended FDT-Instance, do not include the | ||||
Transfer-Length attribute. When maxTransportSize is not present, the | Transfer-Length attribute. When maxTransportSize is not present, the | |||
maximum transport size is not signaled, while other signalling such as the | maximum transport size is not signaled, while other signaling such as the | |||
Transfer-Length attribute signal the exact transfer length of the | Transfer-Length attribute signal the exact Transfer Length of the | |||
object.</t> | object.</dd> | |||
<dt>fileTemplate:</dt> | ||||
<t hangText="fileTemplate:"> A string value, which when present and in | <dd>A string value, which when present and in | |||
conjunction with parameter substitution, is used in deriving the | conjunction with parameter substitution, is used in deriving the | |||
Content-Location attribute, for the delivery object described by this | Content-Location attribute for the delivery object described by this | |||
Extended FDT Instance. It SHALL include the "$TOI$" identifier. Each | Extended FDT-Instance. It <bcp14>SHALL</bcp14> include the "$TOI$" identifier | |||
identifier MAY be suffixed as needed by specific file names, within the | . Each | |||
enclosing '$' characters following this prototype: %0[width]d</t> | identifier <bcp14>MAY</bcp14> be suffixed as needed by specific file names wi | |||
thin the | ||||
</list> | enclosing '$' characters following this prototype: <tt>%0[width]d</tt> | |||
</t> | </dd> | |||
</dl> | ||||
<t> | <t> | |||
The width parameter is an unsigned integer that provides the minimum | The width parameter is an unsigned integer that provides the minimum | |||
number of characters to be printed. If the value to be printed is | number of characters to be printed. If the value to be printed is | |||
shorter than this number, the result SHALL be padded with leading | shorter than this number, the result <bcp14>SHALL</bcp14> be padded with lead ing | |||
zeroes. The value is not truncated even if the result is larger. When | zeroes. The value is not truncated even if the result is larger. When | |||
no format tag is present, a default format tag with width=1 SHALL be | no format tag is present, a default format tag with width=1 <bcp14>SHALL</bcp 14> be | |||
used.</t> | used.</t> | |||
<t> | ||||
<t> | Strings other than identifiers <bcp14>SHALL</bcp14> only contain characters t | |||
Strings other than identifiers SHALL only contain characters that are | hat are | |||
permitted within URIs according to RFC 3986 <xref target="RFC3986"/>.</t> | permitted within URIs according to RFC 3986 <xref target="RFC3986" format="de | |||
fault"/>.</t> | ||||
<t> | <t> | |||
$$ Is an escape sequence in fileTemplate value, i.e. "$$" is | <tt>$$</tt> is an escape sequence in fileTemplate value, i.e., "$$" is | |||
non-recursively replaced with a single "$"</t> | non-recursively replaced with a single "$".</t> | |||
<t> | ||||
<t> | ||||
The usage of fileTemplate is described in Sender and Receiver | The usage of fileTemplate is described in Sender and Receiver | |||
operations in Sections 5.4 and 6.3, respectively.</t> | operations in Sections <xref target="sect-5.4" format="counter"/> and <xref t | |||
arget="sect-6.3" format="counter"/>, respectively.</t> | ||||
</section> | </section> | |||
<section anchor="sect-4.1.2" numbered="true" toc="default"> | ||||
<section title="Constraints on Extended FDT" anchor="sect-4.1.2"><t> | <name>Constraints on Extended FDT</name> | |||
The Extended FDT Instance SHALL conform to an FDT Instance according | <t> | |||
to RFC 6726 <xref target="RFC6726"/>, with the following constraints: at leas | The Extended FDT-Instance <bcp14>SHALL</bcp14> conform to an FDT-Instance acc | |||
t one | ording | |||
File element and the @Expires attribute SHALL be present.</t> | to RFC 6726 <xref target="RFC6726" format="default"/> with the following cons | |||
traints: at least one | ||||
<t> | File element and the @Expires attribute <bcp14>SHALL</bcp14> be present.</t> | |||
Content encoding MAY be used for delivery of any file described by an | <t> | |||
FDT-Instance.File element in the Extended FDT Instance. The content | Content encoding <bcp14>MAY</bcp14> be used for delivery of any file describe | |||
encoding defined in the present document is gzip <xref target="RFC1952"/>. Wh | d by an | |||
en content | FDT-Instance.File element in the Extended FDT-Instance. The content | |||
encoding defined in the present document is gzip <xref target="RFC1952" forma | ||||
t="default"/>. When content | ||||
encoding is used, the File@Content-Encoding and File@Content-Length | encoding is used, the File@Content-Encoding and File@Content-Length | |||
attributes SHALL be present in the Extended FDT Instance.</t> | attributes <bcp14>SHALL</bcp14> be present in the Extended FDT-Instance.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-4.2" numbered="true" toc="default"> | ||||
</section> | <name>Entity Mode</name> | |||
<t> | ||||
<section title="Entity Mode" anchor="sect-4.2"><t> | ||||
For Entity Mode, the following applies:</t> | For Entity Mode, the following applies:</t> | |||
<t><list style="symbols"><t>Delivery Object metadata SHALL be expressed i | <ul spacing="normal"> | |||
n the form of entity | <li>Delivery object metadata <bcp14>SHALL</bcp14> be expressed in | |||
headers as defined in HTTP/1.1, and which correspond to one or | the form of entity headers as defined in HTTP/1.1, which correspond | |||
more of the representation header fields, payload header fields | to one or more of the representation header fields, payload header | |||
and response header fields as defined in Sections 3.1, 3.3 and 7, | fields, and response header fields as defined in Sections <xref | |||
respectively, of RFC 7231. Additionally, a Digest HTTP response | target="RFC7231" section="3.1" sectionFormat="bare"/>, <xref | |||
header <xref target="RFC7231"/> MAY be included to enable a receiver to ve | target="RFC7231" section="3.3" sectionFormat="bare"/>, and <xref | |||
rify | target="RFC7231" section="7" sectionFormat="bare"/>, respectively, of | |||
the integrity of the multicast transport object.</t> | <xref target="RFC7231"/>.</li> | |||
<li>The entity headers sent along with the delivery object provide all | ||||
<t>The entity headers sent along with the delivery object provide all | information about that multicast transport object.</li> | |||
information about that multicast transport object.</t> | <li> | |||
<t>Sending a media object (if the object is chunked) in Entity Mode | ||||
<t>Sending a media object (if the object is chunked) in Entity Mode | may result in one of the following options:</t> | |||
may result in one of the following options:<list style="symbols"><t>If the | <ul spacing="normal"> | |||
length of the chunked object is known at sender, the | <li><t>If the length of the chunked object is known at the sender, | |||
ROUTE Entity Mode delivery object MAY be sent without using | the | |||
HTTP/1.1 chunked transfer coding, i.e. the object starts with | ROUTE Entity Mode delivery object <bcp14>MAY</bcp14> be sent without usi | |||
an HTTP header containing the Content Length field, followed | ng | |||
by the concatenation of CMAF chunks:</t> | HTTP/1.1 chunked transfer coding, i.e., the object starts with | |||
an HTTP header containing the Content Length field followed | ||||
</list> | by the concatenation of CMAF Chunks:</t> | |||
</t> | ||||
</list> | ||||
</t> | ||||
<figure><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
|HTTP Header+Length||---chunk ----||---chunk ----||---chunk -- | |HTTP Header+Length||---chunk ----||---chunk ----||---chunk -- | |||
--||---chunk ----| | --||---chunk ----| | |||
]]></artwork> | ]]></artwork> | |||
-||---chunk ----| | </li> | |||
</figure> | <li> | |||
<t><list style="empty" hangIndent="3"> | <t>If the length of the chunked object is unknown at the sender wh | |||
<t><list style="symbols"><t>If the length of the chunked object is unknow | en | |||
n at sender when | ||||
starting to send the object, HTTP/1.1 chunked transfer coding | starting to send the object, HTTP/1.1 chunked transfer coding | |||
format SHALL be used:</t> | format <bcp14>SHALL</bcp14> be used:</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
</list> | |HTTP Header||Separator+Length||---chunk ---- | |||
</t> | ||Separator+Length||---chunk ----||Separator+Length||---chunk | |||
----||Separator+Length||---chunk ----||Separator+Length=0| | ||||
</list> | ||||
</t> | ||||
<figure><artwork><![CDATA[ | ||||
|HTTP Header||Separator+Length||---chunk ---- | ||||
||Separator+Length||---chunk ----||Separator+Length||---chunk | ||||
----||Separator+Length||---chunk ----||Separator+Length=0| | ||||
]]></artwork> | ]]></artwork> | |||
---||Separator+Length||---chunk ----||Separator+Length=0| | ||||
</figure> | ||||
<t><list style="hanging" hangIndent="5"><t> | ||||
Note, however, that it is not required to send a CMAF chunk in | ||||
exactly one HTTP chunk.</t> | ||||
</list> | <t>Note, however, that it is not required to send a CMAF Chunk in | |||
</t> | exactly one HTTP chunk.</t> | |||
</li> | ||||
</section> | </ul> | |||
</li> | ||||
</ul> | ||||
</section> | ||||
<section title="Unsigned Package Mode" anchor="sect-4.3"><t> | <section anchor="sect-4.3" numbered="true" toc="default"> | |||
<name>Unsigned Package Mode</name> | ||||
<t> | ||||
In this delivery mode, the delivery object consists of a group of | In this delivery mode, the delivery object consists of a group of | |||
files that are packaged for delivery only. If applied, the client is | files that are packaged for delivery only. If applied, the client is | |||
expected to unpack the package and provide each file as an | expected to unpack the package and provide each file as an | |||
independent object to the application. Packaging is supported by | independent object to the application. Packaging is supported by | |||
Multipart Multipurpose Internet Mail Extensions (MIME) <xref target="RFC2557" />, | Multipart Multipurpose Internet Mail Extensions (MIME) <xref target="RFC2557" format="default"/>, | |||
where objects are packaged into one document for transport, with | where objects are packaged into one document for transport, with | |||
Content-Type set to multipart/related. When binary files are | Content-Type set to multipart/related. When binary files are | |||
included in the package, Content-Transfer-Encoding of "binary" | included in the package, Content-Transfer-Encoding of "binary" | |||
should be used for those files.</t> | should be used for those files.</t> | |||
</section> | ||||
</section> | <section anchor="sect-4.4" numbered="true" toc="default"> | |||
<name>Signed Package Mode</name> | ||||
<section title="Signed Package Mode" anchor="sect-4.4"><t> | <t> | |||
In Signed Package Mode delivery, the delivery object consists of a | In Signed Package Mode delivery, the delivery object consists of a | |||
group of files that are packaged for delivery, and the package | group of files that are packaged for delivery, and the package | |||
includes one or more signatures for validation. Signed packaging is | includes one or more signatures for validation. Signed packaging is | |||
supported by RFC 8551 Secure MIME (S/MIME) <xref target="RFC8551"/>, where ob jects | supported by RFC 8551 Secure MIME (S/MIME) <xref target="RFC8551" format="def ault"/>, where objects | |||
are packaged into one document for transport and the package includes | are packaged into one document for transport and the package includes | |||
objects necessary for validation of the package.</t> | objects necessary for validation of the package.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-5" numbered="true" toc="default"> | ||||
</section> | <name>Sender Operation</name> | |||
<section anchor="sect-5.1" numbered="true" toc="default"> | ||||
<section title="Sender Operation" anchor="sect-5"><section title="Usage o | <name>Usage of ALC and LCT for Source Flow</name> | |||
f ALC and LCT for Source Flow" anchor="sect-5.1"><t> | <t> | |||
ROUTE Source Flow carry the source data as specified in RFC 5775 | ROUTE Source Flow carries the source data as specified in RFC 5775 | |||
<xref target="RFC5775"/>. There are several special considerations that ROUTE | <xref target="RFC5775" format="default"/>. There are several special consider | |||
ations that ROUTE | ||||
introduces to the usage of the LCT building block as outlined in the | introduces to the usage of the LCT building block as outlined in the | |||
following:</t> | following:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>ROUTE limits the usage of the LCT building bl | <li>ROUTE limits the usage of the LCT building block to a single | |||
ock to a single | channel per session. Congestion control is thus sender driven in | |||
channel per session. Congestion control is thus sender-driven in | ROUTE. It also signifies that there is no specific congestion-control-relat | |||
ROUTE. It also signifies that there is no specific congestion | ed signaling from the sender to the receiver; the CCI | |||
control related signalling from sender to the receiver; the CCI | ||||
field is either set to 0 or used for other purposes as specified | field is either set to 0 or used for other purposes as specified | |||
in <xref target="sect-2.1"/>. The functionality of receiver-driven layered | in <xref target="sect-2.1" format="default"/>. The functionality of receive r-driven layered | |||
multicast may still be offered by the application, allowing the | multicast may still be offered by the application, allowing the | |||
receiver application to select the appropriate delivery session | receiver application to select the appropriate delivery session | |||
based on the bandwidth requirement of that session.</t> | based on the bandwidth requirement of that session.</li> | |||
</ul> | ||||
</list> | <t> | |||
</t> | Further, the following details apply to LCT:</t> | |||
<ul spacing="normal"> | ||||
<t> | <li> | |||
Further, following details apply to LCT:</t> | <t>The Layered Coding Transport (LCT) Building Block as defined in | |||
RFC 5651 <xref target="RFC5651" format="default"/> is used with the followi | ||||
<t><list style="symbols"><t>The Layered Coding Transport (LCT) Building B | ng constraints:</t> | |||
lock as defined in | <ul spacing="normal"> | |||
RFC 5651 <xref target="RFC5651"/> is used with the following constraints:<l | <li>The TSI in the LCT header <bcp14>SHALL</bcp14> be set equal to | |||
ist style="symbols"><t>The TSI in the LCT header SHALL be set equal to the value | the value of | |||
of | the stsi attribute in <xref target="sect-3.2" format="default"/>.</li> | |||
the stsi attribute in <xref target="sect-3.2"/>.</t> | <li>The Codepoint (CP) in the LCT header <bcp14>SHALL</bcp14> be u | |||
sed to signal | ||||
<t>The Codepoint (CP) in the LCT header SHALL be used to signal | the applied formatting as defined in the signaling metadata.</li> | |||
the applied formatting as defined in the signaling metadata.</t> | <li> | |||
<t>In accordance with ALC, a source FEC Payload ID header is use | ||||
<t>In accordance to ALC, a source FEC Payload ID header is used to | d to | |||
identify, for FEC purposes, the encoding symbols of the | identify, for FEC purposes, the encoding symbols of the | |||
delivery object, or a portion thereof, carried by the | delivery object, or a portion thereof, carried by the | |||
associated ROUTE packet. This information may be sent in | associated ROUTE packet. This information may be sent in | |||
several ways: | several ways: | |||
<list style="symbols"> | </t> | |||
<ul spacing="normal"> | ||||
<t>As a simple new null FEC scheme with the following usage: | <li> | |||
<t>As a simple new null FEC scheme with the following usage: | ||||
<list style="symbols"> | ||||
<t>The value of the source FEC Payload ID header SHALL be set to | ||||
0, in case the ROUTE packet contains the entire delivery object, or | ||||
</t> | ||||
<t>The value of the source FEC Payload ID header SHALL be set as a | </t> | |||
<ul spacing="normal"> | ||||
<li>The value of the source FEC Payload ID header <bcp14>S | ||||
HALL</bcp14> be set to | ||||
0 in case the ROUTE packet contains the entire delivery object, or | ||||
</li> | ||||
<li>The value of the source FEC Payload ID header <bcp14>S | ||||
HALL</bcp14> be set as a | ||||
direct address (start offset) corresponding to the starting byte | direct address (start offset) corresponding to the starting byte | |||
position of the portion of the object carried in this packet using a | position of the portion of the object carried in this packet using a | |||
32-bit field. </t> | 32-bit field. </li> | |||
</ul> | ||||
</list> | </li> | |||
</t> | <li>In a compatible manner to RFC 6330 <xref target="RFC6330"/ | |||
> where the SBN and ESI | ||||
<t>In a compatible manner to RFC 6330 [RFC6330] where the SBN and ESI | defines the start offset together with the symbol size T.</li> | |||
defines the start offset together with the symbol size T.</t> | <li>The signaling metadata provides the appropriate parameters | |||
to | ||||
<t>The signaling metadata provides the appropriate parameters to | indicate any of the above modes using the srcFecPayloadId attribute.</li> | |||
indicate any of the above modes using the srcFecPayloadId attribute.</t> | </ul> | |||
</li> | ||||
</list> | </ul> | |||
</t> | </li> | |||
<li> | ||||
</list> | <t>The LCT Header EXT_TIME extension as defined in RFC 5651 <xref ta | |||
</t> | rget="RFC5651" format="default"/> | |||
<bcp14>MAY</bcp14> be used by the sender in the following manner:</t> | ||||
<t>The LCT Header EXT_TIME extension as defined in RFC 5651 <xref target= | <ul spacing="normal"> | |||
"RFC5651"/> | <li>The Sender Current Time (SCT), depending on the application, | |||
MAY be used by the sender in the following manner:<list style="symbols"><t> | <bcp14>MAY</bcp14> be used to occasionally or frequently signal the send | |||
The Sender Current Time (SCT), depending on the application, | er | |||
MAY be used to occasionally or frequently signal the sender | current time possibly for reliever time synchronization.</li> | |||
current time, possibly for reliever time synchronization.</t> | <li>The Expected Residual Time (ERT) <bcp14>MAY</bcp14> be used to | |||
indicate the | ||||
<t>The Expected Residual Time (ERT) MAY be used to indicate the | ||||
expected remaining time for transmission of the current | expected remaining time for transmission of the current | |||
object, to optimize detection of a lost delivery object.</t> | object in order to optimize detection of a lost delivery object.</li> | |||
<li>The Sender Last Changed (SLC) flag is typically not utilized | ||||
<t>The Sender Last Changed (SLC) flag is typically not utilized, | but <bcp14>MAY</bcp14> be used to indicate the addition/removal of Segme | |||
but MAY be used to indicate addition/removal of Segments.</t> | nts.</li> | |||
</ul> | ||||
</list> | </li> | |||
</t> | </ul> | |||
<t> | ||||
</list> | Additional extension headers <bcp14>MAY</bcp14> be used to support real-time | |||
</t> | delivery. Such extension headers are defined in <xref target="sect-2.1" forma | |||
t="default"/>.</t> | ||||
<t> | </section> | |||
Additional extension headers MAY be used to support real-time | <section anchor="sect-5.2" numbered="true" toc="default"> | |||
delivery. Such extension headers are defined in <xref target="sect-2.1"/>.</t | <name>ROUTE Packetization for Source Flow</name> | |||
> | <t> | |||
</section> | ||||
<section title="ROUTE Packetization for Source Flow" anchor="sect-5.2"><t | ||||
> | ||||
The following description of the ROUTE sender operation on the | The following description of the ROUTE sender operation on the | |||
mapping of the Application Object to the ROUTE packet payloads | mapping of the Application Object to the ROUTE packet payloads | |||
logically represents an extension of RFC 5445 <xref target="RFC5445"/>, which | logically represents an extension of RFC 5445 <xref target="RFC5445" format=" | |||
in | default"/>, which in | |||
turn inherits the context, language, declarations and restrictions of | turn inherits the context, language, declarations, and restrictions of | |||
the FEC building block in RFC 5052 <xref target="RFC5052"/>.</t> | the FEC building block in RFC 5052 <xref target="RFC5052" format="default"/>. | |||
</t> | ||||
<t> | <t> | |||
The data carried in the payload of a given ROUTE packet constitute a | The data carried in the payload of a given ROUTE packet constitutes a | |||
contiguous portion of the Application Object. ROUTE source delivery | contiguous portion of the Application Object. ROUTE source delivery | |||
can be considered as a special case of the use of the Compact No-Code | can be considered as a special case of the use of the Compact No-Code | |||
Scheme associated with FEC Encoding ID = 0 according to Sections | Scheme associated with FEC Encoding ID = 0 according to Sections | |||
3.4.1 and 3.4.2 of RFC 5445 <xref target="RFC5445"/>, in which the encoding s | <xref target="RFC5445" sectionFormat="bare" section="3.4.1" /> and <xref targ | |||
ymbol | et="RFC5445" sectionFormat="bare" section="3.4.2"/> of <xref target="RFC5445" fo | |||
size is exactly one byte. As specified in <xref target="sect-2.1"/>, for ROUT | rmat="default"/>, in which the encoding symbol | |||
E | size is exactly one byte. As specified in <xref target="sect-2.1" format="def | |||
Source Flows, the FEC Payload ID SHALL deliver the 32-bit | ault"/>, for ROUTE | |||
Source Flows, the FEC Payload ID <bcp14>SHALL</bcp14> deliver the 32-bit | ||||
start_offset. All receivers are expected to support, at minimum, | start_offset. All receivers are expected to support, at minimum, | |||
operation with this special case of the Compact No-Code FEC.</t> | operation with this special case of the Compact No-Code FEC.</t> | |||
<t> | ||||
<t> | Note that in the event the source object size is greater than 2<sup>32</sup> | |||
Note that in the event the source object size is greater than 2^32 bytes | bytes | |||
(approximately 4.3 GB), the applications (in the broadcaster server and the | (approximately 4.3 GB), the applications (in the broadcaster server and the | |||
receiver) are expected to perform segmentation/re-assembly using methods | receiver) are expected to perform segmentation/reassembly using methods | |||
beyond the scope of this document.</t> | beyond the scope of this document.</t> | |||
<t> | ||||
<t> | Finally, in some special cases, a ROUTE sender <bcp14>MAY</bcp14> need to pro | |||
Finally, in some special cases a ROUTE sender MAY need to produce | duce | |||
ROUTE packets that do not contain any payload. This may be required, | ROUTE packets that do not contain any payload. This may be required, | |||
for example, to signal the end of a session. These data-less packets | for example, to signal the end of a session. These dataless packets | |||
do not contain FEC Payload ID or payload data, but only the LCT | do not contain FEC Payload ID or payload data, but only the LCT | |||
header fields. The total datagram length, conveyed by outer protocol | header fields. The total datagram length, conveyed by outer protocol | |||
headers (e.g., the IP or UDP header), enables receivers to detect the | headers (e.g., the IP or UDP header), enables receivers to detect the | |||
absence of the LCT header, FEC Payload ID and payload data.</t> | absence of the LCT header, FEC Payload ID, and payload data.</t> | |||
<section anchor="sect-5.2.1" numbered="true" toc="default"> | ||||
<section title="Basic ROUTE Packetization" anchor="sect-5.2.1"><t> | <name>Basic ROUTE Packetization</name> | |||
<t> | ||||
In the basic operation, it is assumed that the Application Object is | In the basic operation, it is assumed that the Application Object is | |||
fully available at the ROUTE sender.</t> | fully available at the ROUTE sender.</t> | |||
<ol spacing="normal" type="1"><li>The amount of data to be sent in a s | ||||
<t><list style="numbers"><t>The amount of data to be sent in a single ROU | ingle ROUTE packet is limited | |||
TE packet is limited | ||||
by the maximum transfer unit of the data packets or the size of | by the maximum transfer unit of the data packets or the size of | |||
the remaining data of the Application Object being sent, whichever | the remaining data of the Application Object being sent, whichever | |||
is smaller. The transfer unit is determined either by knowledge of | is smaller. The transfer unit is determined either by knowledge of | |||
underlying transport block sizes or by other constraints.</t> | underlying transport block sizes or by other constraints.</li> | |||
<li>The start_offset field in the LCT header of the ROUTE packet | ||||
<t>The start_offset field in the LCT header of the ROUTE packet | ||||
indicates the byte offset of the carried data in the Application | indicates the byte offset of the carried data in the Application | |||
Object being sent.</t> | Object being sent.</li> | |||
<li>The Close Object flag (B) is set to 1 if this is the last ROUTE | ||||
<t>The Close Object (B) flag is set to 1 if this is the last ROUTE | packet carrying the data of the Application Object.</li> | |||
packet carrying the data of the Application Object.</t> | </ol> | |||
<t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
The order of packet delivery is arbitrary, but in the absence of | The order of packet delivery is arbitrary, but in the absence of | |||
other constraints delivery with increasing start_offset value is | other constraints, delivery with increasing start_offset value is | |||
recommended.</t> | recommended.</t> | |||
</section> | ||||
</section> | <section anchor="sect-5.2.2" numbered="true" toc="default"> | |||
<name>ROUTE Packetization for CMAF Chunked Content</name> | ||||
<section title="ROUTE Packetization for CMAF Chunked Content" anchor="sec | <t> | |||
t-5.2.2"><t> | The following additional guidelines should be followed for ROUTE | |||
Following additional guidelines should be followed for ROUTE | packetization of CMAF Chunked Content in addition to the guidelines of | |||
packetization of CMAF Chunked Content in addition to the guideline of | <xref target="sect-5.2.1"/>:</t> | |||
Section 5.2.1:</t> | <ol spacing="normal" type="1"><li>If it is the first ROUTE packet carr | |||
ying a CMAF Random Access | ||||
<t><list style="numbers"><t>If it is the first ROUTE packet carrying a CM | chunk, except for the first CMAF Chunk in the segment, the | |||
AF Random Access | Codepoint value <bcp14>MAY</bcp14> be set to 10, as specified in the Codep | |||
chunk, except for the first CMAF chunk in the segment, the | oint | |||
Codepoint value MAY be set to 10, as specified in the Codepoint | value table in <xref target="sect-2.1" format="default"/>. The receiver <b | |||
value table in <xref target="sect-2.1"/>. The receiver MAY use this inform | cp14>MAY</bcp14> use this information | |||
ation | for optimization of random access.</li> | |||
for optimization of random access.</t> | <li>As soon as the total length of the media object is known, | |||
potentially with the packaging of the last CMAF Chunk of a | ||||
<t>As soon as the total length of the media object is known, | segment, the EXT_TOL extension header <bcp14>MAY</bcp14> be added to the L | |||
potentially with the packaging of the last CMAF chunk of a | CT | |||
segment, the EXT_TOL extension header MAY be added to the LCT | ||||
header to signal the Transfer Length, so that the receiver may | header to signal the Transfer Length, so that the receiver may | |||
know this information in a timely fashion.</t> | know this information in a timely fashion.</li> | |||
</ol> | ||||
</list> | </section> | |||
</t> | </section> | |||
<section anchor="sect-5.3" numbered="true" toc="default"> | ||||
</section> | <name>Timing of Packet Emission</name> | |||
<t> | ||||
</section> | The sender <bcp14>SHALL</bcp14> use the timing information provided by the | |||
<section title="Timing of Packet Emission" anchor="sect-5.3"><t> | ||||
The sender SHALL use the timing information provided by the | ||||
application to time the emission of packets for a timely reception. | application to time the emission of packets for a timely reception. | |||
This information may be contained in the Application Objects e.g. | This information may be contained in the Application Objects e.g., | |||
DASH Segments and/or the presentation manifest. Hence such packets of | DASH segments and/or the presentation manifest. Hence, such packets of | |||
streaming media with real time constraints SHALL be sent in such a | streaming media with real-time constraints <bcp14>SHALL</bcp14> be sent in su | |||
way to enable their timely reception with respect to the presentation | ch a | |||
way as to enable their timely reception with respect to the presentation | ||||
timeline.</t> | timeline.</t> | |||
</section> | ||||
</section> | <section anchor="sect-5.4" numbered="true" toc="default"> | |||
<name>Extended FDT Encoding for File Mode Sending</name> | ||||
<section title="Extended FDT Encoding for File Mode Sending" anchor="sect | <t> | |||
-5.4"><t> | For File Mode sending:</t> | |||
For File Mode Sending:</t> | <ul spacing="normal"> | |||
<li>The TOI field in the ROUTE packet header <bcp14>SHALL</bcp14> be s | ||||
<t><list style="symbols"><t>The TOI field in the ROUTE packet header SHAL | et such that | |||
L be set such that | ||||
Content-Location can be derived at the receiver according to File | Content-Location can be derived at the receiver according to File | |||
Template substitution specified in <xref target="sect-6.3.1"/>.</t> | Template substitution specified in <xref target="sect-6.3.1" format="defau | |||
lt"/>.</li> | ||||
<t>After sending the first packet with a given TOI value, none of the | <li>After sending the first packet with a given TOI value, none of the | |||
packets pertaining to this TOI SHALL be sent later than the wall | packets pertaining to this TOI <bcp14>SHALL</bcp14> be sent later than the | |||
wall | ||||
clock time as derived from maxExpiresDelta. The EXT_TIME header | clock time as derived from maxExpiresDelta. The EXT_TIME header | |||
with Expected Residual Time (ERT) MAY be used in order to convey | with Expected Residual Time (ERT) <bcp14>MAY</bcp14> be used in order to c | |||
more accurate expiry time.</t> | onvey | |||
more accurate expiry time.</li> | ||||
</list> | </ul> | |||
</t> | </section> | |||
<section anchor="sect-5.5" numbered="true" toc="default"> | ||||
</section> | <name>FEC Framework Considerations</name> | |||
<t> | ||||
<section title="FEC Framework Considerations" anchor="sect-5.5"><t> | ||||
The FEC framework uses concepts of the FECFRAME work as defined in | The FEC framework uses concepts of the FECFRAME work as defined in | |||
RFC 6363 <xref target="RFC6363"/>, as well as the FEC building block, RFC 505 | RFC 6363 <xref target="RFC6363" format="default"/>, as well as the FEC buildi | |||
2 | ng block, RFC 5052 | |||
<xref target="RFC5052"/>, which is adopted in the existing FLUTE/ALC/LCT | <xref target="RFC5052" format="default"/>, which is adopted in the existing F | |||
LUTE/ALC/LCT | ||||
specifications.</t> | specifications.</t> | |||
<t> | ||||
<t> | ||||
The FEC design adheres to the following principles:</t> | The FEC design adheres to the following principles:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>FEC-related information is provided only wher | <li>FEC-related information is provided only where needed.</li> | |||
e needed.</t> | <li>Receivers not capable of this framework can ignore repair packets. | |||
</li> | ||||
<t>Receivers not capable of this framework can ignore repair packets.</t> | <li>The FEC is symbol based with fixed symbol size per protected | |||
Source Flow. The ALC protocol and existing FEC schemes are reused.</li> | ||||
<t>The FEC is symbol-based with fixed symbol size per protected | <li>A FEC Repair Flow provides protection of delivery objects from one | |||
Source Flow. The ALC protocol and existing FEC schemes are reused.</t> | or more Source Flows.</li> | |||
</ul> | ||||
<t>A FEC Repair Flow provides protection of delivery objects from one | <t> | |||
or more Source Flows.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
The FEC-specific components of the FEC framework are:</t> | The FEC-specific components of the FEC framework are:</t> | |||
<ul spacing="normal"> | ||||
<li>FEC Repair Flow declaration including all FEC-specific | ||||
information.</li> | ||||
<t><list style="symbols"><t>FEC Repair Flow declaration including all FEC | <li>A FEC transport object that is the concatenation of a delivery obj | |||
-specific | ect, | |||
information.</t> | padding octets, and size information in order to form a chunk of data that | |||
has a size in symbols of N, where N >= 1.</li> | ||||
<t>FEC transport object that is the concatenation of a delivery object, | <li>A FEC super-object that is the concatenation of one or more FEC | |||
padding octets and size information in order to form an N-symbol-sized | ||||
chunk of data, where N >= 1.</t> | ||||
<t>FEC super-object that is the concatenation of one or more FEC | ||||
transport objects in order to bundle FEC transport objects for FEC | transport objects in order to bundle FEC transport objects for FEC | |||
protection.</t> | protection.</li> | |||
<li>A FEC protocol and packet structure.</li> | ||||
<t>FEC protocol and packet structure.</t> | </ul> | |||
<t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
A receiver needs to be able to recover delivery objects from repair | A receiver needs to be able to recover delivery objects from repair | |||
packets based on available FEC information.</t> | packets based on available FEC information.</t> | |||
</section> | ||||
</section> | <section anchor="sect-5.6" numbered="true" toc="default"> | |||
<name>FEC Transport Object Construction</name> | ||||
<section title="FEC Transport Object Construction" anchor="sect-5.6"><t> | <t> | |||
In order to identify a delivery object in the context of the Repair | In order to identify a delivery object in the context of the repair | |||
protocol, the following information is needed:</t> | protocol, the following information is needed:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>TSI and TOI of the delivery object. In this c | <li>TSI and TOI of the delivery object. In this case, the FEC object | |||
ase, the FEC object | corresponds to the (entire) delivery object.</li> | |||
corresponds to the (entire) delivery object.</t> | <li>Octet range of the delivery object, i.e., start offset within the | |||
delivery | ||||
<t>Octet range of the delivery object, i.e. start offset within the deliv | ||||
ery | ||||
object and number of subsequent and contiguous octets of delivery object | object and number of subsequent and contiguous octets of delivery object | |||
that constitutes the FEC object (i.e., the FEC-protected portion of the | that constitutes the FEC object (i.e., the FEC-protected portion of the | |||
source object). In this case, the FEC object corresponds to a contiguous | source object). In this case, the FEC object corresponds to a contiguous | |||
byte range portion of the delivery object.</t> | byte range portion of the delivery object.</li> | |||
</ul> | ||||
</list> | <t> | |||
</t> | ||||
<t> | ||||
Typically, for real-time object delivery with smaller delivery object | Typically, for real-time object delivery with smaller delivery object | |||
sizes, the first mapping is applied; i.e., the delivery object is an | sizes, the first mapping is applied, i.e., the delivery object is a | |||
FEC object.</t> | FEC object.</t> | |||
<t> | ||||
<t> | ||||
Assuming that the FEC object is the delivery object, for each | Assuming that the FEC object is the delivery object, for each | |||
delivery object, the associated FEC transport object is comprised of | delivery object, the associated FEC transport object is comprised of | |||
the concatenation of the delivery object, padding octets (P) and the | the concatenation of the delivery object, padding octets (P), and the | |||
FEC object size (F) in octets, where F is carried in a 4-octet field.</t> | FEC object size (F) in octets, where F is carried in a 4-octet field.</t> | |||
<t> | ||||
<t> | The FEC transport object size S, in FEC encoding symbols, <bcp14>SHALL</bcp14 | |||
The FEC transport object size S, in FEC encoding symbols, SHALL be an | > be an | |||
integer multiple of the symbol size Y. S is determined from the session | integer multiple of the symbol size Y. S is determined from the session | |||
information and/or the repair packet headers.</t> | information and/or the repair packet headers.</t> | |||
<t> | ||||
<t> | ||||
F is carried in the last 4 octets of the FEC transport object. | F is carried in the last 4 octets of the FEC transport object. | |||
Specifically, let:</t> | Specifically, let:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>F be the size of the delivery object in octet | <li>F be the size of the delivery object in octets,</li> | |||
s,</t> | <li>F' be the F octets of data of the delivery object,</li> | |||
<li>f' denote the four octets of data carrying the value of F in | ||||
<t>F' be the F octets of data of the delivery object,</t> | network octet order (high-order octet first),</li> | |||
<li>S be the size of the FEC transport object with S=ceil((F+4)/Y), | ||||
<t>f' denote the four octets of data carrying the value of F in | ||||
network octet order (high-order octet first),</t> | ||||
<t>S be the size of the FEC transport object with S=ceil((F+4)/Y), | ||||
where the ceil() function rounds the result upward to its nearest | where the ceil() function rounds the result upward to its nearest | |||
integer,</t> | integer,</li> | |||
<li>P' be S*Y-4-F octets of data, i.e., padding placed between the | ||||
<t>P' be S*Y-4-F octets of data, i.e. padding placed between the | ||||
delivery object and the 4-byte field conveying the value of F and | delivery object and the 4-byte field conveying the value of F and | |||
located at the end of the FEC transport object, and</t> | located at the end of the FEC transport object, and</li> | |||
<li>O' be the concatenation of F', P', and f'.</li> | ||||
<t>O' be the concatenation of F', P' and f'.</t> | </ul> | |||
<t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
O' then constitutes the FEC transport object of size S*Y octets. Note | O' then constitutes the FEC transport object of size S*Y octets. Note | |||
that padding octets and the object size F are not sent in source | that padding octets and the object size F are not sent in source | |||
packets of the delivery object, but are only part of an FEC transport | packets of the delivery object but are only part of a FEC transport | |||
object that FEC decoding recovers in order to extract the FEC object | object that FEC decoding recovers in order to extract the FEC object | |||
and thus the delivery object or portion of the delivery object that | and thus the delivery object or portion of the delivery object that | |||
constitutes the FEC object. In the above context, the FEC transport | constitutes the FEC object. In the above context, the FEC transport | |||
object size in symbols is S.</t> | object size in symbols is S.</t> | |||
<t> | ||||
<t> | The general information about a FEC transport object that is | |||
The general information about an FEC transport object that is | conveyed to a FEC-enabled receiver is the source TSI, source TOI, and | |||
conveyed to an FEC-enabled receiver is the source TSI, source TOI and | ||||
the associated octet range within the delivery object comprising the | the associated octet range within the delivery object comprising the | |||
associated FEC object. However, as the size in octets of the FEC | associated FEC object. However, as the size in octets of the FEC | |||
object is provided in the appended field within the FEC transport | object is provided in the appended field within the FEC transport | |||
object, the remaining information can be conveyed as:</t> | object, the remaining information can be conveyed as:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>TSI and TOI of the delivery object from which | <li>The TSI and TOI of the delivery object from which the FEC object | |||
the FEC object | associated with the FEC transport object is generated</li> | |||
associated with the FEC transport object is generated</t> | <li>The start octet within the delivery object for the associated FEC | |||
object</li> | ||||
<t>Start octet within delivery object for the associated FEC object</t> | <li>The size in symbols of the FEC transport object, S</li> | |||
</ul> | ||||
<t>Size in symbols of the FEC transport object, S</t> | </section> | |||
<section anchor="sect-5.7" numbered="true" toc="default"> | ||||
</list> | <name>Super-Object Construction</name> | |||
</t> | <t> | |||
From the FEC Repair Flow declaration, the construction of a FEC | ||||
</section> | ||||
<section title="Super-Object Construction" anchor="sect-5.7"><t> | ||||
From the FEC Repair Flow declaration, the construction of an FEC | ||||
super-object as the concatenation of one or more FEC transport | super-object as the concatenation of one or more FEC transport | |||
objects can be determined. The FEC super-object includes the general | objects can be determined. The FEC super-object includes the general | |||
information about the FEC transport objects as described in the | information about the FEC transport objects as described in the | |||
previous sections, as well as the placement order of FEC transport | previous sections, as well as the placement order of FEC transport | |||
objects within the FEC super-object.</t> | objects within the FEC super-object.</t> | |||
<t> | ||||
<t> | ||||
Let:</t> | Let:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>N be the total number of FEC transport object | <li>N be the total number of FEC transport objects for the FEC super-o | |||
s for the FEC super-object | bject | |||
construction.</t> | construction.</li> | |||
<li>For i = 0, ..., N-1, let S[i] be the size in symbols of FEC | ||||
<t>For i = 0,..., N-1, let S[i] be the size in symbols of FEC | transport object i.</li> | |||
transport object i.</t> | <li>B' be the FEC super-object that is the concatenation of the FEC | |||
<t>B' be the FEC super-object which is the concatenation of the FEC | ||||
transport objects in numerical order, comprised of K = Sum of N | transport objects in numerical order, comprised of K = Sum of N | |||
source symbols, each symbol denoted as S[i].</t> | source symbols, each symbol denoted as S[i].</li> | |||
</ul> | ||||
</list> | <t> | |||
</t> | ||||
<t> | ||||
For each FEC super-object, the remaining general information that | For each FEC super-object, the remaining general information that | |||
needs to be conveyed to an FEC-enabled receiver, beyond what is | needs to be conveyed to a FEC-enabled receiver, beyond what is | |||
already carried in the FEC transport objects that constitute the FEC | already carried in the FEC transport objects that constitute the FEC | |||
super-object, comprises:</t> | super-object, comprises:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>The total number of FEC transport objects N.< | <li>The total number of FEC transport objects N.</li> | |||
/t> | <li> | |||
<t>For each FEC transport object:</t> | ||||
<t>For each FEC transport object, the:<list style="symbols"><t>TSI and TO | <ul spacing="normal"> | |||
I of the delivery object from which the FEC object | <li>The TSI and TOI of the delivery object from which the FEC obje | |||
associated with the FEC transport object is generated,</t> | ct | |||
associated with the FEC transport object is generated,</li> | ||||
<t>Start octet within delivery object for the associated FEC | <li>The start octet within the delivery object for the associated | |||
object, and</t> | FEC | |||
object, and</li> | ||||
<t>Size in symbols of the FEC transport object.</t> | <li>The size in symbols of the FEC transport object.</li> | |||
</ul> | ||||
</list> | </li> | |||
</t> | </ul> | |||
<t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
The carriage of the FEC repair information is discussed below.</t> | The carriage of the FEC repair information is discussed below.</t> | |||
</section> | ||||
</section> | <section anchor="sect-5.8" numbered="true" toc="default"> | |||
<name>Repair Packet Considerations</name> | ||||
<section title="Repair Packet Considerations" anchor="sect-5.8"><t> | <t> | |||
The repair protocol is based on Asynchronous Layered Coding (ALC) as | The repair protocol is based on Asynchronous Layered Coding (ALC) as | |||
defined in RFC 5775 <xref target="RFC5775"/> and the Layered Coding Transport | defined in RFC 5775 <xref target="RFC5775" format="default"/> and the Layered | |||
(LCT) | Coding Transport (LCT) | |||
Building Block as defined in RFC 5651 <xref target="RFC5651"/> with the follo | Building Block as defined in RFC 5651 <xref target="RFC5651" format="default" | |||
wing | /> with the following | |||
details:</t> | details:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>The Layered Coding Transport (LCT) Building B | <li> | |||
lock as defined in | <t>The Layered Coding Transport (LCT) Building Block as defined in | |||
RFC 5651 <xref target="RFC5651"/> is used as defined in Asynchronous Layere | RFC 5651 <xref target="RFC5651" format="default"/> is used as defined in As | |||
d | ynchronous Layered | |||
Coding (ALC), <xref target="sect-2.1"/>. In addition, the following constra | Coding (ALC), <xref target="sect-2.1" format="default"/>. In addition, the | |||
ints | following constraint | |||
apply:<list style="symbols"><t>The TSI in the LCT header SHALL identify the | applies:</t> | |||
Repair Flow to | <ul spacing="normal"> | |||
which this packet applies, by the matching value of the ptsi | <li>The TSI in the LCT header <bcp14>SHALL</bcp14> identify the Re | |||
pair Flow to | ||||
which this packet applies by the matching the value of the ptsi | ||||
attribute in the signaling metadata among the LCT channels | attribute in the signaling metadata among the LCT channels | |||
carrying Repair Flows.</t> | carrying Repair Flows.</li> | |||
</ul> | ||||
</list> | </li> | |||
</t> | <li> | |||
<t>The FEC building block is used according to RFC 6330 <xref target | ||||
<t>The FEC building block is used according to RFC 6330 <xref target="RFC | ="RFC6330" format="default"/>, | |||
6330"/>, | but only repair packets are delivered.</t> | |||
but only repair packets are delivered.<list style="symbols"><t>Each repair | <ul spacing="normal"> | |||
packet within the scope of the Repair Flow (as indicated | <li>Each repair packet within the scope of the Repair Flow (as ind | |||
by the TSI field in the LCT header) SHALL carry the repair symbols for | icated | |||
by the TSI field in the LCT header) <bcp14>SHALL</bcp14> carry the repai | ||||
r symbols for | ||||
a corresponding FEC transport object/super-object as identified by its | a corresponding FEC transport object/super-object as identified by its | |||
TOI. The repair object/super- object TOI SHALL be unique for each FEC | TOI. The repair object/super- object TOI <bcp14>SHALL</bcp14> be unique | |||
super-object that is created within the scope of the TSI.</t> | for each FEC | |||
super-object that is created within the scope of the TSI.</li> | ||||
</list> | </ul> | |||
</t> | </li> | |||
</ul> | ||||
</list> | </section> | |||
</t> | <section anchor="sect-5.9" numbered="true" toc="default"> | |||
<name>Summary FEC Information</name> | ||||
</section> | <t> | |||
<section title="Summary FEC Information" anchor="sect-5.9"><t> | ||||
For each super-object (identified by a unique TOI within a Repair | For each super-object (identified by a unique TOI within a Repair | |||
Flow that is in turn identified by the TSI in the LCT header) that is | Flow that is in turn identified by the TSI in the LCT header) that is | |||
generated, the following information needs to be communicated to the | generated, the following information needs to be communicated to the | |||
receiver:</t> | receiver:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>The FEC configuration consisting of:<list sty | <li> | |||
le="symbols"><t>FEC Object Transmission Information (OTI) per RFC 5052 | <t>The FEC configuration consisting of:</t> | |||
<xref target="RFC5052"/>.</t> | <ul spacing="normal"> | |||
<li>FEC Object Transmission Information (OTI) per RFC 5052 | ||||
<t>Additional FEC information (see <xref target="sect-3.3"/>).</t> | <xref target="RFC5052" format="default"/>.</li> | |||
<li>Additional FEC information (see <xref target="sect-3.3" format | ||||
<t>The total number of FEC objects included in the FEC super-object, N.</ | ="default"/>).</li> | |||
t> | <li>The total number of FEC objects included in the FEC super-obje | |||
ct, N.</li> | ||||
</list> | </ul> | |||
</t> | </li> | |||
<li> | ||||
<t>For each FEC transport object:<list style="symbols"><t>TSI and TOI of | <t>For each FEC transport object:</t> | |||
the delivery object used to generate the FEC | <ul spacing="normal"> | |||
object associated with the FEC transport object,</t> | <li>TSI and TOI of the delivery object used to generate the FEC | |||
object associated with the FEC transport object,</li> | ||||
<t>Start octet within the delivery object of the associated FEC | <li>The start octet within the delivery object of the associated F | |||
object, if applicable, and</t> | EC | |||
object, if applicable, and</li> | ||||
<t>The size in symbols of the FEC transport object, S.</t> | <li>The size in symbols of the FEC transport object, S.</li> | |||
</ul> | ||||
</list> | </li> | |||
</t> | </ul> | |||
<t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
The above information is delivered:</t> | The above information is delivered:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>Statically in the session metadata as defined | <li>Statically in the session metadata as defined in <xref target="sec | |||
in <xref target="sect-3.3"/>, and</t> | t-3.3" format="default"/>, and</li> | |||
<li>Dynamically in an LCT extension header.</li> | ||||
<t>Dynamically in an LCT extension header.</t> | </ul> | |||
</section> | ||||
</list> | </section> | |||
</t> | <section anchor="sect-6" numbered="true" toc="default"> | |||
<name>Receiver Operation</name> | ||||
</section> | <t> | |||
</section> | ||||
<section title="Receiver operation" anchor="sect-6"><t> | ||||
The receiver receives packets and filters those packets according to | The receiver receives packets and filters those packets according to | |||
the following. From the ROUTE session and each contained LCT channel, | the following. From the ROUTE session and each contained LCT channel, | |||
the receiver regenerates delivery objects from the ROUTE session and | the receiver regenerates delivery objects from the ROUTE session and | |||
each contained LCT channel.</t> | each contained LCT channel.</t> | |||
<t> | ||||
<t> | ||||
In the event that the receiver receives data that does not conform to | In the event that the receiver receives data that does not conform to | |||
the ROUTE protocol specified in this document, the receiver SHOULD | the ROUTE protocol specified in this document, the receiver <bcp14>SHOULD</bc | |||
attempt to recover gracefully by e.g. informing the application about | p14> | |||
attempt to recover gracefully by e.g., informing the application about | ||||
the issues using means beyond the scope of this document. The ROUTE | the issues using means beyond the scope of this document. The ROUTE | |||
Packetization specified in <xref target="sect-5.2.1"/> implies that the recei | packetization specified in <xref target="sect-5.2.1" format="default"/> impli | |||
ver | es that the receiver | |||
SHALL NOT receive overlapping data: if such a condition is | <bcp14>SHALL NOT</bcp14> receive overlapping data; if such a condition is | |||
encountered at the receiver, the packet SHALL be assumed to be | encountered at the receiver, the packet <bcp14>SHALL</bcp14> be assumed to be | |||
corrupted.</t> | corrupted.</t> | |||
<t> | ||||
<t> | The basic receiver operation is provided below (it assumes an error-free | |||
The basic receiver operation is provided below, it assumes an error-free | scenario), while repair considerations are provided in <xref target="sect-7" | |||
scenario, while repair considerations are provided in <xref target="sect-7"/> | format="default"/>.</t> | |||
.</t> | <section anchor="sect-6.1" numbered="true" toc="default"> | |||
<name>Basic Application Object Recovery for Source Flows</name> | ||||
<section title="Basic Application Object Recovery for Source Flows" ancho | <t> | |||
r="sect-6.1"><t> | ||||
Upon receipt of each ROUTE packet of a Source Flow, the receiver | Upon receipt of each ROUTE packet of a Source Flow, the receiver | |||
proceeds with the following steps in the order listed.</t> | proceeds with the following steps in the order listed.</t> | |||
<ol spacing="normal" type="%d)"><li>The ROUTE receiver is expected to pa | ||||
<t><list style="numbers"> | rse the LCT and FEC Payload ID to | |||
<t>The ROUTE receiver is expected to parse the LCT and FEC Payload ID to | ||||
verify that it is a valid header. If it is not valid, then the payload is | verify that it is a valid header. If it is not valid, then the payload is | |||
discarded without further processing.</t> | discarded without further processing.</li> | |||
<li>All ROUTE packets used to recover a specific delivery object carry | ||||
<t>All ROUTE packets used to recover a specific delivery object carry the | the | |||
same TOI value in the LCT header.</t> | same TOI value in the LCT header.</li> | |||
<li>The ROUTE receiver is expected to assert that the TSI and the | ||||
<t>The ROUTE receiver is expected to assert that the TSI and the | ||||
Codepoint represent valid operation points in the signaling metadata, | Codepoint represent valid operation points in the signaling metadata, | |||
i.e. the signaling contains a matching entry to the TSI value provided in | i.e., the signaling contains a matching entry to the TSI value provided in | |||
the packet header, as well as for this TSI, and Codepoint field in the | the packet header, as well as for this TSI, and the Codepoint field in the | |||
LCT header has a valid Codepoint mapping.</t> | LCT header has a valid Codepoint mapping.</li> | |||
<li> | ||||
<t>The ROUTE receiver should process the remainder of the payload, | <t>The ROUTE receiver should process the remainder of the payload, | |||
including the appropriate interpretation of the other payload header | including the appropriate interpretation of the other payload header | |||
fields, and using the source FEC Payload ID (to determine the | fields, using the source FEC Payload ID (to determine the | |||
start_offset) and the payload data to reconstruct the corresponding | start_offset) and the payload data to reconstruct the corresponding | |||
object as follows: | object as follows: | |||
<list style="letters"><t>For File Mode, upon receipt of the first ROUTE p | </t> | |||
acket | <ol spacing="normal" type="a"><li>For File Mode, upon receipt of the | |||
first ROUTE packet | ||||
payload for an object, the ROUTE receiver uses the | payload for an object, the ROUTE receiver uses the | |||
File@Transfer-Length attribute of the associated Extended FDT | File@Transfer-Length attribute of the associated Extended FDT-Instance, | |||
Instance, when present, to determine the length T of the | when present, to determine the length T of the | |||
object. When the File@Transfer-Length attribute is not | object. When the File@Transfer-Length attribute is not | |||
present in the Extended FDT Instance, the receiver uses the | present in the Extended FDT-Instance, the receiver uses the | |||
maxTransportSize attribute of the associated Extended FDT | maxTransportSize attribute of the associated Extended FDT-Instance to d | |||
Instance to determine the maximum length T' of the object. | etermine the maximum length T' of the object. | |||
Alternatively, and specifically for delivery modes other than | Alternatively, and specifically for delivery modes other than | |||
File Mode, EXT_TOL header can be used to determine the length | File Mode, the EXT_TOL header can be used to determine the length | |||
T of the object.</t> | T of the object.</li> | |||
<li>The ROUTE receiver allocates buffer space for the T or T' | ||||
<t>The ROUTE receiver allocates buffer space for the T or T' | bytes that the object will or may occupy.</li> | |||
bytes that the object will or may occupy.</t> | <li>The ROUTE receiver computes the length of the payload, Y, by | |||
<t>The ROUTE receiver computes the length of the payload, Y, by | ||||
subtracting the payload header length from the total length | subtracting the payload header length from the total length | |||
of the received payload.</t> | of the received payload.</li> | |||
<li><t>The ROUTE receiver allocates a Boolean array RECEIVED[0..T- | ||||
<t>The ROUTE receiver allocates a Boolean array RECEIVED[0..T-1] or | 1] or | |||
RECEIVED[0..T'-1], as appropriate, with all entries initialized to | RECEIVED[0..T'-1], as appropriate, with all entries initialized to | |||
false to track received object symbols. The ROUTE receiver | false to track received object symbols. The ROUTE receiver | |||
continuously acquires packet payloads for the object as long as all | continuously acquires packet payloads for the object as long as all | |||
of the following conditions are satisfied: i) there is at least one | of the following conditions are satisfied:</t> | |||
entry in RECEIVED still set to false; ii) the object has not yet | ||||
expired; and iii) the application has not given up on reception of | ||||
this object. More details are provided below. | ||||
</t> | ||||
<t>For each received ROUTE packet payload for the object | <ol type="i"> | |||
(including the first payload), the steps to be taken to help | <li>there is at least one entry in RECEIVED still set to false, | |||
recover the object are as follows: | </li> | |||
<li>the object has not yet expired, and</li> | ||||
<li><t>the application has not given up on reception of this object.</ | ||||
t> | ||||
<list style="letters"> | <t>More details are provided below. </t> | |||
<t>If the packet includes an EXT_TOL or EXT_FTI header, modify the | </li> | |||
Boolean array RECEIVED[0..T'-1] to become RECEIVED[0..T-1].</t> | </ol> | |||
<t>Let X be the value of the start_offset field in the ROUTE | </li> | |||
<li> | ||||
<t>For each received ROUTE packet payload for the object | ||||
(including the first payload), the steps to be taken to help | ||||
recover the object are as follows: | ||||
</t> | ||||
<ol spacing="normal" type="i"><li>If the packet includes an | ||||
EXT_TOL or EXT_FTI header, modify the Boolean array | ||||
RECEIVED[0..T'-1] to become RECEIVED[0..T-1].</li> | ||||
<li>Let X be the value of the start_offset field in the ROUTE | ||||
packet header and let Y be the length of the payload, Y, computed | packet header and let Y be the length of the payload, Y, computed | |||
by subtracting the LCT header size and the FEC Payload ID size | by subtracting the LCT header size and the FEC Payload ID size | |||
from the total length of the received packet.</t> | from the total length of the received packet.</li> | |||
<li>The ROUTE receiver copies the data into the appropriate pl | ||||
<t>The ROUTE receiver copies the data into the appropriate place | ace | |||
within the space reserved for the object and sets RECEIVED[X | within the space reserved for the object and sets RECEIVED[X | |||
... X+Y-1] = true.</t> | ... X+Y-1] = true.</li> | |||
<li>If all T entries of RECEIVED are true, then the receiver h | ||||
<t>If all T entries of RECEIVED are true, then the receiver has | as | |||
recovered the entire object.</t> | recovered the entire object.</li> | |||
</ol> | ||||
</list> | </li> | |||
</t> | </ol> | |||
</li> | ||||
</list> | </ol> | |||
</t> | <t> | |||
</list> | ||||
</t> | ||||
<t> | ||||
Upon recovery of both the complete set of packet payloads for the | Upon recovery of both the complete set of packet payloads for the | |||
delivery object associated with a given TOI value, and the metadata | delivery object associated with a given TOI value, and the metadata | |||
for that delivery object, the reception of the delivery object, now a | for that delivery object, the reception of the delivery object, now a | |||
fully received Application Object, is complete.</t> | fully received Application Object, is complete.</t> | |||
<t> | ||||
<t> | ||||
Given the timely reception of ROUTE packets belonging to an | Given the timely reception of ROUTE packets belonging to an | |||
Application Object, the receiver SHALL make the Application Objects | Application Object, the receiver <bcp14>SHALL</bcp14> make the Application Ob | |||
available to the application in a timely fashion, using the | jects | |||
application-provided timing data (e.g. the timing data signaled via | available to the application in a timely fashion using the | |||
application-provided timing data (e.g., the timing data signaled via | ||||
the presentation manifest file). For example, HTTP/1.1 chunked | the presentation manifest file). For example, HTTP/1.1 chunked | |||
transfer may need to be enabled to transfer the Application Objects | transfer may need to be enabled to transfer the Application Objects | |||
if MPD@availabilityTimeOffset is signaled in the DASH presentation | if MPD@availabilityTimeOffset is signaled in the DASH presentation | |||
manifest, to allow for timely sending of segment data to the | manifest in order to allow for the timely sending of segment data to the | |||
application.</t> | application.</t> | |||
</section> | ||||
</section> | <section anchor="sect-6.2" numbered="true" toc="default"> | |||
<name>Fast Stream Acquisition</name> | ||||
<section title="Fast Stream Acquisition" anchor="sect-6.2"><t> | <t> | |||
When the receiver initially starts reception of ROUTE packets, it is | When the receiver initially starts reception of ROUTE packets, it is likely | |||
likely that the reception does not start from the very first packet | that the reception does not start from the very first packet carrying the | |||
carrying the data of a multicast transport object, and in this case | data of a multicast transport object; in this case, such a partially | |||
such a partially received object is normally discarded. However, the | received object is normally discarded. However, the channel acquisition or | |||
channel acquisition or "tune-in" times can be improved if the | "tune-in" times can be improved if the partially received object is usable | |||
partially received object is usable by the application. | by the application. One example realization for this is as follows:</t> | |||
One example realization for this is as follows:</t> | <ul spacing="normal"> | |||
<li>The receiver checks for the first received packet with the | ||||
<t><list style="symbols"><t>The receiver checks for the first received pa | ||||
cket with the | ||||
Codepoint value set to 10, indicating the start of a CMAF Random | Codepoint value set to 10, indicating the start of a CMAF Random | |||
Access chunk.</t> | Access chunk.</li> | |||
<li>The receiver <bcp14>MAY</bcp14> make the partially received object | ||||
<t>The receiver MAY make the partially received object (a partial | (a partial | |||
DASH segment starting from the packet above) available to the | DASH segment starting from the packet above) available to the | |||
application for fast stream acquisition.</t> | application for fast stream acquisition.</li> | |||
<li>It <bcp14>MAY</bcp14> recover the earliest presentation time of th | ||||
<t>It MAY recover the earliest presentation time of this CMAF Random | is CMAF Random | |||
Access chunk from the ROUTE packet LCT Congestion Control | Access chunk from the ROUTE packet LCT Congestion Control | |||
Information (CCI) field as specified in <xref target="sect-2.1"/> to be abl e to | Information (CCI) field as specified in <xref target="sect-2.1" format="def ault"/> to be able to | |||
add a new Period element in the MPD exposed to the application | add a new Period element in the MPD exposed to the application | |||
containing just the partially received DASH segment with period | containing just the partially received DASH segment with period | |||
continuity signaling.</t> | continuity signaling.</li> | |||
</ul> | ||||
</list> | </section> | |||
</t> | <section anchor="sect-6.3" numbered="true" toc="default"> | |||
<name>Generating Extended FDT-Instance for File Mode</name> | ||||
</section> | <t> | |||
An Extended FDT-Instance conforming to RFC 6726 <xref target="RFC6726" | ||||
<section title="Generating Extended FDT Instance for File Mode" anchor="s | format="default"/>, is produced at the receiver using the service metadata | |||
ect-6.3"><t> | and in-band signaling in the following steps:</t> | |||
An Extended FDT Instance conforming to RFC 6726 <xref target="RFC6726"/>, is | <section anchor="sect-6.3.1" numbered="true" toc="default"> | |||
produced at the receiver using the service metadata and in band | <name>File Template Substitution for Content-Location Derivation</name | |||
signaling in the following steps:</t> | > | |||
<t> | ||||
<section title="File Template Substitution for Content-Location Derivatio | ||||
n" anchor="sect-6.3.1"><t> | ||||
The Content-Location element of the Extended FDT for a specific | The Content-Location element of the Extended FDT for a specific | |||
Application Object is derived as follows:</t> | Application Object is derived as follows:</t> | |||
<t> | ||||
<t> | ||||
"$TOI$" is substituted with the unique TOI value in the LCT header of | "$TOI$" is substituted with the unique TOI value in the LCT header of | |||
the ROUTE packets used to recover the given delivery object (as | the ROUTE packets used to recover the given delivery object (as | |||
specified in <xref target="sect-6.1"/>).</t> | specified in <xref target="sect-6.1" format="default"/>).</t> | |||
<t> | ||||
<t> | After the substitution, the fileTemplate <bcp14>SHALL</bcp14> be a valid URL | |||
After the substitution, the fileTemplate SHALL be a valid URL | ||||
corresponding to the Content-Location attribute of the associated | corresponding to the Content-Location attribute of the associated | |||
Application Object.</t> | Application Object.</t> | |||
<t> | ||||
<t> | ||||
An example @fileTemplate using a width of 5 is: | An example @fileTemplate using a width of 5 is: | |||
fileTemplate="myVideo$TOI%05d$.mps", resulting in file names with | fileTemplate="myVideo$TOI%05d$.mps", resulting in file names with | |||
exactly five digits in the number portion. The Media Segment file | exactly five digits in the number portion. The Media Segment file | |||
name for TOI=33 using this template is myVideo00033.mps.</t> | name for TOI=33 using this template is myVideo00033.mps.</t> | |||
</section> | ||||
</section> | <section anchor="sect-6.3.2" numbered="true" toc="default"> | |||
<name>File@Transfer-Length Derivation</name> | ||||
<section title="File@Transfer-Length Derivation" anchor="sect-6.3.2"><t> | <t> | |||
Either the EXT_FTI header (per RFC 5775 <xref target="RFC5775"/>) or the EXT_ | Either the EXT_FTI header (per RFC 5775 <xref target="RFC5775" format="defaul | |||
TOL | t"/>) or the EXT_TOL | |||
header, when present, is used to derive the Transport Object Length | header, when present, is used to derive the Transport Object Length | |||
(TOL) of the File. If the File@Transfer-Length parameter in the | (TOL) of the File. If the File@Transfer-Length parameter in the | |||
Extended FDT Instance is not present, then the EXT_TOL header or the | Extended FDT-Instance is not present, then the EXT_TOL header or the | |||
or EXT_FTI header SHALL be present. Note that a header containing the | or EXT_FTI header <bcp14>SHALL</bcp14> be present. Note that a header contain | |||
ing the | ||||
transport object length (EXT_TOL or EXT_FTI) need not be present in | transport object length (EXT_TOL or EXT_FTI) need not be present in | |||
each packet header. If the broadcaster does not know the length of | each packet header. If the broadcaster does not know the length of | |||
the transport object at the beginning of the transfer, an EXT_TOL or | the transport object at the beginning of the transfer, an EXT_TOL or | |||
EXT_FTI header SHALL be included in at least the last packet of the | EXT_FTI header <bcp14>SHALL</bcp14> be included in at least the last packet o f the | |||
file and should be included in the last few packets of the transfer.</t> | file and should be included in the last few packets of the transfer.</t> | |||
</section> | ||||
</section> | <section anchor="sect-6.3.3" numbered="true" toc="default"> | |||
<name>FDT-Instance@Expires Derivation</name> | ||||
<section title="FDT-Instance@Expires Derivation" anchor="sect-6.3.3"><t> | <t> | |||
When present, the maxExpiresDelta attribute SHALL be used to generate | When present, the maxExpiresDelta attribute <bcp14>SHALL</bcp14> be used to g | |||
enerate | ||||
the value of the FDT-Instance@Expires attribute. The receiver is | the value of the FDT-Instance@Expires attribute. The receiver is | |||
expected to add this value to its wall clock time when acquiring the | expected to add this value to its wall clock time when acquiring the | |||
first ROUTE packet carrying the data of a given delivery object to | first ROUTE packet carrying the data of a given delivery object to | |||
obtain the value for @Expires.</t> | obtain the value for @Expires.</t> | |||
<t> | ||||
<t> | ||||
When maxExpiresDelta is not present, the EXT_TIME header with | When maxExpiresDelta is not present, the EXT_TIME header with | |||
Expected Residual Time (ERT) SHALL be used to derive the expiry time | Expected Residual Time (ERT) <bcp14>SHALL</bcp14> be used to derive the expir | |||
of the Extended FDT Instance. When both maxExpiresDelta and the ERT | y time | |||
of the Extended FDT-Instance. When both maxExpiresDelta and the ERT | ||||
of EXT_TIME are present, the smaller of the two values should be used | of EXT_TIME are present, the smaller of the two values should be used | |||
as the incremental time interval to be added to the receiver's | as the incremental time interval to be added to the receiver's | |||
current time to generate the effective value for @Expires. When | current time to generate the effective value for @Expires. When | |||
neither maxExpiresDelta nor the ERT field of the EXT_TIME header is | neither maxExpiresDelta nor the ERT field of the EXT_TIME header is | |||
present, then the expiration time of the Extended FDT Instance is | present, then the expiration time of the Extended FDT-Instance is | |||
given by its @Expires attribute.</t> | given by its @Expires attribute.</t> | |||
</section> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section anchor="sect-7" numbered="true" toc="default"> | |||
<name>FEC Application</name> | ||||
</section> | <section anchor="sect-7.1" numbered="true" toc="default"> | |||
<name>General FEC Application Guidelines</name> | ||||
<section title="FEC Application" anchor="sect-7"><section title="General | <t> | |||
FEC Application Guidelines" anchor="sect-7.1"><t> | It is up to the receiver to decide to use zero, one, or more of the | |||
It is up to the receiver to decide to use zero, one or more of the | ||||
FEC streams. Hence, the application assigns a recovery property to | FEC streams. Hence, the application assigns a recovery property to | |||
each flow, which defines aspects such as the delay and the required | each flow, which defines aspects such as the delay and the required | |||
memory if one or the other is chosen. The receiver MAY decide whether | memory if one or the other is chosen. The receiver <bcp14>MAY</bcp14> decide whether | |||
or not to utilize Repair Flows based on the following considerations:</t> | or not to utilize Repair Flows based on the following considerations:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"><t>The desired start-up and end-to-end latency. | <li>The desired start-up and end-to-end latency. If a Repair Flow | |||
If a Repair Flow | ||||
requires a significant amount of buffering time to be effective, | requires a significant amount of buffering time to be effective, | |||
such Repair Flow might only be used in time-shift operations or in | such Repair Flow might only be used in time-shift operations or in | |||
poor reception conditions, since use of such Repair Flow trades | poor reception conditions, since use of such Repair Flow trades | |||
off end-to-end latency against DASH Media Presentation quality.</t> | off end-to-end latency against DASH Media Presentation quality.</li> | |||
<li>FEC capabilities, i.e., the receiver <bcp14>MAY</bcp14> pick only | ||||
<t>FEC capabilities, i.e. the receiver MAY pick only the FEC | the FEC | |||
algorithm that it supports.</t> | algorithm that it supports.</li> | |||
<li>Which Source Flows are being protected; for example, if the Repair | ||||
<t>Which Source Flows are being protected; for example, if the Repair | ||||
Flow protects Source Flows that are not selected by the receiver, | Flow protects Source Flows that are not selected by the receiver, | |||
then the receiver may not select the Repair Flow.</t> | then the receiver may not select the Repair Flow.</li> | |||
<li>Other considerations such as available buffer size, reception | ||||
<t>Other considerations such as available buffer size, reception | conditions, etc.</li> | |||
conditions, etc.</t> | </ul> | |||
<t> | ||||
</list> | If a receiver decides to acquire a certain Repair Flow, then the | |||
</t> | ||||
<t> | ||||
If a receiver decides to acquire a certain Repair Flow then the | ||||
receiver must receive data on all Source Flows that are protected by | receiver must receive data on all Source Flows that are protected by | |||
that Repair Flow to collect the relevant packets.</t> | that Repair Flow to collect the relevant packets.</t> | |||
</section> | ||||
</section> | <section anchor="sect-7.2" numbered="true" toc="default"> | |||
<name>TOI Mapping</name> | ||||
<section title="TOI Mapping" anchor="sect-7.2"><t> | <t> | |||
When mappingTOIx/mappingTOIy are used to signal X and Y values, then | When mappingTOIx/mappingTOIy are used to signal X and Y values, the TOI | |||
the TOI value(s) of the one or more source objects (sourceTOI) | value(s) of the one or more source objects (sourceTOI) protected by a given | |||
protected by a given FEC transport object or FEC super-object with a | FEC transport object or FEC super-object with a TOI value rTOI is derived | |||
TOI value rTOI is derived through an equation sourceTOI = X*rTOI + Y.</t> | through an equation sourceTOI = X*rTOI + Y.</t> | |||
<t> | ||||
<t> | When neither mappingTOIx nor mappingTOIy is present, there is a 1:1 | |||
When neither mappingTOIx nor mappingTOIy is present there is a 1:1 | ||||
relationship between each delivery object carried in the Source Flow | relationship between each delivery object carried in the Source Flow | |||
as identified by ptsi to an FEC object carried in this Repair Flow. | as identified by ptsi to a FEC object carried in this Repair Flow. | |||
In this case the TOI of each of those delivery objects SHALL be | In this case, the TOI of each of those delivery objects <bcp14>SHALL</bcp14> | |||
be | ||||
identical to the TOI of the corresponding FEC object.</t> | identical to the TOI of the corresponding FEC object.</t> | |||
</section> | ||||
</section> | <section anchor="sect-7.3" numbered="true" toc="default"> | |||
<name>Delivery Object Reception Timeout</name> | ||||
<section title="Delivery Object Reception Timeout" anchor="sect-7.3"><t> | <t> | |||
The permitted start and end times for the receiver to perform the | The permitted start and end times for the receiver to perform the | |||
file repair procedure, in case of unsuccessful broadcast file | file repair procedure, in case of unsuccessful broadcast file | |||
reception, and associated rules and parameters are as follows:</t> | reception, and associated rules and parameters are as follows:</t> | |||
<ul spacing="normal"> | ||||
<li>The latest time that the file repair procedure may start is bound | ||||
by the @Expires attribute of the FDT-Instance.</li> | ||||
<li> | ||||
<t>The receiver may choose to start the file repair procedure | ||||
earlier if it detects the occurrence of any of the following | ||||
events:</t> | ||||
<ul spacing="normal"> | ||||
<li>Presence of the Close Object flag (B) in the LCT header | ||||
<xref target="RFC5651" format="default"/> for the file of interest;</li> | ||||
<li>Presence of the Close Session flag (A) in the LCT header | ||||
<xref target="RFC5651" format="default"/> before the nominal expiration | ||||
of the Extended FDT-Instance as defined by the @Expires attribute.</li> | ||||
<t><list style="symbols"><t>The latest time that the file repair procedur | </ul> | |||
e may start is bound | </li> | |||
by the @Expires attribute of the FDT-Instance.</t> | </ul> | |||
</section> | ||||
<t>The receiver may choose to start the file repair procedure | <section anchor="sect-7.4" numbered="true" toc="default"> | |||
earlier, if it detects the occurrence of any of the following | <name>Example FEC Operation</name> | |||
events:<list style="symbols"><t>Presence of the Close Object flag (B) in th | <t> | |||
e LCT header | To be able to recover the delivery objects that are protected by a Repair | |||
<xref target="RFC5651"/> for the file of interest;</t> | Flow, a receiver needs to obtain the necessary Service signaling metadata | |||
fragments that describe the corresponding collection of delivery objects | ||||
<t>Presence of the Close Session flag (A) in the LCT header | that are covered by this Repair Flow. A Repair Flow is characterized by | |||
<xref target="RFC5651"/> before the nominal expiration of the Extended F | the combination of an LCT channel, a unique TSI number, as well as the | |||
DT | corresponding protected Source Flows.</t> | |||
Instance as defined by the @Expires attribute.</t> | <t> | |||
If a receiver acquires data of a Repair Flow, the receiver is expected to | ||||
</list> | collect all packets of all protected Transport Sessions. Upon receipt of | |||
</t> | each packet, whether it is a source or repair packet, the receiver proceeds | |||
with the following steps in the order listed.</t> | ||||
</list> | <ol spacing="normal" type="1"><li>The receiver is expected to parse | |||
</t> | the packet header and verify that it is a valid header. If it is not | |||
valid, then the packet <bcp14>SHALL</bcp14> be discarded without | ||||
</section> | further processing.</li> | |||
<li>The receiver is expected to parse the TSI field of the packet | ||||
<section title="Example FEC Operation" anchor="sect-7.4"><t> | header and verify that a matching value exists in the Service | |||
To be able to recover the delivery objects that are protected by a | signaling for the Repair Flow or the associated Protected Source | |||
Repair Flow, a receiver needs to obtain the necessary Service | Flow. If no match is found, the packet <bcp14>SHALL</bcp14> be | |||
signaling metadata fragments that describe the corresponding | discarded without further processing.</li> | |||
collection of delivery objects that are covered by this Repair Flow. | <li> | |||
A Repair Flow is characterized by the combination of an LCT channel, | <t>The receiver processes the remainder of the packet, including | |||
a unique TSI number, as well as the corresponding protected Source | interpretation of the other header fields, and using the source | |||
Flows.</t> | FEC Payload ID (to determine the start_offset byte position within | |||
the source object), the Repair FEC Payload ID, as well as the | ||||
<t> | payload data, reconstructs the decoding blocks corresponding to a | |||
If a receiver acquires data of a Repair Flow, the receiver is | FEC super-object as follows:</t> | |||
expected to collect all packets of all protected Transport Sessions. | <ol spacing="normal" type="a"><li>For a source packet, the | |||
Upon receipt of each packet, whether it is a source or repair packet, | receiver identifies the delivery object to which the received | |||
the receiver proceeds with the following steps in the order listed.</t> | packet is associated using the session information and the TOI | |||
carried in the payload header. Similarly, for a repair object, the | ||||
<t><list style="numbers"><t>The receiver is expected to parse the packet | receiver identifies the FEC super-object to which the received | |||
header and verify | packet is associated using the session information and the TOI | |||
that it is a valid header. If it is not valid, then the packet | carried in the payload header.</li> | |||
SHALL be discarded without further processing.</t> | <li>For source packets, the receiver collects the data for each | |||
FEC super-object and recovers FEC super-objects in the same way | ||||
<t>The receiver is expected to parse the TSI field of the packet | as a Source Flow in <xref target="sect-6.1" | |||
header and verify that a matching value exists in the Service | format="default"/>. The received FEC super-object is then mapped | |||
signaling for the Repair Flow or the associated Protected Source | to a source block and the corresponding encoding symbols are | |||
Flow. If no match is found, the packet SHALL be discarded without | generated.</li> | |||
further processing.</t> | <li>With the reception of the repair packets, the FEC | |||
super-object can be recovered.</li> | ||||
<t>The receiver processes the remainder of the packet, including | <li>Once the FEC super-object is recovered, the individual | |||
interpretation of the other header fields, and using the source | delivery objects can be extracted.</li> | |||
FEC Payload ID (to determine the start_offset byte position within | </ol> | |||
the source object), the Repair FEC Payload ID, as well as the | </li> | |||
payload data, reconstructs the decoding blocks corresponding to a | </ol> | |||
FEC super-object as follows:<list style="letters"><t>For a source packet, | </section> | |||
the receiver identifies the delivery | </section> | |||
object to which the received packet is associated, using the | ||||
session information and the TOI carried in the payload | ||||
header. Similarly, for a repair object the receiver | ||||
identifies the FEC super-object to which the received packet | ||||
is associated, using the session information and the TOI | ||||
carried in the payload header.</t> | ||||
<t>For source packets, the receiver collects the data for each | ||||
FEC super-object and recovers FEC super-objects in same way | ||||
as Source Flow in <xref target="sect-6.1"/>. The received FEC super-obj | ||||
ect | ||||
is then mapped to a source block and the corresponding | ||||
encoding symbols are generated.</t> | ||||
<t>With the reception of the repair packets, the FEC super-object can | ||||
be recovered.</t> | ||||
<t>Once the FEC super-object is recovered, the individual | ||||
delivery objects can be extracted.</t> | ||||
</list> | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Considerations for Defining ROUTE Profiles" anchor="sect- | ||||
8"><t> | ||||
Services (e.g. ATSC-ROUTE [ATSCA331], DVB-MABR [DVBMABR] etc.) may | ||||
define specific ROUTE "profiles" based on this document in their | ||||
respective standards organizations. An example is noted in the | ||||
overview section: DVB has specified a profile of ATSC-ROUTE in DVB | ||||
Adaptive Media Streaming over IP Multicast (DVB-MABR) [DVBMABR]. The | ||||
definition with the following considerations. Services MAY</t> | ||||
<t><list style="symbols"><t>Restrict the signaling certain values signale | ||||
d in the LCT header | ||||
and/or provision unused fields in the LCT header.</t> | ||||
<t>Restrict using certain LCT header extensions and/or add new LCT | ||||
header extensions.</t> | ||||
<t>Restrict or limit usage of some Codepoints, and/or assign | ||||
semantics to service-specific Codepoints marked as reserved in | ||||
this document.</t> | ||||
<t>Restrict usage of certain service signaling attributes and/or add | ||||
own service metadata.</t> | ||||
</list> | <section anchor="sect-8" numbered="true" toc="default"> | |||
</t> | <name>Considerations for Defining ROUTE Profiles</name> | |||
<t> | <t> | |||
Services SHALL NOT redefine the semantics of any of the ROUTE | Services (e.g., ATSC-ROUTE <xref target="ATSCA331"/>, DVB-MABR <xref | |||
attributes in LCT headers and extension, and service signaling | target="DVBMABR"/>, etc.) may define specific ROUTE "profiles" based | |||
on this document in their respective standards organizations. An example is | ||||
noted in the overview section: DVB has specified a profile of ATSC-ROUTE in | ||||
DVB Adaptive Media Streaming over IP Multicast (DVB-MABR) <xref | ||||
target="DVBMABR"/>. The definition has the following | ||||
considerations. Services <bcp14>MAY</bcp14></t> | ||||
<ul spacing="normal"> | ||||
<li>Restrict the signaling of certain values signaled in the LCT header | ||||
and/or provision unused fields in the LCT header.</li> | ||||
<li>Restrict using certain LCT header extensions and/or add new LCT | ||||
header extensions.</li> | ||||
<li>Restrict or limit usage of some Codepoints and/or assign semantics | ||||
to service-specific Codepoints marked as reserved in this | ||||
document.</li> | ||||
<li>Restrict usage of certain Service signaling attributes and/or add | ||||
their own service metadata.</li> | ||||
</ul> | ||||
<t> | ||||
Services <bcp14>SHALL NOT</bcp14> redefine the semantics of any of the ROUTE | ||||
attributes in LCT headers and extensions, as well as Service signaling | ||||
attributes already specified in this document.</t> | attributes already specified in this document.</t> | |||
<t> | ||||
<t> | ||||
By following these guidelines, services can define profiles that are | By following these guidelines, services can define profiles that are | |||
interoperable.</t> | interoperable.</t> | |||
</section> | ||||
</section> | <section anchor="sect-9" numbered="true" toc="default"> | |||
<name>ROUTE Concepts</name> | ||||
<section title="ROUTE Concepts" anchor="sect-9"><section title="ROUTE Mod | <section anchor="sect-9.1" numbered="true" toc="default"> | |||
es of Delivery" anchor="sect-9.1"><t> | <name>ROUTE Modes of Delivery</name> | |||
Different ROUTE delivery modes specified in <xref target="sect-4"/> are optim | <t> | |||
ized | Different ROUTE delivery modes specified in <xref target="sect-4" | |||
for delivery of different types of media data. For example, File Mode | format="default"/> are optimized for delivery of different types of media | |||
is specifically optimized for delivering DASH content using Segment | data. For example, File Mode is specifically optimized for delivering DASH | |||
Template with number substitution. Using File Template in EFDT avoids | content using Segment Template with number substitution. Using File | |||
the need of repeated sending of metadata as outlined in the following | Template in EFDT avoids the need for the repeated sending of metadata as | |||
section. Same optimizations however cannot be used for time | outlined in the following section. Same optimizations, however, cannot be | |||
substitution and segment timeline where the addressing of each | used for time substitution and segment timeline where the addressing of | |||
segment is time dependent and in general does not follow a fixed or | each segment is time dependent and in general does not follow a fixed or | |||
repeated pattern. In this case, Entity mode is more optimized which | repeated pattern. In this case, Entity Mode is more optimized since it carrie | |||
carries the file location in band. Also, Entity mode can be used to | s the | |||
deliver a file or part of the file using HTTP Partial Content | file location in band. Also, Entity Mode can be used to deliver | |||
response headers.</t> | a file or part of the file using HTTP Partial Content response headers.</t> | |||
</section> | ||||
</section> | <section anchor="sect-9.2" numbered="true" toc="default"> | |||
<name>File Mode Optimizations</name> | ||||
<section title="File Mode Optimizations" anchor="sect-9.2"><t> | <t> | |||
In the file mode, the delivery object represents an Application | In File Mode, the delivery object represents an Application Object. This | |||
Object. This mode replicates FLUTE as defined in RFC 6726 <xref target="RFC67 | mode replicates FLUTE as defined in RFC 6726 <xref target="RFC6726" | |||
26"/>, | format="default"/> but with the ability to send static and pre-known file | |||
but with the ability to send static and pre-known file metadata out | metadata out of band.</t> | |||
of band.</t> | <t> | |||
In FLUTE, FDT-Instances are delivered in band and need to be generated and | ||||
<t> | delivered in real time if objects are generated in real time at the | |||
In FLUTE, FDT Instances are delivered in-band and need to be generated and | sender. These FDT-Instances have some differences as compared to the FDT | |||
delivered in real-time if objects are generated in real-time at the | specified in <xref target="RFC6726" sectionFormat="of" section="3.4.2"/> and | |||
sender. These FDT Instances have some differences as compared to the FDT | Section 7.2.10 of MBMS | |||
specified in Section 3.4.2 of RFC 6726 <xref target="RFC6726"/> and Section 7 | <xref target="MBMS"/>. The key difference is that besides separated delivery | |||
.2.10 of MBMS | of file | |||
[MBMS]. The key difference is that besides separated delivery of file | ||||
metadata from the delivery object it describes, the FDT functionality in | metadata from the delivery object it describes, the FDT functionality in | |||
ROUTE may be extended by additional file metadata and rules that enable the | ROUTE may be extended by additional file metadata and rules that enable the | |||
receiver to generate the Content-Location attribute of the File element of | receiver to generate the Content-Location attribute of the File element of | |||
the FDT, on-the-fly. This is done by using information in both the | the FDT, on the fly. This is done by using information in both the | |||
extensions to the FDT and the LCT header. The combination of pre-delivery | extensions to the FDT and the LCT header. The combination of pre-delivery | |||
of static file metadata and receiver self-generation of dynamic file | of static file metadata and receiver self generation of dynamic file | |||
metadata avoids the necessity of continuously sending the FDT Instances for | metadata avoids the necessity of continuously sending the FDT-Instances for | |||
real-time objects. Such modified FDT functionality in ROUTE is referred to | real-time objects. Such modified FDT functionality in ROUTE is referred to | |||
as the Extended FDT.</t> | as the Extended FDT.</t> | |||
</section> | ||||
</section> | <section anchor="sect-9.3" numbered="true" toc="default"> | |||
<name>In-Band Signaling of Object Transfer Length</name> | ||||
<section title="In Band Signaling of Object Transfer Length" anchor="sect | <t> | |||
-9.3"><t> | ||||
As an extension to FLUTE, ROUTE allows for using EXT_TOL LCT header | As an extension to FLUTE, ROUTE allows for using EXT_TOL LCT header | |||
extension with 24 bits or, if required, 48 bits of to signal the | extension with 24 bits or, if required, 48 bits to signal the Transfer | |||
Transfer Length directly within the ROUTE packet.</t> | Length directly within the ROUTE packet.</t> | |||
<t> | <t> | |||
The transport object length can also be determined without the use of | The transport object length can also be determined without the use of | |||
EXT_TOL by examining the LCT packet with the Close Object (B) flag. | EXT_TOL by examining the LCT packet with the Close Object flag (B). | |||
However, if this packet is lost, then the EXT_TOL information can be | However, if this packet is lost, then the EXT_TOL information can be | |||
used by the receiver to determine the transport object length.</t> | used by the receiver to determine the transport object length.</t> | |||
<t> | ||||
Applications using ROUTE for delivery of low-latency streaming content may | ||||
make use of this feature for sender-end latency optimizations: the sender | ||||
does not have to wait for the completion of the packaging of a whole | ||||
Application Object to find its Transfer Length to be included in the FDT | ||||
before the sending can start. Rather, partially encoded data can already | ||||
be started to be sent via the ROUTE sender. As the time approaches when the | ||||
encoding of the Application Object is nearing completion, and the length of | ||||
the object becomes known (e.g., the time of writing the last CMAF Chunk of | ||||
a DASH segment), only then the sender can signal the object length using | ||||
the EXT TOL LCT header. For example, for a 2-second DASH segment with | ||||
100-millisecond chunks, it may result in saving up to 1.9 second latency at | ||||
the sending end.</t> | ||||
<t> | </section> | |||
Applications using ROUTE for delivery of low-latency streaming | <section anchor="sect-9.4" numbered="true" toc="default"> | |||
content may make use of this feature for sender-end latency | <name>Repair Protocol Concepts</name> | |||
optimizations: the sender does not have to wait for the completion of | ||||
the packaging of a whole Application Object to find its transfer | ||||
length to be included in the FDT before the sending can start. | ||||
Rather, partially encoded data can already be started to be sent via | ||||
the ROUTE sender. As the time approaches when the encoding of the | ||||
Application Object is nearing completion, and the length of the | ||||
object becomes known (e.g. time of writing the last CMAF Chunk of a | ||||
DASH segment), only then the sender can signal the object length | ||||
using the EXT TOL LCT header. For example, for a 2 seconds DASH | ||||
segment with 100 millisecond chunks, it may result in saving up to | ||||
1.9 second latency at the sending end.</t> | ||||
</section> | <t> | |||
The ROUTE repair protocol is FEC-based and is enabled as an additional | ||||
layer between the transport layer (e.g., UDP) and the object delivery layer | ||||
protocol. The FEC reuses concepts of the FEC Framework defined in RFC 6363 | ||||
<xref target="RFC6363" format="default"/>, but in contrast to the FEC | ||||
Framework in RFC 6363 <xref target="RFC6363" format="default"/>, the ROUTE | ||||
repair protocol does not protect packets but instead protects delivery | ||||
objects as delivered in the source protocol. In addition, as an extension | ||||
to FLUTE, it supports the protection of multiple objects in one source | ||||
block which is in alignment with the FEC Framework as defined in RFC 6363 | ||||
<xref target="RFC6363" format="default"/>. Each FEC source block may | ||||
consist of parts of a delivery object, as a single delivery object (similar | ||||
to FLUTE) or multiple delivery objects that are bundled prior to FEC | ||||
protection. ROUTE FEC makes use of FEC schemes in a similar way as those | ||||
defined in RFC 5052 <xref target="RFC5052" format="default"/> and uses the | ||||
terminology of that document. The FEC scheme defines the FEC encoding and | ||||
decoding as well as the protocol fields and procedures used to identify | ||||
packet payload data in the context of the FEC scheme.</t> | ||||
<t> | ||||
In ROUTE, all packets are LCT packets as defined in RFC 5651 | ||||
<xref target="RFC5651" format="default"/>. Source and repair packets may be d | ||||
istinguished by:</t> | ||||
<ul spacing="normal"> | ||||
<li>Different ROUTE sessions, i.e., they are carried on different | ||||
UDP/IP port combinations.</li> | ||||
<li>Different LCT channels, i.e., they use different TSI values in the | ||||
LCT header.</li> | ||||
<li>The most significant PSI bit in the LCT, if carried in the same LC | ||||
T | ||||
channel. This mode of operation is mostly suitable for FLUTE-compatible | ||||
deployments.</li> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
<section anchor="sect-10" numbered="true" toc="default"> | ||||
<name>Interoperability Chart</name> | ||||
<t> | ||||
As noted in prevision sections, ATSC-ROUTE <xref target="ATSCA331"/> and DVB- | ||||
MABR | ||||
<xref target="DVBMABR"/> are considered services using this document that con | ||||
strain | ||||
specific features as well as add new ones. In this context, the | ||||
following table is an informative comparison of the interoperability | ||||
of ROUTE as specified in this document with ATSC-ROUTE | ||||
<xref target="ATSCA331"/> and DVB-MABR <xref target="DVBMABR"/>:</t> | ||||
<section title="Repair Protocol Concepts" anchor="sect-9.4"><t> | <table anchor="interoperability" align="center"> | |||
The ROUTE repair protocol is FEC-based and is enabled as an | <name>Interoperability Chart</name> | |||
additional layer between the transport layer (e.g., UDP) and the | <thead> | |||
object delivery layer protocol. The FEC reuses concepts of FEC | <tr> | |||
Framework defined in RFC 6363 <xref target="RFC6363"/>, but in contrast to th | <th align="left" rowspan="1" colspan="1">Element</th> | |||
e FEC | <th align="left" rowspan="1" colspan="1">ATSC-ROUTE</th> | |||
Framework in RFC 6363 <xref target="RFC6363"/> the ROUTE repair protocol does | <th align="left" rowspan="1" colspan="1">This Document</th> | |||
not | <th align="left" rowspan="1" colspan="1">DVB-MABR</th> | |||
protect packets, but instead it protects delivery objects as | </tr> | |||
delivered in the source protocol. In addition, as an extension to | ||||
FLUTE, it supports the protection of multiple objects in one source | ||||
block which is in alignment with the FEC Framework as defined in RFC | ||||
6363 <xref target="RFC6363"/>. Each FEC source block may consist of parts of | ||||
a | ||||
delivery object, as a single delivery object (similar to FLUTE) or | ||||
multiple delivery objects that are bundled prior to FEC protection. | ||||
ROUTE FEC makes use of FEC schemes in a similar way as those defined | ||||
in RFC 5052 <xref target="RFC5052"/> and uses the terminology of that documen | ||||
t. The | ||||
FEC scheme defines the FEC encoding and decoding, as well as the | ||||
protocol fields and procedures used to identify packet payload data | ||||
in the context of the FEC scheme.</t> | ||||
<t> | </thead> | |||
In ROUTE all packets are LCT packets as defined in RFC 5651 | <tbody> | |||
<xref target="RFC5651"/>. Source and repair packets may be distinguished by:< | ||||
/t> | ||||
<t><list style="symbols"><t>Different ROUTE sessions; i.e., they are carr | <tr> | |||
ied on different | <td align="left" rowspan="2" colspan="1">LCT header field</td> | |||
UDP/IP port combinations.</t> | <td align="left" rowspan="1" colspan="1">PSI LSB set to 0 for Source | |||
Flow</td> | ||||
<td align="left" rowspan="1" colspan="1">Not defined</td> | ||||
<td align="left" rowspan="1" colspan="1">Set to 1 for Source Flow for CMAF | ||||
Random Access chunk</td> | ||||
</tr> | ||||
<t>Different LCT channels; i.e., they use different TSI values in the | <tr> | |||
LCT header.</t> | <td align="left" rowspan="1" colspan="1">CCI may be set to 0</td> | |||
<td align="left" rowspan="1" colspan="2">CCI may be set to EPT for Source | ||||
Flow</td> | ||||
</tr> | ||||
<t>The most significant PSI bit in the LCT, if carried in the same LCT | <tr> | |||
channel. This mode of operation is mostly suitable for FLUTE-compatible | <td align="left" rowspan="2" colspan="1">LCT header extensions</td> | |||
deployments.</t> | <td align="left" rowspan="1" colspan="1">EXT_ROUTE_&zwsp;PRESENTATION_TIME | |||
Header used for Media Delivery Event (MDE) mode</td> | ||||
<td align="left" rowspan="1" colspan="1">Not defined; may be added by a pr | ||||
ofile.</td> | ||||
<td align="left" rowspan="1" colspan="1">Shall not be used.</td> | ||||
</tr> | ||||
</list> | <tr> | |||
</t> | <td align="left" rowspan="1" colspan="1">EXT_TIME Header linked to MDE mod | |||
e in Annex A.3.7.2 <xref target="ATSCA331"/></td> | ||||
<td align="left" rowspan="1" colspan="2">EXT_TIME Header may be used regar | ||||
dless (for FDT-Instance@Expires calculation)</td> | ||||
</tr> | ||||
</section> | <tr> | |||
<td align="left" rowspan="1" colspan="1">Codepoints</td> | ||||
<td align="left">Full set</td> | ||||
<td align="left">Does not specify range 11 - 255 (leaves to profiles)</td> | ||||
<td align="left">Restricted to 5 - 9</td> | ||||
</tr> | ||||
</section> | <tr> | |||
<td align="left" rowspan="1" colspan="1">Session metadata</td> | ||||
<td align="left">Full set</td> | ||||
<td align="left">Only defines a small subset of data necessary for setting | ||||
up Source and | ||||
Repair Flows. Does not define format or encoding of data except if data is | ||||
integral/alphanumerical. Leaves rest to profiles.</td> | ||||
<td align="left">Reuses A/331 metadata, duplicated from its own Service si | ||||
gnaling.</td> | ||||
</tr> | ||||
<section title="Interoperability Chart" anchor="sect-10"><t> | <tr> | |||
As noted in prevision sections, ATSC-ROUTE [ATSCA331] and DVB-MABR | <td align="left" rowspan="2" colspan="1">Extended FDT</td> | |||
[DVBMABR] are considered services using this document that constrain | <td align="left">Instance shall not be sent with Source Flow</td> | |||
specific features as well as add new ones. In this context, the | <td align="left">Not restricted, may be restricted by a profile.</td> | |||
following table is an informative comparison of the interoperability | <td align="left">Instance shall not be sent with Source Flow</td> | |||
of ROUTE as specified in this document, with the ATSC-ROUTE | </tr> | |||
[ATSCA331] and DVB-MABR [DVBMABR]:</t> | <tr> | |||
<td align="left">No restriction</td> | ||||
<td align="center" rowspan="1" colspan="2">Only allowed in File Mode</td> | ||||
</tr> | ||||
<figure><artwork><![CDATA[ | <tr> | |||
+---------------+---------------+--------------------+-----------------+ | <td align="left" rowspan="1" colspan="1">Delivery Object Mode</td> | |||
| Element | ATSC-ROUTE | This Document | DVB-MABR | | <td align="center" rowspan="1" colspan="2">File, Entity, Signed/unsigned pac | |||
| | | | | | kage</td> | |||
+--------+------+---------------+--------------------+-----------------+ | <td align="left">Signed/unsigned package not allowed</td> | |||
| LCT |PSI | Set to 0 | Not defined | Set to 1 for | | </tr> | |||
| header |least | for Source | | Source Flow for | | ||||
| fields |signi-| Flow. | | CMAF Random | | ||||
| |ficant| | | access chunk | | ||||
| |bit | | | | | ||||
| +------+---------------+--------------------------------------+ | ||||
| |CCI | May be set | May be set to EPT for Source Flow | | ||||
| | | to 0 | | | ||||
+--------+------+---------------+--------------------+-----------------+ | ||||
| LCT header | EXT_ROUTE_ | Not defined, | Shall not | | ||||
| extensions | PRESENTATION_ | may be added | be used | | ||||
| | TIME Header | by a profile. | | | ||||
| | used for | | | | ||||
| | MDE mode | | | | ||||
| +---------------+--------------------+-----------------+ | ||||
| | EXT_TIME | EXT_TIME Header may be used | | ||||
| | Header | regardless (for | | ||||
| | linked to | FDT-Instance@Expires | | ||||
| | MDE mode | calculation) | | ||||
| | in Annex | | | ||||
| | A.3.7.2 | | | ||||
+---------------+---------------+--------------------+-----------------+ | ||||
| Codepoints | Full set | Does not specify | Restricted | | ||||
| | | range 11 - 255 | to 5 - 9 | | ||||
| | | (leaves to | | | ||||
| | | profiles) | | | ||||
+---------------+---------------+--------------------+-----------------+ | ||||
| Session | Full set | Only defines | Reuses A/331 | | ||||
| metadata | | a small subset | metadata, | | ||||
| | | of data necessary | duplicated | | ||||
| | | for setting up | from its own | | ||||
| | | Source and Repair | service | | ||||
| | | Flows. | signaling. | | ||||
| | | Does not define | | | ||||
| | | format or | | | ||||
| | | encoding of data | | | ||||
| | | except if data is | | | ||||
| | | integral/ | | | ||||
| | | alphanumerical. | | | ||||
| | | Leaves rest to | | | ||||
| | | profiles. | | | ||||
+---------------+---------------+--------------------+-----------------+ | ||||
| Extended | Instance | Not restricted, | Instance shall | | ||||
| FDT | shall not | may be | not be sent | | ||||
| | be sent | restricted | with Source | | ||||
| | with Source | by a profile. | Flow | | ||||
| | Flow | | | | ||||
| +---------------+--------------------+-----------------+ | ||||
| | No | Only allowed in File Mode | | ||||
| | restriction | | | ||||
+---------------+---------------+--------------------+-----------------+ | ||||
| Delivery | File, Entity, Signed/ | Signed/ | | ||||
| Object | unsigned package | unsigned | | ||||
| Mode | | package not | | ||||
| | | allowed | | ||||
+---------------+---------------+--------------------+-----------------+ | ||||
| Sender | Defined for | Defined for DASH segment and CMAF | | ||||
| operation: | DASH | Chunks | | ||||
| Packet- | segment | | | ||||
| ization | | | | ||||
+---------------+---------------+--------------------------------------+ | ||||
| Receiver | Object | Object may be handed before | | ||||
| object | handed | completion if | | ||||
| recovery | to | MPD@availabilityTimeOffset | | ||||
| | application | signaled | | ||||
| | upon | | | ||||
| | complete | | | ||||
| | reception | | | ||||
| +---------------+--------------------------------------+ | ||||
| | - | Fast Stream acquisition | | ||||
| | | guideline provided | | ||||
+---------------+---------------+--------------------------------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section title="Security and Privacy Considerations" anchor="sect-11"><se | <tr> | |||
ction title="Security Considerations" anchor="sect-11.1"><t> | <td align="left" rowspan="1" colspan="1">Sender operation: Packetization</td | |||
As noted in <xref target="sect-9"/>, ROUTE is aligned with FLUTE as specified | > | |||
in | <td align="left">Defined for DASH segment</td> | |||
RFC 6726 <xref target="RFC6726"/> (see <xref target="sect-9"/>), and only div | <td align="center" colspan="2">Defined for DASH segment and CMAF Chunks | |||
erges in certain | </td> | |||
signaling optimizations, especially for the real-time object delivery | </tr> | |||
case. Hence most of the security considerations documented in RFC | ||||
6726 <xref target="RFC6726"/> for the data flow itself, the session metadata | ||||
(session control parameters in RFC 6726 <xref target="RFC6726"/>), and the | ||||
associated building blocks apply directly to ROUTE, as elaborated in | ||||
the following along with some additional considerations.</t> | ||||
<t> | <tr> | |||
Both encryption and integrity protection applied either on file or | <td align="left" rowspan="2" colspan="1">Receiver object recovery</td> | |||
packet level, as recommended in file corruption considerations of RFC | <td align="left">Object handed to application upon complete reception</td> | |||
6726 <xref target="RFC6726"/> SHOULD be used for ROUTE. Additionally, RFC 374 | <td align="center" rowspan="1" colspan="2">Object may be handed before compl | |||
0 | etion if MPD@availabilityTimeOffset signaled</td> | |||
<xref target="RFC3740"/> documents multicast security architecture in great d | </tr> | |||
etail | ||||
with clear security recommendations which SHOULD be followed.</t> | ||||
<t> | <tr> | |||
When ROUTE is carried over UDP and a reverse channel from receiver to | <td align="center">-</td> | |||
sender is available, the security mechanisms provided in RFC 6347 | <td align="center" colspan="2">Fast Stream acquisition guidelines provided</ | |||
<xref target="RFC6347"/> SHALL apply. At the time, draft DTLS 1.3 based on TS | td> | |||
L 1.3 | </tr> | |||
<xref target="I-D.ietf-tls-dtls13"/> is pending publication, and may be consi | ||||
dered as the | ||||
alternate means for security post publication.</t> | ||||
<t> | </tbody> | |||
In regard to considerations for attacks against session description, | </table> | |||
this document does not specify the semantics or mechanism of delivery | ||||
of session metadata, though the same threats apply for service using | ||||
ROUTE as well. Hence a service using ROUTE SHOULD take these threats | ||||
into consideration and address them appropriately following the | ||||
guideline provided by RFC 6726 <xref target="RFC6726"/>. Additionally to the | ||||
recommendations of RFC 6726 <xref target="RFC6726"/>, for Internet connected | ||||
devices, services SHOULD enable clients to access the session | ||||
description information using HTTPS with customary | ||||
authentication/authorization, instead of sending this data via | ||||
multicast/broadcast, since considerable security work has been done | ||||
already in this unicast domain which can enable highly secure access | ||||
of session description data. Accessing via unicast however will have | ||||
different privacy considerations, noted in <xref target="sect-11.2"/>. Note t | ||||
hat in | ||||
general the multicast/broadcast stream is delayed with respect to the | ||||
unicast stream. Therefore, the session description protocol SHOULD | ||||
be time-synchronized with the broadcast stream, particularly if the | ||||
session description contains security-related information.</t> | ||||
<t> | </section> | |||
In regard to FDT, there is one key difference for File Mode when | <section anchor="sect-11" numbered="true" toc="default"> | |||
using File Template in EFDT, which avoids repeated sending of FDT | <name>Security and Privacy Considerations</name> | |||
instance and hence the corresponding threats noted in RFC 6726 | <section anchor="sect-11.1" numbered="true" toc="default"> | |||
<xref target="RFC6726"/> do not apply directly to ROUTE in this case. The thr | <name>Security Considerations</name> | |||
eat | ||||
however is shifted to the ALC/LCT headers, since they carry the | ||||
additional signaling that enables determining Content-Location and | ||||
File@Transfer-Length in this case. Hence integrity protection | ||||
recommendations of ALC/LCT header SHOULD be considered with higher | ||||
emphasis in this case for ROUTE.</t> | ||||
<t> | <t> | |||
As noted in <xref target="sect-9" format="default"/>, ROUTE is aligned with | ||||
FLUTE as specified in RFC 6726 <xref target="RFC6726" format="default"/> | ||||
and only diverges in certain signaling optimizations, especially for the | ||||
real-time object delivery case. Hence, most of the security considerations | ||||
documented in RFC 6726 <xref target="RFC6726" format="default"/> for the | ||||
data flow itself, the session metadata (session control parameters in RFC | ||||
6726 <xref target="RFC6726" format="default"/>), and the associated | ||||
building blocks apply directly to ROUTE as elaborated in the following | ||||
along with some additional considerations.</t> | ||||
<t> | ||||
Both encryption and integrity protection applied either on file or | ||||
packet level, as recommended in the file corruption considerations of RFC | ||||
6726 <xref target="RFC6726" format="default"/>, <bcp14>SHOULD</bcp14> be used | ||||
for ROUTE. Additionally, RFC 3740 | ||||
<xref target="RFC3740" format="default"/> documents multicast security archit | ||||
ecture in great detail | ||||
with clear security recommendations that <bcp14>SHOULD</bcp14> be followed.</ | ||||
t> | ||||
<t> | ||||
When ROUTE is carried over UDP and a reverse channel from receiver to | ||||
sender is available, the security mechanisms provided in RFC 9147 | ||||
<xref target="RFC9147" format="default"/> <bcp14>SHOULD</bcp14> be applied.</ | ||||
t> | ||||
<t> | ||||
In regard to considerations for attacks against session description, this | ||||
document does not specify the semantics or mechanism of delivery of session | ||||
metadata, though the same threats apply for service using ROUTE as | ||||
well. Hence, a service using ROUTE <bcp14>SHOULD</bcp14> take these threats | ||||
into consideration and address them appropriately following the guidelines | ||||
provided by RFC 6726 <xref target="RFC6726" | ||||
format="default"/>. Additionally, to the recommendations of RFC 6726 <xref | ||||
target="RFC6726" format="default"/>, for Internet connected devices, | ||||
services <bcp14>SHOULD</bcp14> enable clients to access the session | ||||
description information using HTTPS with customary | ||||
authentication/authorization, instead of sending this data via | ||||
multicast/broadcast, since considerable security work has been done already | ||||
in this unicast domain, which can enable highly secure access of session | ||||
description data. Accessing via unicast, however, will have different privacy | ||||
considerations, noted in <xref target="sect-11.2" format="default"/>. Note | ||||
that in general the multicast/broadcast stream is delayed with respect to | ||||
the unicast stream. Therefore, the session description protocol | ||||
<bcp14>SHOULD</bcp14> be time synchronized with the broadcast stream, | ||||
particularly if the session description contains security-related | ||||
information.</t> | ||||
<t> | ||||
In regard to FDT, there is one key difference for File Mode when using File | ||||
Template in EFDT, which avoids repeated sending of FDT-Instances and hence, | ||||
the corresponding threats noted in RFC 6726 <xref target="RFC6726" | ||||
format="default"/> do not apply directly to ROUTE in this case. The threat, | ||||
however, is shifted to the ALC/LCT headers, since they carry the additional | ||||
signaling that enables determining Content-Location and | ||||
File@Transfer-Length in this case. Hence, integrity protection | ||||
recommendations of ALC/LCT header <bcp14>SHOULD</bcp14> be considered with | ||||
higher emphasis in this case for ROUTE.</t> | ||||
<t> | ||||
Finally, attacks against the congestion control building block for | Finally, attacks against the congestion control building block for | |||
the case of ROUTE can impact the optional fast stream acquisition | the case of ROUTE can impact the optional fast stream acquisition | |||
specified in <xref target="sect-6.2"/>. Receivers SHOULD have robustness agai | specified in <xref target="sect-6.2" format="default"/>. Receivers <bcp14>SHO | |||
nst | ULD</bcp14> have robustness against | |||
timestamp values that are suspicious, e.g. by comparing the signaled | timestamp values that are suspicious, e.g., by comparing the signaled | |||
time in the LCT headers with the approximate time signaled by the | time in the LCT headers with the approximate time signaled by the | |||
MPD, and SHOULD discard outlying values. Additionally, receivers MUST | MPD, and <bcp14>SHOULD</bcp14> discard outlying values. Additionally, receive | |||
adhere to the expiry timelines as specified in <xref target="sect-6"/>. Integ | rs <bcp14>MUST</bcp14> | |||
rity | adhere to the expiry timelines as specified in <xref target="sect-6" format=" | |||
protection mechanisms documented in RFC 6726 <xref target="RFC6726"/> SHOULD | default"/>. Integrity | |||
be used | protection mechanisms documented in RFC 6726 <xref target="RFC6726" format="d | |||
efault"/> <bcp14>SHOULD</bcp14> be used | ||||
to address this threat.</t> | to address this threat.</t> | |||
</section> | ||||
</section> | <section anchor="sect-11.2" numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | ||||
<section title="Privacy Considerations" anchor="sect-11.2"><t> | <t> | |||
Encryption mechanisms recommended for security considerations in | Encryption mechanisms recommended for security considerations in | |||
<xref target="sect-11.1"/> SHOULD also be applied to enable privacy and prote ction | <xref target="sect-11.1" format="default"/> <bcp14>SHOULD</bcp14> also be app lied to enable privacy and protection | |||
from snooping attacks.</t> | from snooping attacks.</t> | |||
<t> | ||||
<t> | ||||
Since this protocol is primarily targeted for IP multicast/broadcast | Since this protocol is primarily targeted for IP multicast/broadcast | |||
environment where the end user is mostly listening, identity | environments where the end user is mostly listening, identity | |||
protection and user data retention considerations are more protected | protection and user data retention considerations are more protected | |||
than in the unicast case. Best practices for enabling privacy on IP | than in the unicast case. Best practices for enabling privacy on IP | |||
multicast/broadcast SHOULD be applied by the operators, e.g. | multicast/broadcast <bcp14>SHOULD</bcp14> be applied by the operators, e.g., | |||
Recommendations for DNS Privacy Service Operators in RFC 8932 | "<xref target="RFC8932" format="title"/>" in RFC 8932 | |||
<xref target="RFC8932"/>.</t> | <xref target="RFC8932" format="default"/>.</t> | |||
<t> | ||||
<t> | ||||
However, if clients access session description information via HTTPS, | However, if clients access session description information via HTTPS, | |||
the same privacy considerations and solutions SHALL apply to this | the same privacy considerations and solutions <bcp14>SHALL</bcp14> apply to t | |||
access as for regular HTTPS communication, an area which is very well | his | |||
access as for regular HTTPS communication, an area that is very well | ||||
studied and the concepts of which are being integrated directly into | studied and the concepts of which are being integrated directly into | |||
newer transport protocols such as IETF QUIC <xref target="RFC9000"/> enabling | newer transport protocols such as IETF QUIC <xref target="RFC9000" format="de | |||
HTTP/3 | fault"/> enabling HTTP/3 | |||
<xref target="I-D.ietf-quic-http"/>. Hence such newer protocols SHOULD be use | <xref target="I-D.ietf-quic-http" format="default"/>. Hence, such newer proto | |||
d to foster privacy.</t> | cols <bcp14>SHOULD</bcp14> be used to foster privacy.</t> | |||
<t> | ||||
<t> | Note that streaming services <bcp14>MAY</bcp14> contain content that may only | |||
Note that streaming services MAY contain content that may only be | be | |||
accessed via DRM (digital rights management) systems. DRM systems | accessed via DRM (digital rights management) systems. DRM systems | |||
can prevent unauthorized access to content delivered via ROUTE.</t> | can prevent unauthorized access to content delivered via ROUTE.</t> | |||
</section> | ||||
</section> | ||||
<section anchor="sect-12" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>This document has no IANA actions. | ||||
</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
</section> | <displayreference target="I-D.ietf-quic-http" to="HTTP3"/> | |||
</section> | <references> | |||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5651.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5775.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6726.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6330.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3986.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.1952.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2557.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8551.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5445.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5052.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6363.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7231.xml"/> | ||||
<section title="IANA Considerations" anchor="sect-12"><t> | <reference anchor="ATSCA331"> | |||
This document makes no requests for IANA action.</t> | <front> | |||
<title>Signaling, Delivery, Synchronization, and | ||||
Error Protection</title> | ||||
<author> | ||||
<organization>Advanced Television Systems Committee</organization> | ||||
</author> | ||||
<date month="March" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="ATSC Standard" value="A/331:2022-03"/> | ||||
</reference> | ||||
</section> | </references> | |||
<references> | ||||
<name>Informative References</name> | ||||
</middle> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R FC.6968.xml"/> | |||
<back> | <reference anchor="DVBMABR"> | |||
<references title="Normative References"> | <front> | |||
&RFC2119; | <title> | |||
&RFC8174; | Digital Video Broadcasting (DVB); Adaptive media streaming over IP | |||
&RFC5651; | multicast | |||
&RFC5775; | </title> | |||
&RFC6726; | <author> | |||
&RFC6330; | <organization>ETSI</organization> | |||
&RFC3986; | </author> | |||
&RFC1952; | <date month="November" year="2020"/> | |||
&RFC2557; | </front> | |||
&RFC8551; | <seriesInfo name="ETSI TS" value="103 769"/> | |||
&RFC5445; | <refcontent>version 1.1.1</refcontent> | |||
&RFC5052; | ||||
&RFC6363; | ||||
&RFC7231; | ||||
<!-- | </reference> | |||
draft-zia-route-06-manual.txt(1823): Warning: Failed parsing a reference. Ar | ||||
e | ||||
all elements separated by commas (not periods, not just spaces)?: | ||||
[ATSCA331] ATSC A/331:2019, "ATSC Standard: Signaling, Delivery, | ||||
Synchronization, and Error Protection", June 2019. | ||||
--> | ||||
</references> | <reference anchor="DASH" target="https://www.iso.org/standard/79329.html"> | |||
<references title="Informative References"> | <front> | |||
&RFC6968; | <title>Information technology - Dynamic adaptive streaming over | |||
HTTP (DASH) - Part 1: Media presentation description and segment | ||||
formats</title> | ||||
<author> | ||||
<organization>International Organization for Standardization</orga | ||||
nization> | ||||
</author> | ||||
<date month="December" year="2019"/> | ||||
</front> | ||||
<seriesInfo name="ISO/IEC" value="23009-1:2019"/> | ||||
<refcontent>Fourth edition</refcontent> | ||||
</reference> | ||||
<!-- | <reference anchor="CMAF" target="https://www.iso.org/standard/71975.html"> | |||
draft-zia-route-06-manual.txt(1833): Warning: Failed parsing a reference. Ar | <front> | |||
e | <title>Information technology -- Multimedia application format | |||
all elements separated by commas (not periods, not just spaces)?: | (MPEG-A) -- Part 19: Common media application format (CMAF) for | |||
[DVBMABR] ETSI: "Digital Video Broadcasting (DVB); Adaptive media | segmented media</title> | |||
streaming over IP multicast", ETSI TS 103 769 V1.1.1 (2020-11) | <author> | |||
November 2020. | <organization>International Organization for Standardization</organi | |||
--> | zation> | |||
</author> | ||||
<date month="January" year="2018" /> | ||||
</front> | ||||
<seriesInfo name="ISO/IEC FDIS" value="23000-19"/> | ||||
<refcontent>First edition</refcontent> | ||||
</reference> | ||||
<!-- | <reference anchor="MBMS"> | |||
draft-zia-route-06-manual.txt(1837): Warning: Failed parsing a reference. Ar | <front> | |||
e | <title>Universal Mobile Telecommunications Systems (UMTS); LTE; 5G; | |||
all elements separated by commas (not periods, not just spaces)?: | Multimedia Broadcast/Multicast Service (MBMS); Protocols and | |||
[DASH] ISO/IEC 23009-1:2019: "Information technology - Dynamic | codecs</title> | |||
adaptive streaming over HTTP (DASH) - Part 1: Media presentation | <author> | |||
description and segment formats", Fourth edition, December 2019. | <organization>ETSI</organization> | |||
--> | </author> | |||
<date month="May" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="ETSI TS" value="126 346"/> | ||||
<refcontent>version 16.9.1</refcontent> | ||||
</reference> | ||||
<!-- | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | |||
draft-zia-route-06-manual.txt(1841): Warning: Failed parsing a reference. Ar | C.3740.xml"/> | |||
e | ||||
all elements separated by commas (not periods, not just spaces)?: | ||||
[CMAF] ISO/IEC 23000-19:2018: "Information technology - Multimedia | ||||
application format (MPEG-A) - Part 19: Common media application | ||||
format (CMAF) for segmented media", First edition, January 2018. | ||||
--> | ||||
<!-- | <reference anchor="I-D.ietf-quic-http"> | |||
draft-zia-route-06-manual.txt(1845): Warning: Failed parsing a reference. Ar | <front> | |||
e | <title>Hypertext Transfer Protocol Version 3 (HTTP/3) | |||
all elements separated by commas (not periods, not just spaces)?: | </title> | |||
[MBMS] ETSI: "Universal Mobile Telecommunications Systems (UMTS); | <author fullname="Mike Bishop" role="editor"> </author> | |||
LTE; Multimedia Broadcast/Multicast Service (MBMS); Protocols and | <date month="February" day="2" year="2021"/> | |||
codecs (3GPP TS 26.346 version 13.3.0 Release 13)," Doc. ETSI TS 126 | </front> | |||
346 v13.3.0 (2016-01), European Telecommunications Standards | <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/> | |||
Institute, January 2016. | <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-quic-http- | |||
--> | 34.txt"/> | |||
</reference> | ||||
&RFC3740; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
&I-D.ietf-quic-http; | FC.9147.xml"/> | |||
&RFC9000; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
&RFC6347; | FC.9000.xml"/> | |||
&RFC8932; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
&I-D.ietf-tls-dtls13; | FC.8932.xml"/> | |||
</references> | ||||
<section title="Acknowledgments" anchor="sect-14"><t> | </references> | |||
As outlined in the introduction and in ROUTE concepts in <xref target="sect-9 | </references> | |||
"/>, | <section anchor="sect-14" numbered="false" toc="default"> | |||
<name>Acknowledgments</name> | ||||
<t> | ||||
As outlined in the introduction and in ROUTE concepts in <xref target="sect-9 | ||||
" format="default"/>, | ||||
the concepts specified in this document are the culmination of the | the concepts specified in this document are the culmination of the | |||
collaborative work of several experts and organizations over the | collaborative work of several experts and organizations over the | |||
years. The authors would especially like to acknowledge the work and | years. The authors would especially like to acknowledge the work and | |||
efforts of the following people and organizations to help realize the | efforts of the following people and organizations to help realize the | |||
technologies described in this document (in no specific order): Mike | technologies described in this document (in no specific order): <contact full | |||
Luby, Kent Walker, Charles Lo, and other colleagues from Qualcomm | name="Mike | |||
Luby"/>, <contact fullname="Kent Walker"/>, <contact fullname="Charles Lo"/>, | ||||
and other colleagues from Qualcomm | ||||
Incorporated, LG Electronics, Nomor Research, Sony, and BBC R&D.</t> | Incorporated, LG Electronics, Nomor Research, Sony, and BBC R&D.</t> | |||
</section> | ||||
</section> | </back> | |||
</rfc> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 302 change blocks. | ||||
1791 lines changed or deleted | 1860 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |