rfc9223.original | rfc9223.txt | |||
---|---|---|---|---|
Internet Draft Waqar Zia, | ||||
Thomas Stockhammer, | ||||
Lenaig Chaponniere, | ||||
Giridhar Mandyam, | ||||
Qualcomm Incorporated | ||||
Michael Luby, | ||||
Intended status: Informational BitRipple, Inc. | ||||
Expires: August 2022 February 4, 2022 | ||||
Real-time Transport Object delivery over Unidirectional Transport | Independent Submission W. Zia | |||
(ROUTE) | Request for Comments: 9223 T. Stockhammer | |||
draft-zia-route-06.txt | Category: Informational Qualcomm CDMA Technologies GmbH | |||
ISSN: 2070-1721 L. Chaponniere | ||||
G. Mandyam | ||||
Qualcomm Technologies Inc. | ||||
M. Luby | ||||
BitRipple, Inc. | ||||
April 2022 | ||||
Real-Time Transport Object Delivery over Unidirectional Transport | ||||
(ROUTE) | ||||
Abstract | Abstract | |||
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 | |||
Application Objects, including Application Objects with real-time | Objects, including Application Objects with real-time delivery | |||
delivery constraints, to receivers over a unidirectional transport. | constraints, to receivers over a unidirectional transport. | |||
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, for | that use the ROUTE protocol for delivery of data to receivers; for | |||
example, it can be a file, or a DASH or HLS segment, a WAV audio | example, it can be a file, a Dynamic Adaptive Streaming over HTTP | |||
clip, etc. The ROUTE protocol also supports low-latency streaming | (DASH) or HTTP Live Streaming (HLS) segment, a WAV audio clip, etc. | |||
applications. | The ROUTE protocol also supports low-latency streaming applications. | |||
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 | |||
protocols such as IPSec. | security protocols such as IPsec. | |||
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). | constraining some features). | |||
This is not an IETF specification and does not have IETF consensus. | This is not an IETF specification and does not have IETF consensus. | |||
Status of this Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | ||||
provisions of BCP 78 and BCP 79. | ||||
This document may contain material from IETF Documents or IETF | ||||
Contributions published or made publicly available before November | ||||
10, 2008. The person(s) controlling the copyright in some of this | ||||
material may not have granted the IETF Trust the right to allow | ||||
modifications of such material outside the IETF Standards Process. | ||||
Without obtaining an adequate license from the person(s) controlling | ||||
the copyright in such materials, this document may not be modified | ||||
outside the IETF Standards Process, and derivative works of it may | ||||
not be created outside the IETF Standards Process, except to format | ||||
it for publication as an RFC or to translate it into languages other | ||||
than English. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | ||||
and may be updated, replaced, or obsoleted by other documents at any | ||||
time. It is inappropriate to use Internet-Drafts as reference | ||||
material or to cite them other than as "work in progress." | ||||
The list of current Internet-Drafts can be accessed at | This document is not an Internet Standards Track specification; it is | |||
http://www.ietf.org/ietf/1id-abstracts.txt | published for informational purposes. | |||
The list of Internet-Draft Shadow Directories can be accessed at | This is a contribution to the RFC Series, independently of any other | |||
http://www.ietf.org/shadow.html | RFC stream. The RFC Editor has chosen to publish this document at | |||
its discretion and makes no statement about its value for | ||||
implementation or deployment. Documents approved for publication by | ||||
the RFC Editor are not candidates for any level of Internet Standard; | ||||
see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on August 4, 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9223. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. | |||
include Simplified BSD License text as described in Section 4.e of | ||||
the Trust Legal Provisions and are provided without warranty as | ||||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction...................................................4 | 1. Introduction | |||
1.1. Overview..................................................4 | 1.1. Overview | |||
1.2. Protocol Stack for ROUTE..................................6 | 1.2. Protocol Stack for ROUTE | |||
1.3. Data Model................................................6 | 1.3. Data Model | |||
1.4. Architecture and Scope of Specification...................7 | 1.4. Architecture and Scope of Specification | |||
1.5. Intellectual Property.....................................9 | 1.5. Conventions Used in This Document | |||
1.6. Conventions used in this document.........................9 | 2. ROUTE Packet Format | |||
2. ROUTE Packet Format............................................9 | 2.1. Packet Structure and Header Fields | |||
2.1. Packet Structure and Header Fields........................9 | 2.2. LCT Header Extensions | |||
2.2. LCT Header Extensions....................................11 | 2.3. FEC Payload ID for Source Flows | |||
2.3. FEC Payload ID for Source Flows..........................11 | 2.4. FEC Payload ID for Repair Flows | |||
2.4. FEC Payload ID for Repair Flows..........................12 | 3. Session Metadata | |||
3. Session Metadata..............................................12 | 3.1. Generic Metadata | |||
3.1. Generic Metadata.........................................12 | 3.2. Session Metadata for Source Flows | |||
3.2. Session Metadata for Source Flows........................13 | 3.3. Session Metadata for Repair Flows | |||
3.3. Session metadata for Repair Flows........................14 | 4. Delivery Object Mode | |||
4. Delivery Object Mode..........................................15 | 4.1. File Mode | |||
4.1. File Mode................................................15 | 4.1.1. Extensions to FDT | |||
4.1.1. Extensions to FDT...................................15 | 4.1.2. Constraints on Extended FDT | |||
4.1.2. Constraints on Extended FDT.........................16 | 4.2. Entity Mode | |||
4.2. Entity Mode..............................................16 | 4.3. Unsigned Package Mode | |||
4.3. Unsigned Package Mode....................................17 | 4.4. Signed Package Mode | |||
4.4. Signed Package Mode......................................18 | 5. Sender Operation | |||
5. Sender Operation..............................................18 | 5.1. Usage of ALC and LCT for Source Flow | |||
5.1. Usage of ALC and LCT for Source Flow.....................18 | 5.2. ROUTE Packetization for Source Flow | |||
5.2. ROUTE Packetization for Source Flow......................19 | 5.2.1. Basic ROUTE Packetization | |||
5.2.1. Basic ROUTE Packetization...........................20 | 5.2.2. ROUTE Packetization for CMAF Chunked Content | |||
5.2.2. ROUTE Packetization for CMAF Chunked Content........20 | 5.3. Timing of Packet Emission | |||
5.3. Timing of Packet Emission................................21 | 5.4. Extended FDT Encoding for File Mode Sending | |||
5.4. Extended FDT Encoding for File Mode Sending..............21 | 5.5. FEC Framework Considerations | |||
5.5. FEC Framework Considerations.............................21 | 5.6. FEC Transport Object Construction | |||
5.6. FEC Transport Object Construction........................22 | 5.7. Super-Object Construction | |||
5.7. Super-Object Construction................................24 | 5.8. Repair Packet Considerations | |||
5.8. Repair Packet Considerations.............................24 | 5.9. Summary FEC Information | |||
5.9. Summary FEC Information..................................25 | 6. Receiver Operation | |||
6. Receiver operation............................................26 | 6.1. Basic Application Object Recovery for Source Flows | |||
6.1. Basic Application Object Recovery for Source Flows.......26 | 6.2. Fast Stream Acquisition | |||
6.2. Fast Stream Acquisition..................................28 | 6.3. Generating Extended FDT-Instance for File Mode | |||
6.3. Generating Extended FDT Instance for File Mode...........28 | 6.3.1. File Template Substitution for Content-Location | |||
6.3.1. File Template Substitution for Content-Location | Derivation | |||
Derivation.................................................28 | 6.3.2. File@Transfer-Length Derivation | |||
6.3.2. File@Transfer-Length Derivation.....................29 | 6.3.3. FDT-Instance@Expires Derivation | |||
6.3.3. FDT-Instance@Expires Derivation.....................29 | 7. FEC Application | |||
7. FEC Application...............................................30 | 7.1. General FEC Application Guidelines | |||
7.1. General FEC Application Guidelines.......................30 | 7.2. TOI Mapping | |||
7.2. TOI Mapping..............................................30 | 7.3. Delivery Object Reception Timeout | |||
7.3. Delivery Object Reception Timeout........................31 | 7.4. Example FEC Operation | |||
7.4. Example FEC Operation....................................31 | 8. Considerations for Defining ROUTE Profiles | |||
8. Considerations for Defining ROUTE Profiles....................32 | 9. ROUTE Concepts | |||
9. ROUTE Concepts................................................33 | 9.1. ROUTE Modes of Delivery | |||
9.1. ROUTE Modes of Delivery..................................33 | 9.2. File Mode Optimizations | |||
9.2. File Mode Optimizations..................................33 | 9.3. In-Band Signaling of Object Transfer Length | |||
9.3. In Band Signaling of Object Transfer Length..............33 | 9.4. Repair Protocol Concepts | |||
9.4. Repair Protocol Concepts.................................34 | 10. Interoperability Chart | |||
10. Interoperability Chart.......................................35 | 11. Security and Privacy Considerations | |||
11. Security and Privacy Considerations..........................37 | 11.1. Security Considerations | |||
11.1. Security Considerations.................................37 | 11.2. Privacy Considerations | |||
11.2. Privacy Considerations..................................38 | 12. IANA Considerations | |||
12. IANA Considerations..........................................38 | 13. References | |||
13. References...................................................39 | 13.1. Normative References | |||
13.1. Normative References....................................39 | 13.2. Informative References | |||
13.2. Informative References..................................40 | Acknowledgments | |||
14. Acknowledgments..............................................41 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
1.1. Overview | 1.1. Overview | |||
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 | |||
Application Objects, including Application Objects with real-time | Objects, including Application Objects with real-time delivery | |||
delivery constraints, to receivers over a unidirectional transport. | 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 | |||
RFC 6726 [RFC6726], i.e., transport in the direction of receiver(s) | that in RFC 6726 [RFC6726], i.e., transport in the direction of | |||
from a sender. The robustness is enabled by a built-in mechanism e.g. | receiver(s) from a sender. The robustness is enabled by a built-in | |||
signaling for loss detection, enabling loss recovery, and optionally | mechanism, e.g., signaling for loss detection, enabling loss | |||
integrating application-layer Forward Error Correction (FEC). | recovery, and optionally integrating application-layer Forward Error | |||
Correction (FEC). | ||||
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) [DASH] video segment, a WAV audio clip, an | |||
MPEG Common Media Application Format (CMAF) [CMAF] addressable | MPEG Common Media Application Format (CMAF) [CMAF] addressable | |||
resource, an MPEG-4 video clip, etc. | resource, an MPEG-4 video clip, etc. | |||
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, | |||
so on. Most of these applications are real-time in the sense that | and so on. Most of these applications are real-time in the sense | |||
they are sensitive to and reply upon such timely reception of data. | that they are sensitive to and rely upon such timely reception of | |||
The ROUTE protocol also supports chunked delivery of real-time | data. 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. | Live Streaming (HLS) content with CMAF Chunks. | |||
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. | Management (DRM) system client can also be delivered by ROUTE. | |||
The ROUTE protocol supports a caching model, where Application | The ROUTE protocol supports a caching model where Application Objects | |||
Objects are recovered into a cache at the receiver and may be made | are recovered into a cache at the receiver and may be made available | |||
available to applications via standard HTTP requests from the cache. | to applications via standard HTTP requests from the cache. Many | |||
Many current day applications rely on using HTTP to access content, | current day applications rely on using HTTP to access content; hence, | |||
and hence this approach enables such applications in | this approach enables such applications in broadcast/multicast | |||
broadcast/multicast environments. | environments. | |||
ROUTE is aligned with FLUTE as defined in RFC 6726 [RFC6726] as well | ROUTE is aligned with File Delivery over Unidirectional Transport | |||
as the extensions defined in MBMS [MBMS], but also makes use of some | (FLUTE) as defined in RFC 6726 [RFC6726] as well as the extensions | |||
principles of FCAST (Object Delivery for the ALC and NACK-Oriented | defined in Multimedia Broadcast/Multicast Service (MBMS) [MBMS], but | |||
Reliable Multicast Protocols) as defined in RFC 6968 [RFC6968]; for | 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 [RFC6968]; for | ||||
example, object metadata and the object content may be sent together | example, object metadata and the object content may be sent together | |||
in a compound object. | in a compound object. | |||
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: | enables or enhances the following functionalities: | |||
o Real-time delivery of object-based media data | * Real-time delivery of object-based media data | |||
o Flexible packetization, including enabling media-aware | * 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 | objects | |||
o Independence of Application Objects and delivery objects, i.e. a | * 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. | files. | |||
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 [ATSCA331] for the | |||
remainder of this document. DVB has specified a profile of ATSC-ROUTE | remainder of this document. Digital Video Broadcasting (DVB) has | |||
in DVB Adaptive Media Streaming over IP Multicast (DVB-MABR) | specified a profile of ATSC-ROUTE in DVB Adaptive Media Streaming | |||
[DVBMABR]. This document specifies the Application Object delivery | over IP Multicast (DVB-MABR) [DVBMABR]. This document specifies the | |||
aspects (delivery protocol) for such services, as the corresponding | Application Object delivery aspects (delivery protocol) for such | |||
delivery protocol could be used as a reference by a variety of | services, as the corresponding delivery protocol could be used as a | |||
services by specifying profiles of ROUTE in their respective fora, | reference by a variety of services by specifying profiles of ROUTE in | |||
e.g. by adding new optional features atop or by restricting various | their respective fora, e.g., by adding new optional features atop or | |||
optional features specified in this document in a specific service | by restricting various optional features specified in this document | |||
standard. Hence in the context of this document, the aforementioned | in a specific service standard. Hence, in the context of this | |||
ATSC-ROUTE and DVB-MABR are the services using ROUTE. The definition | document, the aforementioned ATSC-ROUTE and DVB-MABR are the services | |||
of profiles by the services also have to give due consideration to | using ROUTE. The definition of profiles by the services also have to | |||
compatibility issues, and some related guidelines are also provided | give due consideration to compatibility issues, and some related | |||
in this document. | guidelines are also provided in this document. | |||
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 | |||
implementations. | interoperable implementations. | |||
1.2. Protocol Stack for ROUTE | 1.2. Protocol Stack for ROUTE | |||
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 Table 1. The session metadata signaling to | |||
realize ROUTE session as specified in this document MAY be delivered | realize a ROUTE session as specified in this document MAY be | |||
out-of-band or in-band as well. Since ROUTE delivers objects in an | delivered out of band or in band as well. Since ROUTE delivers | |||
application cache at the receiver from where the application can | objects in an application cache at the receiver from where the | |||
access them using HTTP, an application like DASH may use its | application can access them using HTTP, an application like DASH may | |||
standardized unicast streaming mechanisms in conjunction with ROUTE | use its standardized unicast streaming mechanisms in conjunction with | |||
over broadcast/multicast to augment the services. | ROUTE over broadcast/multicast to augment the services. | |||
+-----------------------------------+ | +--------------------------------------------------------+ | |||
|Application (DASH and HLS segments,| | | Application (DASH and HLS segments, CMAF Chunks, etc.) | | |||
| CMAF chunks etc.) | | +--------------------------------------------------------+ | |||
+-----------------------------------+ | | ROUTE | | |||
| ROUTE | | +--------------------------------------------------------+ | |||
+-----------------------------------+ | | UDP | | |||
| UDP | | +--------------------------------------------------------+ | |||
+-----------------------------------+ | | IP | | |||
| IP | | +--------------------------------------------------------+ | |||
+-----------------------------------+ | ||||
Figure 1 Protocol Layering | Table 1: Protocol Layering | |||
1.3. Data Model | 1.3. Data Model | |||
The ROUTE data model is constituted by the following key concepts. | The ROUTE data model is constituted by the following key concepts. | |||
Application Object - data that has meaning to the application that | Application Object: data that has meaning to the application that | |||
uses the ROUTE protocol for delivery of data to receivers, e.g., an | uses the ROUTE protocol for delivery of data to receivers, | |||
Application Object can be a file, or a DASH video segment, a WAV | e.g., an Application Object can be a file, a DASH video | |||
audio clip, an MPEG-4 video clip, etc. | segment, a WAV audio clip, an MPEG-4 video clip, etc. | |||
Delivery Object - An object on course of delivery to the application | Delivery Object: an object on course of delivery to the application | |||
from the ROUTE sender to ROUTE receiver. | from the ROUTE sender to ROUTE receiver. | |||
Transport Object - an object identified by the Transport Object | Transport Object: an object identified by the Transport Object | |||
Identifier (TOI)in RFC 5651 [RFC5651]. It MAY be a either a source | Identifier (TOI) in RFC 5651 [RFC5651]. It MAY be either a | |||
or a repair object, if it is carried by a Source Flow or a Repair | source or a repair object, depending on if it is carried by a | |||
Flow, respectively. | Source Flow or a Repair Flow, respectively. | |||
Transport Session - An Layered Coding Transport (LCT) channel, as | Transport Session: a Layered Coding Transport (LCT) channel, as | |||
defined by RFC 5651 [RFC5651]. Transport session SHALL be uniquely | defined by RFC 5651 [RFC5651]. A Transport Session SHALL be | |||
identified by a unique Transport Session Identifier (TSI) value in | uniquely identified by a unique Transport Session Identifier | |||
the LCT header. The TSI is scoped by the IP address of the sender, | (TSI) value in the LCT header. The TSI is scoped by the IP | |||
and the IP address of the sender together with the TSI uniquely | address of the sender, and the IP address of the sender | |||
identify the session. Transport sessions are a subset of a ROUTE | together with the TSI uniquely identify the session. Transport | |||
session. For media delivery, a Transport Session would typically | Sessions are a subset of a ROUTE session. For media delivery, | |||
carry a media component, for example a DASH Representation. Within | a Transport Session would typically carry a media component, | |||
each transport session, one or more objects are carried, typically | for example, a DASH Representation. Within each Transport | |||
objects that are related, e.g. DASH Segments associated to one | Session, one or more objects are carried, typically objects | |||
Representation. | that are related, e.g., DASH segments associated to one | |||
Representation. | ||||
ROUTE Session - An ensemble or multiplex of one or more Transport | ROUTE Session: an ensemble or multiplex of one or more Transport | |||
Sessions. Each ROUTE Session is associated with an IP address/port | Sessions. Each ROUTE session is associated with an IP address/ | |||
combination. ROUTE session typically carries one or more media | port combination. A ROUTE session typically carries one or | |||
components of streaming media e.g. Representations associated with a | more media components of streaming media e.g., Representations | |||
DASH Media Presentation. | associated with a DASH Media Presentation. | |||
Source Flow - Transport session carrying source data. Source Flow is | Source Flow: a Transport Session carrying source data. Source Flow | |||
independent of the repair Flow, i.e. the Source Flow MAY be used by | is independent of the Repair Flow, i.e., the Source Flow MAY be | |||
a ROUTE receiver without the ROUTE Repair Flows. | used by a ROUTE receiver without the ROUTE Repair Flows. | |||
Repair Flow - Transport session carrying repair data for one or more | Repair Flow: a Transport Session carrying repair data for one or | |||
Source Flows. | more Source Flows. | |||
1.4. Architecture and Scope of Specification | 1.4. Architecture and Scope of Specification | |||
The scope of the ROUTE protocol is to enable robust and real-time | ||||
transport of delivery objects using LCT packets. This architecture | ||||
is depicted in Figure 1. | ||||
The scope of the ROUTE protocol is robust and real-time transport of | ||||
delivery objects using LCT packets. This architecture is depicted in | ||||
Figure 2. | ||||
The normative aspects of the ROUTE protocol focus on the following | The normative aspects of the ROUTE protocol focus on the following | |||
aspects: | aspects: | |||
o The format of the LCT packets that carry the transport objects. | * The format of the LCT packets that carry the transport objects. | |||
o The robust transport of the delivery object using a repair | * The robust transport of the delivery object using a repair | |||
protocol based on Forward Error Correction (FEC). | protocol based on Forward Error Correction (FEC). | |||
o The definition and possible carriage of object metadata along with | * 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. | and/or separate objects. | |||
o The ROUTE session, LCT channel and delivery object description | * 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. | objects. | |||
o The normative aspects (formats, semantics) of the delivery objects | * The normative aspects (formats, semantics) of the delivery objects | |||
conveyed as a content manifest to be delivered along with the | conveyed as a content manifest to be delivered along with 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. | server. | |||
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| | | |||
skipping to change at page 8, line 48 ¶ | skipping to change at line 351 ¶ | |||
| ROUTE | | | +---------------+ +----+----+ | | | ROUTE | | | +---------------+ +----+----+ | | |||
| Sender +----------+ ^ | | | Sender +----------+ ^ | | |||
+----+---+ | | | | | +----+---+ | | | | | |||
| | | +---------------+ | | | | | | +---------------+ | | | |||
| | | | Repair object | | | | | | | | Repair object | | | | |||
| | +->+ recovery +-------+ | | | | +->+ recovery +-------+ | | |||
+----------->+ +---------------+ | | +----------->+ +---------------+ | | |||
ROUTE | | | ROUTE | | | |||
Metadata +--------------------------------------------+ | Metadata +--------------------------------------------+ | |||
Figure 2 Architecture/functional block diagram | Figure 1: Architecture/Functional Block Diagram | |||
1.5. Intellectual Property | ||||
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. | ||||
1.6. Conventions used in this document | 1.5. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. ROUTE Packet Format | 2. ROUTE Packet Format | |||
2.1. Packet Structure and Header Fields | 2.1. Packet Structure and Header Fields | |||
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 [RFC5775], with the UDP | the ALC packet format specified in RFC 5775 [RFC5775] 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 | |||
as depicted in Figure 3 below. | is as depicted in Figure 2. | |||
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 | | |||
| ... | | | ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3 Overall ROUTE packet format | ||||
Figure 2: Overall ROUTE Packet Format | ||||
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 [RFC5651]. | 5651 [RFC5651]. | |||
The LCT packet header fields SHALL be used as defined by the LCT | The LCT packet header fields SHALL be used as defined by the LCT | |||
building block in RFC 5651 [RFC5651]. The semantics and usage of the | building block in RFC 5651 [RFC5651]. The semantics and usage of the | |||
following LCT header fields SHALL be further constrained in ROUTE as | following LCT header fields SHALL be further constrained in ROUTE as | |||
follows: | follows: | |||
Version number (V) - This 4-bit field indicates the protocol version | Version number (V): This 4-bit field indicates the protocol version | |||
number. The version number SHALL be set to '0001', as specified in | number. The version number SHALL be set to '0001', as specified | |||
RFC 5651 [RFC5651]. | in RFC 5651 [RFC5651]. | |||
Congestion Control flag (C) field - This 2-bit field, as defined in | Congestion Control flag (C) field: This 2-bit field, as defined in | |||
RFC 5651 [RFC5651], SHALL be set to '00'. | RFC 5651 [RFC5651], SHALL be set to '00'. | |||
Protocol-Specific Indication (PSI) - The most significant bit of this | Protocol-Specific Indication (PSI): The most significant bit of this | |||
two bit flag is called the Source Packet Indicator (SPI) and | 2-bit flag is called the Source Packet Indicator (SPI) and | |||
indicates whether the current packet is a source packet or an FEC | indicates whether the current packet is a source packet or a FEC | |||
repair packet. The SPI SHALL be set to '1' to indicate a source | repair packet. The SPI SHALL be set to '1' to indicate a source | |||
packet, and SHALL bet set to '0' to indicate a repair packet. | packet and SHALL bet set to '0' to indicate a repair packet. | |||
Transport Session Identifier flag (S) - This 1-bit field SHALL be set | Transport Session Identifier flag (S): This 1-bit field SHALL be set | |||
to '1' to indicate a 32-bit word in the TSI field. | to '1' to indicate a 32-bit word in the TSI field. | |||
Transport Object Identifier flag (O) - This 2-bit field SHALL be set | Transport Object Identifier flag (O): This 2-bit field SHALL be set | |||
to '01' to indicate the number of full 32-bit words in the TOI field. | to '01' to indicate the number of full 32-bit words in the TOI | |||
field. | ||||
Half-word flag (H) - This 1-bit field SHALL be set to '0' to indicate | Half-word flag (H): This 1-bit field SHALL be set to '0' to indicate | |||
that no half-word field sizes are used. | that no half-word field sizes are used. | |||
Codepoint (CP) - This 8-bit field is used to indicate the type of the | Codepoint (CP): This 8-bit field is used to indicate the type of the | |||
payload that is carried by this packet, and for ROUTE, is defined as | payload that is carried by this packet; for ROUTE, it is defined | |||
shown below to indicate the type of delivery object carried in the | as shown below to indicate the type of delivery object carried in | |||
payload of the associated ROUTE packet. The remaining, unmapped | the payload of the associated ROUTE packet. The remaining | |||
Codepoint values can be used by a service using ROUTE. In this case, | unmapped Codepoint values can be used by a service using ROUTE. | |||
the Codepoint values SHALL follow the semantics specified in the | In this case, the Codepoint values SHALL follow the semantics | |||
following table. "IS" stands for Initialization Segment of the media | specified in the following table. "IS" stands for Initialization | |||
content such as the DASH Initialization Segment [DASH]. The various | Segment of the media content such as the DASH Initialization | |||
modes of operation in the table (File/Entity/Package Mode) are | Segment [DASH]. The various modes of operation in the table | |||
specified in Section 4. The table also lists a Codepoint value range | (File/Entity/Package Mode) are specified in Section 4. The table | |||
that is reserved for future service-specific uses. | also lists a Codepoint value range that is reserved for future | |||
service-specific uses. | ||||
Codepoint value | Semantics | +=================+=================================+ | |||
---------------------------------------------------- | | Codepoint value | Semantics | | |||
0 | Reserved (not used) | +=================+=================================+ | |||
1 | Non Real Time (NRT) - File Mode | | 0 | Reserved (not used) | | |||
2 | NRT - Entity Mode | +-----------------+---------------------------------+ | |||
3 | NRT - Unsigned Package Mode | | 1 | Non Real Time (NRT) - File Mode | | |||
4 | NRT - Signed Package Mode | +-----------------+---------------------------------+ | |||
5 | New IS, timeline changed | | 2 | NRT - Entity Mode | | |||
6 | New IS, timeline continued | +-----------------+---------------------------------+ | |||
7 | Redundant IS | | 3 | NRT - Unsigned Package Mode | | |||
8 | Media Segment, File Mode | +-----------------+---------------------------------+ | |||
9 | Media Segment, Entity Mode | | 4 | NRT - Signed Package Mode | | |||
10 | Media Segment, File Mode with CMAF Random | +-----------------+---------------------------------+ | |||
| Access Chunk | | 5 | New IS, timeline changed | | |||
11 - 255 | Reserved, service-specific | +-----------------+---------------------------------+ | |||
| 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 | | ||||
+-----------------+---------------------------------+ | ||||
Congestion Control Information (CCI) - For packets carrying DASH | Table 2: Codepoint Values | |||
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 Section 6.2). Otherwise this field SHALL be | ||||
set to 0. | ||||
Transport Session Identifier (TSI) - This 32-bit field identifies the | Congestion Control Information (CCI): For packets carrying DASH | |||
Transport Session in ROUTE. The context of the Transport Session is | segments, CCI MAY convey the 32-bit earliest presentation time | |||
provided by signaling metadata. The value TSI = 0 SHALL only be used | [DASH] of the DASH segment contained in the ROUTE packet. In this | |||
for service-specific signaling. | case, this information can be used by a ROUTE receiver for fast | |||
stream acquisition (details in Section 6.2). Otherwise, this | ||||
field SHALL be set to 0. | ||||
Transport Object Identifier (TOI) - This 32-bit field SHALL identify | Transport Session Identifier (TSI): This 32-bit field identifies the | |||
the object within this session to which the payload of the current | Transport Session in ROUTE. The context of the Transport Session | |||
packet belongs. The mapping of the TOI field to the object is | is provided by signaling metadata. The value TSI = 0 SHALL only | |||
provided by the Extended File Delivery Table (FDT). | be used for service-specific signaling. | |||
2.2. LCT Header Extensions | Transport Object Identifier (TOI): This 32-bit field SHALL 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). | ||||
2.2. LCT Header Extensions | ||||
The following LCT header extensions are defined or used by ROUTE: | The following LCT header extensions are defined or used by ROUTE: | |||
EXT_FTI - as specified in RFC 5775. | EXT_FTI: as specified in RFC 5775. | |||
EXT_TOL - The length in bytes of the multicast transport object shall | EXT_TOL: the length in bytes of the multicast transport object shall | |||
be signaled using EXT_TOL as specified by ATSC-ROUTE [ATSCA331] with | be signaled using EXT_TOL as specified by ATSC-ROUTE [ATSCA331] | |||
24 bits or, if required, 48 bits of Transfer Length. The frequency of | with 24 bits or, if required, 48 bits of Transfer Length. The | |||
using the EXT_TOL header extension is determined by channel | frequency of using the EXT_TOL header extension is determined by | |||
conditions that may cause the loss of the packet carrying Close | channel conditions that may cause the loss of the packet carrying | |||
Object (B) flag [RFC5651]. | the Close Object flag (B) [RFC5651]. | |||
NOTE: The transport object length can also be determined without the | NOTE: The transport object length can also be determined without | |||
use of EXT_TOL by examining the LCT packet with the Close Object (B) | the use of EXT_TOL by examining the LCT packet with the Close | |||
flag. However, if this packet is lost, then the EXT_TOL information | Object flag (B). However, if this packet is lost, then the | |||
can be used by the receiver to determine the transport object length. | EXT_TOL information can be used by the receiver to determine the | |||
transport object length. | ||||
EXT_TIME Header - as specified in RFC 5651 [RFC5651]. The Sender | EXT_TIME Header: as specified in RFC 5651 [RFC5651]. The Sender | |||
Current Time SHALL be signaled using EXT_TIME. | Current Time SHALL be signaled using EXT_TIME. | |||
2.3. FEC Payload ID for Source Flows | 2.3. FEC Payload ID for Source Flows | |||
The syntax of the FEC Payload ID for the Compact No-Code FEC Scheme | 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 | used in ROUTE Source Flows is a 32-bit unsigned integer value that | |||
SHALL express the start_offset, as an octet number corresponding to | SHALL express the start_offset as an octet number corresponding to | |||
the first octet of the fragment of the delivery object carried in | the first octet of the fragment of the delivery object carried in | |||
this packet. The start_offset value for the first fragment of any | 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 | delivery object SHALL be set to 0. Figure 3 shows the 32-bit | |||
start_offset field. | start_offset field. | |||
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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4 FEC Payload ID for Source Flows. | ||||
2.4. FEC Payload ID for Repair Flows | Figure 3: FEC Payload ID for Source Flows | |||
2.4. FEC Payload ID for Repair Flows | ||||
FEC Payload ID for Repair Flows is specified in RFC 6330 [RFC6330]. | FEC Payload ID for Repair Flows is specified in RFC 6330 [RFC6330]. | |||
3. Session Metadata | 3. Session Metadata | |||
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 MAY signal more metadata to meet its needs. | |||
data format is also not specified beyond its cardinality; the exact | The data format is also not specified beyond its cardinality; the | |||
format of specifying the data is left for the service, e.g. by using | exact format of specifying the data is left for the service, e.g., by | |||
XML encoding format, as has been done by [DVBMABR] and [ATSCA331]. | using XML encoding format, as has been done by [DVBMABR] and | |||
It is specified in the following if an attribute is mandatory (m), | [ATSCA331]. It is specified in the following if an attribute is | |||
conditional mandatory (cm) or optional (o) to realize a basic ROUTE | mandatory (m), conditional mandatory (cm) or optional (o) to realize | |||
session. A mandatory filed SHALL always be present in the session | a basic ROUTE session. A mandatory field SHALL always be present in | |||
metadata, and a conditional mandatory field SHALL be present if the | the session metadata, and a conditional mandatory field SHALL be | |||
specified condition is true. The delivery of the session metadata to | present if the specified condition is true. The delivery of the | |||
the ROUTE receiver is beyond scope of this document. | session metadata to the ROUTE receiver is beyond the scope of this | |||
document. | ||||
3.1. Generic Metadata | 3.1. Generic Metadata | |||
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: | |||
ROUTE version number (m): The version number of ROUTE used in this | ROUTE version number (m): the version number of ROUTE used in this | |||
session. The version number conforming to this document SHALL be 1. | session. The version number conforming to this document SHALL be | |||
1. | ||||
Connection ID (m): unique identifier of a Connection, usually | Connection ID (m): the unique identifier of a Connection, usually | |||
consisting of 4-tuple: source IP address/source port number, | consisting of the following 4-tuple: source IP address/source port | |||
destination IP address/destination port number. The IP addresses can | number, destination IP address/destination port number. The IP | |||
be IPv4 or IPv6 addresses, depending upon which IP version is used by | addresses can be IPv4 or IPv6 addresses depending upon which IP | |||
the deployment. | version is used by the deployment. | |||
3.2. Session Metadata for Source Flows | 3.2. Session Metadata for Source Flows | |||
stsi (m) - LCT TSI value corresponding to the transport session for | stsi (m): The LCT TSI value corresponding to the Transport Session | |||
the Source Flow. | for the Source Flow. | |||
rt (o) - A Boolean flag which SHALL indicate whether the content | rt (o): A Boolean flag that SHALL indicate whether the content | |||
component carried by this Source Flow corresponds to real-time | component carried by this Source Flow corresponds to real-time | |||
streaming media, or non-real-time content. When set to "true", it | streaming media or non-real-time content. When set to "true", it | |||
SHALL be an indication of real-time content, and when absent or set | SHALL be an indication of real-time content, and when absent or | |||
to "false", it SHALL be an indication of non-real-time (NRT) content. | set to "false", it SHALL be an indication of non-real-time (NRT) | |||
content. | ||||
minBufferSize (o) - A 32-bit unsigned integer which SHALL represent, | minBufferSize (o): A 32-bit unsigned integer that SHALL represent, | |||
in kilobytes, the minimum required storage size of the receiver | 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. | |||
buffer holds the data belonging to a Source Object till its complete | The buffer holds the data belonging to a source object until its | |||
reception. This attribute is only applicable when rt = "true". | complete reception. This attribute is only applicable when rt = | |||
"true". | ||||
A service which chooses not to signal this attribute relies on | A service that chooses not to signal this attribute relies on the | |||
receiver implementation, which must discard the received data beyond | receiver implementation, which must discard the received data | |||
its buffering capability. Such discarding of data will impact the | beyond its buffering capability. Such discarding of data will | |||
service quality. | impact the service quality. | |||
EFDT (cm) - when present, SHALL contain a single instance of an FDT- | EFDT (cm): When present, SHALL contain a single instance of an FDT- | |||
Instance element per RFC 6726 FLUTE [RFC6726], which MAY contain the | Instance element per RFC 6726 FLUTE [RFC6726], which MAY contain | |||
optional FDT extensions as defined in Section 4.1. The optional EFDT | the optional FDT extensions as defined in Section 4.1. The | |||
element MAY only be present for File Mode of delivery. In File Mode, | optional EFDT element MAY only be present for File Mode of | |||
it SHALL be present if this Source Flow transports streaming media | delivery. In File Mode, it SHALL be present if this Source Flow | |||
segments. | transports streaming media segments. | |||
contentType (o) - A string that SHALL represent the media type for | contentType (o): A string that SHALL represent the media type for | |||
the media content. It SHALL obey the semantics of the Content-Type | the media content. It SHALL obey the semantics of the Content- | |||
header as specified by HTTP/1.1 protocol in RFC 7231 [RFC7231]. This | Type header as specified by the HTTP/1.1 protocol in RFC 7231 | |||
document does not define any new contentType strings. In its absence, | [RFC7231]. This document does not define any new contentType | |||
the signalling of media type for the media content is beyond the | strings. In its absence, the signaling of media type for the | |||
scope of this document. | media content is beyond the scope of this document. | |||
applicationMapping (m) - A set of identifiers that provide an | applicationMapping (m): A set of identifiers that provide an | |||
application-specific mapping of the received Application Objects to | application-specific mapping of the received Application Objects | |||
the Source Flows. For example, for DASH, this would provide the | to the Source Flows. For example, for DASH, this would provide | |||
mapping a Source Flow to a specific DASH representation from a Media | the mapping of a Source Flow to a specific DASH Representation | |||
Presentation Description (MPD), the latter identified by its | from a Media Presentation Description (MPD), the latter identified | |||
Representation and corresponding Adaptation Set and Period IDs. | by its Representation and corresponding Adaptation Set and Period | |||
IDs. | ||||
3.3. Session metadata for Repair Flows | 3.3. Session Metadata for Repair Flows | |||
minBuffSize (o) - A 32-bit unsigned integer whose value SHALL | minBuffSize (o): A 32-bit unsigned integer whose value SHALL | |||
represent a required size of the receiver transport buffer for AL-FEC | represent a required size of the receiver transport buffer for | |||
decoding processing. When present, this attribute SHALL indicate the | AL-FEC decoding processing. When present, this attribute SHALL | |||
minimum buffer size that is required to handle all associated objects | indicate the minimum buffer size that is required to handle all | |||
that are assigned to a super-object i.e. a delivery object formed by | associated objects that are assigned to a super-object, i.e., a | |||
the concatenation of multiple FEC transport objects in order to | delivery object formed by the concatenation of multiple FEC | |||
bundle these FEC transport objects for AL-FEC protection. | transport objects in order to bundle these FEC transport objects | |||
for AL-FEC protection. | ||||
A service which chooses not to signal this attribute relies on | A service that chooses not to signal this attribute relies on the | |||
receiver implementation, which must discard the received repair data | receiver implementation, which must discard the received repair | |||
beyond its buffering capability. Such discarding of data will impact | data beyond its buffering capability. Such discarding of data | |||
the service quality. | will impact the service quality. | |||
fecOTI (m) - A parameter consisting of the concatenation of Common | fecOTI (m): A parameter consisting of the concatenation of Common | |||
and Scheme-Specific FEC Object Transmission Information (FEC OTI) as | and Scheme-Specific FEC Object Transmission Information (FEC OTI) | |||
defined in Sections 3.3.2 and 3.3.3 of RFC 6330 [RFC6330], and which | as defined in Sections 3.3.2 and 3.3.3 of [RFC6330] and that | |||
corresponds to the delivery objects carried in the Source Flow to | corresponds to the delivery objects carried in the Source Flow to | |||
which this Repair Flow is associated, with the following | which this Repair Flow is associated, with the following | |||
qualification. The 40-bit Transfer Length (F) field may either | qualification: the 40-bit Transfer Length (F) field may either | |||
represent the actual size of the object, or it is encoded as all | 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 | zeroes. In the latter case, the FEC transport object size either | |||
size is either unknown, or cannot be represented by this attribute. | is unknown or cannot be represented by this attribute. In other | |||
In other words, for the all-zeroes format, the delivery objects in | words, for the all-zeroes format, the delivery objects in the | |||
the Source flow correspond to streaming content - either a live | Source Flow correspond to streaming content, either a live Service | |||
Service whereby content encoding has not yet occurred at the time | whereby content encoding has not yet occurred at the time this | |||
this session data was generated, or pre-recorded streaming content | session data was generated or pre-recorded streaming content whose | |||
whose delivery object sizes, albeit known at the time of session data | delivery object sizes, albeit known at the time of session data | |||
generation, are variable and cannot be represented as a single value | generation, are variable and cannot be represented as a single | |||
by the fecOTI attribute. | value by the fecOTI attribute. | |||
ptsi (m) - TSI value(s) of each Source Flow protected by this Repair | ptsi (m): TSI value(s) of each Source Flow protected by this Repair | |||
Flow. | Flow. | |||
mappingTOIx (o) - Values of the constant X for use in deriving the | 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 delivery object of each protected Source Flow from the | |||
TOI of the FEC (super-)object. The default value is "1". Multiple | TOI of the FEC (super-)object. The default value is "1". | |||
mappingTOIx values MAY be provided for each protected Source Flow, | Multiple mappingTOIx values MAY be provided for each protected | |||
depending upon the usage of FEC (super-)object. | Source Flow depending upon the usage of FEC (super-)object. | |||
mappingTOIy (o) - The corresponding constant Y to each mappingTOIx, | mappingTOIy (o): The corresponding constant Y to each mappingTOIx, | |||
when present, for use in deriving the parent SourceTOI value from the | when present, for use in deriving the parent SourceTOI value from | |||
above equation. The default value is "0". | the above equation. The default value is "0". | |||
4. Delivery Object Mode | 4. Delivery Object Mode | |||
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 | |||
application. The signaling of the delivery object mode is done on an | signaling of the delivery object mode is done on an object basis | |||
object based using Codepoint as specified in Section 2.1. | using Codepoint as specified in Section 2.1. | |||
4.1. File Mode | 4.1. File Mode | |||
File mode uses an out-of-band Extended FDT (EDFT) signaling for | 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. | considerations. | |||
4.1.1. Extensions to FDT | 4.1.1. Extensions to FDT | |||
Following extensions are specified to FDT specified in RFC 6726 | The following extensions are specified to FDT, as specified in RFC | |||
[RFC6726]. An Extended FDT Instance is an instance of FLUTE FDT as | 6726 [RFC6726]. An Extended FDT-Instance is an instance of FLUTE | |||
specified in [RFC6726], plus optionally one or more of the following | FDT, as specified in [RFC6726], plus optionally one or more of the | |||
extensions. | following extensions: | |||
efdtVersion - A value that SHALL represent the version of this | efdtVersion: A value that SHALL represent the version of this | |||
Extended FDT Instance. | Extended FDT-Instance. | |||
maxExpiresDelta - Let "tp" represent the wall clock time at the | maxExpiresDelta: Let "tp" represent the wall clock time at the | |||
receiver when the receiver acquires the first ROUTE packet carrying | receiver when the receiver acquires the first ROUTE packet | |||
data of the object described by this Extended FDT Instance. | carrying data of the object described by this Extended FDT- | |||
maxExpiresDelta, when present, SHALL represent a time interval which | Instance. maxExpiresDelta, when present, SHALL represent a time | |||
when added to "tp" SHALL represent the expiration time of the | interval that when added to "tp" SHALL represent the expiration | |||
associated Extended FDT Instance "te". The time interval is expressed | time of the associated Extended FDT-Instance "te". The time | |||
in number of seconds. When maxExpiresDelta is not present, the | interval is expressed in number of seconds. When maxExpiresDelta | |||
expiration time of the Extended FDT Instance SHALL be given by the | is not present, the expiration time of the Extended FDT-Instance | |||
sum of a) the value of the ERT field in the EXT_TIME LCT header | SHALL be given by the sum of a) the value of the ERT field in the | |||
extension in the first ROUTE packet carrying data of that file, and | EXT_TIME LCT header extension in the first ROUTE packet carrying | |||
b) the current receiver time when parsing the packet header of that | data of that file, and b) the current receiver time when parsing | |||
ROUTE packet. See Sections 5.4 and 6.3.3 on additional rules for | the packet header of that ROUTE packet. See Sections 5.4 and | |||
deriving the Extended FDT Instance expiration time. Hence te__= tp + | 6.3.3 on additional rules for deriving the Extended FDT-Instance | |||
maxExpiresDelta | expiration time. Hence, te = tp + maxExpiresDelta | |||
maxTransportSize - An attribute that SHALL represent the maximum | maxTransportSize: An attribute that SHALL represent the maximum | |||
transport size in bytes of any delivery object described by this | 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 SHALL be present if a) the | |||
fileTemplate is present in Extended FDT-Instance; or b) one or more | fileTemplate is present in Extended FDT-Instance, or b) one or | |||
File elements, if present in this Extended FDT Instance, do not | more File elements, if present in this Extended FDT-Instance, do | |||
include the Transfer-Length attribute. When maxTransportSize is not | not include the Transfer-Length attribute. When maxTransportSize | |||
present, the maximum transport size is not signaled, while other | is not present, the maximum transport size is not signaled, while | |||
signalling such as the Transfer-Length attribute signal the exact | other signaling such as the Transfer-Length attribute signal the | |||
transfer length of the object. | exact Transfer Length of the object. | |||
fileTemplate: A string value, which when present and in conjunction | ||||
with parameter substitution, is used in deriving the Content- | ||||
Location attribute for the delivery object described by this | ||||
Extended FDT-Instance. It SHALL include the "$TOI$" identifier. | ||||
Each identifier MAY be suffixed as needed by specific file names | ||||
within the enclosing '$' characters following this prototype: | ||||
%0[width]d | ||||
fileTemplate - A string value, which when present and in conjunction | ||||
with parameter substitution, is used in deriving the Content-Location | ||||
attribute, for the delivery object described by this Extended FDT | ||||
Instance. It SHALL include the "$TOI$" identifier. Each identifier | ||||
MAY be suffixed as needed by specific file names, within the | ||||
enclosing '$' characters following this prototype: | ||||
%0[width]d | ||||
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 SHALL be padded with leading | |||
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. | |||
no format tag is present, a default format tag with width=1 SHALL be | When no format tag is present, a default format tag with width=1 | |||
used. | SHALL be used. | |||
Strings other than identifiers SHALL only contain characters that are | Strings other than identifiers SHALL only contain characters that are | |||
permitted within URIs according to RFC 3986 [RFC3986]. | permitted within URIs according to RFC 3986 [RFC3986]. | |||
$$ Is an escape sequence in fileTemplate value, i.e. "$$" is non- | $$ is an escape sequence in fileTemplate value, i.e., "$$" is non- | |||
recursively replaced with a single "$" | recursively replaced with a single "$". | |||
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. | operations in Sections 5.4 and 6.3, respectively. | |||
4.1.2. Constraints on Extended FDT | 4.1.2. Constraints on Extended FDT | |||
The Extended FDT Instance SHALL conform to an FDT Instance according | The Extended FDT-Instance SHALL conform to an FDT-Instance according | |||
to RFC 6726 [RFC6726], with the following constraints: at least one | to RFC 6726 [RFC6726] with the following constraints: at least one | |||
File element and the @Expires attribute SHALL be present. | File element and the @Expires attribute SHALL be present. | |||
Content encoding MAY be used for delivery of any file described by an | Content encoding MAY be used for delivery of any file described by an | |||
FDT-Instance.File element in the Extended FDT Instance. The content | FDT-Instance.File element in the Extended FDT-Instance. The content | |||
encoding defined in the present document is gzip [RFC1952]. When | encoding defined in the present document is gzip [RFC1952]. When | |||
content encoding is used, the File@Content-Encoding and File@Content- | content encoding is used, the File@Content-Encoding and File@Content- | |||
Length attributes SHALL be present in the Extended FDT Instance. | Length attributes SHALL be present in the Extended FDT-Instance. | |||
4.2. Entity Mode | 4.2. Entity Mode | |||
For Entity Mode, the following applies: | For Entity Mode, the following applies: | |||
o Delivery Object metadata SHALL be expressed in the form of entity | * Delivery object metadata SHALL be expressed in the form of entity | |||
headers as defined in HTTP/1.1, and which correspond to one or | headers as defined in HTTP/1.1, which correspond to one or more of | |||
more of the representation header fields, payload header fields | the representation header fields, payload header fields, and | |||
and response header fields as defined in Sections 3.1, 3.3 and 7, | response header fields as defined in Sections 3.1, 3.3, and 7, | |||
respectively, of RFC 7231. Additionally, a Digest HTTP response | respectively, of [RFC7231]. | |||
header [RFC7231] MAY be included to enable a receiver to verify | ||||
the integrity of the multicast transport object. | ||||
The entity headers sent along with the delivery object provide all | * The entity headers sent along with the delivery object provide all | |||
information about that multicast transport object. | information about that multicast transport object. | |||
o Sending a media object (if the object is chunked) in Entity Mode | * Sending a media object (if the object is chunked) in Entity Mode | |||
may result in one of the following options: | may result in one of the following options: | |||
o If the length of the chunked object is known at sender, the | - If the length of the chunked object is known at the sender, the | |||
ROUTE Entity Mode delivery object MAY be sent without using | ROUTE Entity Mode delivery object MAY be sent without using | |||
HTTP/1.1 chunked transfer coding, i.e. the object starts with | HTTP/1.1 chunked transfer coding, i.e., the object starts with | |||
an HTTP header containing the Content Length field, followed | an HTTP header containing the Content Length field followed by | |||
by the concatenation of CMAF chunks: | the concatenation of CMAF Chunks: | |||
|HTTP Header+Length||---chunk ----||---chunk ----||---chunk -- | |HTTP Header+Length||---chunk ----||---chunk ----||---chunk -- | |||
--||---chunk ----| | --||---chunk ----| | |||
o If the length of the chunked object is unknown at sender when | - If the length of the chunked object is unknown at the sender | |||
starting to send the object, HTTP/1.1 chunked transfer coding | when starting to send the object, HTTP/1.1 chunked transfer | |||
format SHALL be used: | coding format SHALL be used: | |||
|HTTP Header||Separator+Length||---chunk ---- | |HTTP Header||Separator+Length||---chunk ---- | |||
||Separator+Length||---chunk ----||Separator+Length||---chunk | ||Separator+Length||---chunk ----||Separator+Length||---chunk | |||
----||Separator+Length||---chunk ----||Separator+Length=0| | ----||Separator+Length||---chunk ----||Separator+Length=0| | |||
Note, however, that it is not required to send a CMAF chunk in | Note, however, that it is not required to send a CMAF Chunk in | |||
exactly one HTTP chunk. | exactly one HTTP chunk. | |||
4.3. Unsigned Package Mode | 4.3. Unsigned Package Mode | |||
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) [RFC2557], | Multipart Multipurpose Internet Mail Extensions (MIME) [RFC2557], | |||
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 | |||
should be used for those files. | be used for those files. | |||
4.4. Signed Package Mode | 4.4. Signed Package Mode | |||
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) [RFC8551], where objects | supported by RFC 8551 Secure MIME (S/MIME) [RFC8551], 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. | objects necessary for validation of the package. | |||
5. Sender Operation | 5. Sender Operation | |||
5.1. Usage of ALC and LCT for Source Flow | 5.1. Usage of ALC and LCT for Source Flow | |||
ROUTE Source Flow carry the source data as specified in RFC 5775 | ROUTE Source Flow carries the source data as specified in RFC 5775 | |||
[RFC5775]. There are several special considerations that ROUTE | [RFC5775]. There are several special considerations 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: | following: | |||
o ROUTE limits the usage of the LCT building block to a single | * ROUTE limits the usage of the LCT building block 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 | ROUTE. It also signifies that there is no specific congestion- | |||
control related signalling from sender to the receiver; the CCI | control-related signaling from the 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 Section 2.1. The functionality of receiver-driven layered | in Section 2.1. The functionality of receiver-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. | based on the bandwidth requirement of that session. | |||
Further, following details apply to LCT: | Further, the following details apply to LCT: | |||
o The Layered Coding Transport (LCT) Building Block as defined in | * The Layered Coding Transport (LCT) Building Block as defined in | |||
RFC 5651 [RFC5651] is used with the following constraints: | RFC 5651 [RFC5651] is used with the following constraints: | |||
o The TSI in the LCT header SHALL be set equal to the value of | - The TSI in the LCT header SHALL be set equal to the value of | |||
the stsi attribute in Section 3.2. | the stsi attribute in Section 3.2. | |||
o The Codepoint (CP) in the LCT header SHALL be used to signal | - The Codepoint (CP) in the LCT header SHALL be used to signal | |||
the applied formatting as defined in the signaling metadata. | the applied formatting as defined in the signaling metadata. | |||
o In accordance to ALC, a source FEC Payload ID header is used to | - In accordance with ALC, a source FEC Payload ID header is used | |||
identify, for FEC purposes, the encoding symbols of the | to 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: | |||
. As a simple new null FEC scheme with the following usage: | o As a simple new null FEC scheme with the following usage: | |||
. The value of the source FEC Payload ID header SHALL | + The value of the source FEC Payload ID header SHALL be | |||
be set to 0, in case the ROUTE packet contains the | set to 0 in case the ROUTE packet contains the entire | |||
entire delivery object, or | delivery object, or | |||
. The value of the source FEC Payload ID header SHALL | + The value of the source FEC Payload ID header SHALL be | |||
be set as a direct address (start offset) | set as a direct address (start offset) corresponding to | |||
corresponding to the starting byte position of the | the starting byte position of the portion of the object | |||
portion of the object carried in this packet using a | carried in this packet using a 32-bit field. | |||
32-bit field. | ||||
. In a compatible manner to RFC 6330 [RFC6330] where the | o In a compatible manner to RFC 6330 [RFC6330] where the SBN | |||
SBN and ESI defines the start offset together with the | and ESI defines the start offset together with the symbol | |||
symbol size T. | size T. | |||
. The signaling metadata provides the appropriate | o The signaling metadata provides the appropriate parameters | |||
parameters to indicate any of the above modes using the | to indicate any of the above modes using the srcFecPayloadId | |||
srcFecPayloadId attribute. | attribute. | |||
o The LCT Header EXT_TIME extension as defined in RFC 5651 [RFC5651] | * The LCT Header EXT_TIME extension as defined in RFC 5651 [RFC5651] | |||
MAY be used by the sender in the following manner: | MAY be used by the sender in the following manner: | |||
o The Sender Current Time (SCT), depending on the application, | - The Sender Current Time (SCT), depending on the application, | |||
MAY be used to occasionally or frequently signal the sender | MAY be used to occasionally or frequently signal the sender | |||
current time, possibly for reliever time synchronization. | current time possibly for reliever time synchronization. | |||
o The Expected Residual Time (ERT) MAY be used to indicate the | - 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 | |||
object, to optimize detection of a lost delivery object. | in order to optimize detection of a lost delivery object. | |||
o The Sender Last Changed (SLC) flag is typically not utilized, | - The Sender Last Changed (SLC) flag is typically not utilized | |||
but MAY be used to indicate addition/removal of Segments. | but MAY be used to indicate the addition/removal of Segments. | |||
Additional extension headers MAY be used to support real-time | Additional extension headers MAY be used to support real-time | |||
delivery. Such extension headers are defined in Section 2.1. | delivery. Such extension headers are defined in Section 2.1. | |||
5.2. ROUTE Packetization for Source Flow | 5.2. ROUTE Packetization for Source Flow | |||
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 [RFC5445], which in | logically represents an extension of RFC 5445 [RFC5445], which in | |||
turn inherits the context, language, declarations and restrictions of | turn inherits the context, language, declarations, and restrictions | |||
the FEC building block in RFC 5052 [RFC5052]. | of the FEC building block in RFC 5052 [RFC5052]. | |||
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 [RFC5445], in which the encoding symbol | 3.4.1 and 3.4.2 of [RFC5445], in which the encoding symbol size is | |||
size is exactly one byte. As specified in Section 2.1, for ROUTE | exactly one byte. As specified in Section 2.1, for ROUTE Source | |||
Source Flows, the FEC Payload ID SHALL deliver the 32-bit | Flows, the FEC Payload ID SHALL deliver the 32-bit start_offset. All | |||
start_offset. All receivers are expected to support, at minimum, | receivers are expected to support, at minimum, operation with this | |||
operation with this special case of the Compact No-Code FEC. | special case of the Compact No-Code FEC. | |||
Note that in the event the source object size is greater than 2^32 | Note that in the event the source object size is greater than 2^32 | |||
bytes (approximately 4.3 GB), the applications (in the broadcaster | bytes (approximately 4.3 GB), the applications (in the broadcaster | |||
server and the receiver) are expected to perform segmentation/re- | server and the receiver) are expected to perform segmentation/ | |||
assembly using methods beyond the scope of this document. | reassembly using methods beyond the scope of this document. | |||
Finally, in some special cases a ROUTE sender MAY need to produce | Finally, in some special cases, a ROUTE sender MAY need to produce | |||
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. | absence of the LCT header, FEC Payload ID, and payload data. | |||
5.2.1. Basic ROUTE Packetization | 5.2.1. Basic ROUTE Packetization | |||
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. | fully available at the ROUTE sender. | |||
1. The amount of data to be sent in a single ROUTE packet is limited | 1. The amount of data to be sent in a single ROUTE 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, | |||
is smaller. The transfer unit is determined either by knowledge of | whichever is smaller. The transfer unit is determined either by | |||
underlying transport block sizes or by other constraints. | knowledge of underlying transport block sizes or by other | |||
2. The start_offset field in the LCT header of the ROUTE packet | constraints. | |||
indicates the byte offset of the carried data in the Application | ||||
Object being sent. | 2. The start_offset field in the LCT header of the ROUTE packet | |||
3. The Close Object (B) flag is set to 1 if this is the last ROUTE | indicates the byte offset of the carried data in the Application | |||
packet carrying the data of the Application Object. | Object being sent. | |||
3. The Close Object flag (B) is set to 1 if this is the last ROUTE | ||||
packet carrying the data of the Application Object. | ||||
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. | recommended. | |||
5.2.2. ROUTE Packetization for CMAF Chunked Content | 5.2.2. ROUTE Packetization for CMAF Chunked Content | |||
Following additional guidelines should be followed for ROUTE | The following additional guidelines should be followed for ROUTE | |||
packetization of CMAF Chunked Content in addition to the guideline of | packetization of CMAF Chunked Content in addition to the guidelines | |||
Section 5.2.1: | of Section 5.2.1: | |||
1. If it is the first ROUTE packet carrying a CMAF Random Access | 1. If it is the first ROUTE packet carrying a CMAF Random Access | |||
chunk, except for the first CMAF chunk in the segment, the | chunk, except for the first CMAF Chunk in the segment, the | |||
Codepoint value MAY be set to 10, as specified in the Codepoint | Codepoint value MAY be set to 10, as specified in the Codepoint | |||
value table in Section 2.1. The receiver MAY use this information | value table in Section 2.1. The receiver MAY use this | |||
for optimization of random access. | information for optimization of random access. | |||
2. As soon as the total length of the media object is known, | ||||
potentially with the packaging of the last CMAF chunk of a | ||||
segment, the EXT_TOL extension header MAY be added to the LCT | ||||
header to signal the Transfer Length, so that the receiver may | ||||
know this information in a timely fashion. | ||||
5.3. Timing of Packet Emission | 2. As soon as the total length of the media object is known, | |||
potentially with the packaging of the last CMAF Chunk of a | ||||
segment, the EXT_TOL extension header MAY be added to the LCT | ||||
header to signal the Transfer Length, so that the receiver may | ||||
know this information in a timely fashion. | ||||
5.3. Timing of Packet Emission | ||||
The sender SHALL use the timing information provided by the | 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 | |||
streaming media with real time constraints SHALL be sent in such a | of streaming media with real-time constraints SHALL be sent in such a | |||
way to enable their timely reception with respect to the presentation | way as to enable their timely reception with respect to the | |||
timeline. | presentation timeline. | |||
5.4. Extended FDT Encoding for File Mode Sending | 5.4. Extended FDT Encoding for File Mode Sending | |||
For File Mode Sending: | For File Mode sending: | |||
o The TOI field in the ROUTE packet header SHALL be set such that | * The TOI field in the ROUTE packet header SHALL 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 Section 6.3.1. | Template substitution specified in Section 6.3.1. | |||
o After sending the first packet with a given TOI value, none of the | * 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 SHALL 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) MAY be used in order to convey | |||
more accurate expiry time. | more accurate expiry time. | |||
5.5. FEC Framework Considerations | 5.5. FEC Framework Considerations | |||
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 [RFC6363], as well as the FEC building block, RFC 5052 | RFC 6363 [RFC6363], as well as the FEC building block, RFC 5052 | |||
[RFC5052], which is adopted in the existing FLUTE/ALC/LCT | [RFC5052], which is adopted in the existing FLUTE/ALC/LCT | |||
specifications. | specifications. | |||
The FEC design adheres to the following principles: | The FEC design adheres to the following principles: | |||
o FEC-related information is provided only where needed. | * FEC-related information is provided only where needed. | |||
o Receivers not capable of this framework can ignore repair packets. | * Receivers not capable of this framework can ignore repair packets. | |||
o The FEC is symbol-based with fixed symbol size per protected | * The FEC is symbol based with fixed symbol size per protected | |||
Source Flow. The ALC protocol and existing FEC schemes are reused. | Source Flow. The ALC protocol and existing FEC schemes are | |||
reused. | ||||
o A FEC Repair Flow provides protection of delivery objects from one | * A FEC Repair Flow provides protection of delivery objects from one | |||
or more Source Flows. | or more Source Flows. | |||
The FEC-specific components of the FEC framework are: | The FEC-specific components of the FEC framework are: | |||
o FEC Repair Flow declaration including all FEC-specific | * FEC Repair Flow declaration including all FEC-specific | |||
information. | information. | |||
o FEC transport object that is the concatenation of a delivery | * A FEC transport object that is the concatenation of a delivery | |||
object, padding octets and size information in order to form an N- | object, padding octets, and size information in order to form a | |||
symbol-sized chunk of data, where N >= 1. | chunk of data that has a size in symbols of N, where N >= 1. | |||
o FEC super-object that is the concatenation of one or more FEC | * A 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. | protection. | |||
o FEC protocol and packet structure. | * A FEC protocol and packet structure. | |||
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. | packets based on available FEC information. | |||
5.6. FEC Transport Object Construction | 5.6. FEC Transport Object Construction | |||
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: | protocol, the following information is needed: | |||
o TSI and TOI of the delivery object. In this case, the FEC object | * TSI and TOI of the delivery object. In this case, the FEC object | |||
corresponds to the (entire) delivery object. | corresponds to the (entire) delivery object. | |||
o Octet range of the delivery object, i.e. start offset within the | * Octet range of the delivery object, i.e., start offset within the | |||
delivery object and number of subsequent and contiguous octets of | delivery object and number of subsequent and contiguous octets of | |||
delivery object that constitutes the FEC object (i.e., the FEC- | delivery object that constitutes the FEC object (i.e., the FEC- | |||
protected portion of the source object). In this case, the FEC | protected portion of the source object). In this case, the FEC | |||
object corresponds to a contiguous byte range portion of the | object corresponds to a contiguous byte range portion of the | |||
delivery object. | delivery object. | |||
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. | FEC object. | |||
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. | FEC object size (F) in octets, where F is carried in a 4-octet field. | |||
The FEC transport object size S, in FEC encoding symbols, SHALL be an | The FEC transport object size S, in FEC encoding symbols, SHALL be an | |||
integer multiple of the symbol size Y. | integer multiple of the symbol size Y. S is determined from the | |||
S is determined from the session information and/or the repair packet | session information and/or the repair packet headers. | |||
headers. | ||||
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: | Specifically, let: | |||
o F be the size of the delivery object in octets, | * F be the size of the delivery object in octets, | |||
o F' be the F octets of data of the delivery object, | * F' be the F octets of data of the delivery object, | |||
o f' denote the four octets of data carrying the value of F in | * f' denote the four octets of data carrying the value of F in | |||
network octet order (high-order octet first), | network octet order (high-order octet first), | |||
o S be the size of the FEC transport object with S=ceil((F+4)/Y), | * 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, | integer, | |||
o P' be S*Y-4-F octets of data, i.e. padding placed between the | * 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 | located at the end of the FEC transport object, and | |||
o O' be the concatenation of F', P' and f'. | * O' be the concatenation of F', P', and f'. | |||
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. | |||
that padding octets and the object size F are not sent in source | Note 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. | object size in symbols is S. | |||
The general information about an FEC transport object that is | The general information about a FEC transport object that is conveyed | |||
conveyed to an FEC-enabled receiver is the source TSI, source TOI and | to a FEC-enabled receiver is the source TSI, source TOI, and the | |||
the associated octet range within the delivery object comprising 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: | object, the remaining information can be conveyed as: | |||
o TSI and TOI of the delivery object from which the FEC object | * The TSI and TOI of the delivery object from which the FEC object | |||
associated with the FEC transport object is generated | associated with the FEC transport object is generated | |||
o Start octet within delivery object for the associated FEC object | * The start octet within the delivery object for the associated FEC | |||
object | ||||
o Size in symbols of the FEC transport object, S | * The size in symbols of the FEC transport object, S | |||
5.7. Super-Object Construction | 5.7. Super-Object Construction | |||
From the FEC Repair Flow declaration, the construction of an FEC | From the FEC Repair Flow declaration, the construction of a 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. | objects within the FEC super-object. | |||
Let: | Let: | |||
o N be the total number of FEC transport objects for the FEC super- | ||||
* N be the total number of FEC transport objects for the FEC super- | ||||
object construction. | object construction. | |||
o For i = 0,..., N-1, let S[i] be the size in symbols of FEC | * For i = 0, ..., N-1, let S[i] be the size in symbols of FEC | |||
transport object i. | transport object i. | |||
o B' be the FEC super-object which is the concatenation of the FEC | * B' be the FEC super-object that 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]. | source symbols, each symbol denoted as S[i]. | |||
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: | super-object, comprises: | |||
o The total number of FEC transport objects N. | * The total number of FEC transport objects N. | |||
o For each FEC transport object, the: | * For each FEC transport object: | |||
o TSI and TOI of the delivery object from which the FEC object | - The TSI and TOI of the delivery object from which the FEC | |||
associated with the FEC transport object is generated, | object associated with the FEC transport object is generated, | |||
o Start octet within delivery object for the associated FEC | - The start octet within the delivery object for the associated | |||
object, and | FEC object, and | |||
o Size in symbols of the FEC transport object. | - The size in symbols of the FEC transport object. | |||
The carriage of the FEC repair information is discussed below. | The carriage of the FEC repair information is discussed below. | |||
5.8. Repair Packet Considerations | 5.8. Repair Packet Considerations | |||
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 [RFC5775] and the Layered Coding Transport (LCT) | defined in RFC 5775 [RFC5775] and the Layered Coding Transport (LCT) | |||
Building Block as defined in RFC 5651 [RFC5651] with the following | Building Block as defined in RFC 5651 [RFC5651] with the following | |||
details: | details: | |||
o The Layered Coding Transport (LCT) Building Block as defined in | * The Layered Coding Transport (LCT) Building Block as defined in | |||
RFC 5651 [RFC5651] is used as defined in Asynchronous Layered | RFC 5651 [RFC5651] is used as defined in Asynchronous Layered | |||
Coding (ALC), Section 2.1. In addition, the following constraints | Coding (ALC), Section 2.1. In addition, the following constraint | |||
apply: | applies: | |||
o The TSI in the LCT header SHALL identify the Repair Flow to | - The TSI in the LCT header SHALL identify the Repair Flow to | |||
which this packet applies, by the matching value of the ptsi | 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. | carrying Repair Flows. | |||
o The FEC building block is used according to RFC 6330 [RFC6330], | * The FEC building block is used according to RFC 6330 [RFC6330], | |||
but only repair packets are delivered. | but only repair packets are delivered. | |||
o Each repair packet within the scope of the Repair Flow (as | - Each repair packet within the scope of the Repair Flow (as | |||
indicated by the TSI field in the LCT header) SHALL carry the | indicated by the TSI field in the LCT header) SHALL carry the | |||
repair symbols for a corresponding FEC transport object/super- | repair symbols for a corresponding FEC transport object/super- | |||
object as identified by its TOI. The repair object/super- | object as identified by its TOI. The repair object/super- | |||
object TOI SHALL be unique for each FEC super-object that is | object TOI SHALL be unique for each FEC super-object that is | |||
created within the scope of the TSI. | created within the scope of the TSI. | |||
5.9. Summary FEC Information | 5.9. Summary FEC Information | |||
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: | receiver: | |||
o The FEC configuration consisting of: | * The FEC configuration consisting of: | |||
o FEC Object Transmission Information (OTI) per RFC 5052 | - FEC Object Transmission Information (OTI) per RFC 5052 | |||
[RFC5052]. | [RFC5052]. | |||
o Additional FEC information (see Section 3.3). | - Additional FEC information (see Section 3.3). | |||
o The total number of FEC objects included in the FEC super- | - The total number of FEC objects included in the FEC super- | |||
object, N. | object, N. | |||
o For each FEC transport object: | * For each FEC transport object: | |||
o TSI and TOI of the delivery object used to generate the FEC | - TSI and TOI of the delivery object used to generate the FEC | |||
object associated with the FEC transport object, | object associated with the FEC transport object, | |||
o Start octet within the delivery object of the associated FEC | - The start octet within the delivery object of the associated | |||
object, if applicable, and | FEC object, if applicable, and | |||
o The size in symbols of the FEC transport object, S. | - The size in symbols of the FEC transport object, S. | |||
The above information is delivered: | The above information is delivered: | |||
o Statically in the session metadata as defined in Section 3.3, and | * Statically in the session metadata as defined in Section 3.3, and | |||
o Dynamically in an LCT extension header. | * Dynamically in an LCT extension header. | |||
6. Receiver operation | 6. Receiver Operation | |||
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 | |||
the receiver regenerates delivery objects from the ROUTE session and | channel, the receiver regenerates delivery objects from the ROUTE | |||
each contained LCT channel. | session and each contained LCT channel. | |||
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 SHOULD | |||
attempt to recover gracefully by e.g. informing the application about | attempt to recover gracefully by e.g., informing the application | |||
the issues using means beyond the scope of this document. The ROUTE | about the issues using means beyond the scope of this document. The | |||
Packetization specified in Section 5.2.1 implies that the receiver | ROUTE packetization specified in Section 5.2.1 implies that the | |||
SHALL NOT receive overlapping data: if such a condition is | receiver SHALL NOT 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 SHALL be assumed to be | |||
corrupted. | corrupted. | |||
The basic receiver operation is provided below, it assumes an error- | The basic receiver operation is provided below (it assumes an error- | |||
free scenario, while repair considerations are provided in Section 7. | free scenario), while repair considerations are provided in | |||
Section 7. | ||||
6.1. Basic Application Object Recovery for Source Flows | 6.1. Basic Application Object Recovery for Source Flows | |||
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. | proceeds with the following steps in the order listed. | |||
1) The ROUTE receiver is expected to parse the LCT and FEC Payload ID | 1) The ROUTE receiver is expected to parse the LCT and FEC Payload | |||
to verify that it is a valid header. If it is not valid, then the | ID to verify that it is a valid header. If it is not valid, then | |||
payload is discarded without further processing. | the payload is discarded without further processing. | |||
2) All ROUTE packets used to recover a specific delivery object carry | ||||
the same TOI value in the LCT header. | ||||
3) The ROUTE receiver is expected to assert that the TSI and the | ||||
Codepoint represent valid operation points in the signaling | ||||
metadata, 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 LCT header has a valid Codepoint mapping. | ||||
4) The ROUTE receiver should process the remainder of the payload, | ||||
including the appropriate interpretation of the other payload | ||||
header fields, and using the source FEC Payload ID (to determine | ||||
the start_offset) and the payload data to reconstruct the | ||||
corresponding object as follows: | ||||
a. For File Mode, upon receipt of the first ROUTE packet | 2) All ROUTE packets used to recover a specific delivery object | |||
payload for an object, the ROUTE receiver uses the | carry the same TOI value in the LCT header. | |||
File@Transfer-Length attribute of the associated Extended FDT | ||||
Instance, when present, to determine the length T of the | 3) The ROUTE receiver is expected to assert that the TSI and the | |||
object. When the File@Transfer-Length attribute is not | Codepoint represent valid operation points in the signaling | |||
present in the Extended FDT Instance, the receiver uses the | metadata, i.e., the signaling contains a matching entry to the | |||
maxTransportSize attribute of the associated Extended FDT | TSI value provided in the packet header, as well as for this TSI, | |||
Instance to determine the maximum length T' of the object. | and the Codepoint field in the LCT header has a valid Codepoint | |||
Alternatively, and specifically for delivery modes other than | mapping. | |||
File Mode, EXT_TOL header can be used to determine the length | ||||
T of the object. | 4) The ROUTE receiver should process the remainder of the payload, | |||
b. The ROUTE receiver allocates buffer space for the T or T' | including the appropriate interpretation of the other payload | |||
bytes that the object will or may occupy. | header fields, using the source FEC Payload ID (to determine the | |||
c. The ROUTE receiver computes the length of the payload, Y, by | start_offset) and the payload data to reconstruct the | |||
subtracting the payload header length from the total length | corresponding object as follows: | |||
of the received payload. | ||||
d. The ROUTE receiver allocates a Boolean array RECEIVED[0..T- | a. For File Mode, upon receipt of the first ROUTE packet payload | |||
1] or RECEIVED[0..T'-1], as appropriate, with all entries | for an object, the ROUTE receiver uses the File@Transfer- | |||
initialized to false to track received object symbols. The | Length attribute of the associated Extended FDT-Instance, | |||
ROUTE receiver continuously acquires packet payloads for the | when present, to determine the length T of the object. When | |||
object as long as all of the following conditions are | the File@Transfer-Length attribute is not present in the | |||
satisfied: i) there is at least one entry in RECEIVED still | Extended FDT-Instance, the receiver uses the maxTransportSize | |||
set to false; ii) the object has not yet expired; and iii) | attribute of the associated Extended FDT-Instance to | |||
the application has not given up on reception of this object. | determine the maximum length T' of the object. | |||
More details are provided below. | Alternatively, and specifically for delivery modes other than | |||
e. For each received ROUTE packet payload for the object | File Mode, the EXT_TOL header can be used to determine the | |||
(including the first payload), the steps to be taken to help | length T of the object. | |||
recover the object are as follows: | ||||
i. If the packet includes an EXT_TOL or EXT_FTI header, | b. The ROUTE receiver allocates buffer space for the T or T' | |||
modify the Boolean array RECEIVED[0..T'-1] to become | bytes that the object will or may occupy. | |||
RECEIVED[0..T-1]. | ||||
ii. Let X be the value of the start_offset field in the ROUTE | c. The ROUTE receiver computes the length of the payload, Y, by | |||
packet header and let Y be the length of the payload, Y, | subtracting the payload header length from the total length | |||
computed by subtracting the LCT header size and the FEC | of the received payload. | |||
Payload ID size from the total length of the received | ||||
packet. | d. The ROUTE receiver allocates a Boolean array RECEIVED[0..T-1] | |||
iii. The ROUTE receiver copies the data into the appropriate | or RECEIVED[0..T'-1], as appropriate, with all entries | |||
place within the space reserved for the object and sets | initialized to false to track received object symbols. The | |||
RECEIVED[X ... X+Y-1] = true. | ROUTE receiver continuously acquires packet payloads for the | |||
iv. If all T entries of RECEIVED are true, then the receiver | object as long as all of the following conditions are | |||
has recovered the entire object. | satisfied: | |||
i. there is at least one 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. | ||||
e. 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: | ||||
i. 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]. | ||||
ii. 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 by subtracting the LCT header size | ||||
and the FEC Payload ID size from the total length of | ||||
the received packet. | ||||
iii. The ROUTE receiver copies the data into the appropriate | ||||
place within the space reserved for the object and sets | ||||
RECEIVED[X ... X+Y-1] = true. | ||||
iv. If all T entries of RECEIVED are true, then the | ||||
receiver has recovered the entire object. | ||||
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. | fully received Application Object, is complete. | |||
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 SHALL make the Application Objects | |||
available to the application in a timely fashion, using the | available to the application in a timely fashion using the | |||
application-provided timing data (e.g. the timing data signaled via | 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 | |||
application. | the application. | |||
6.2. Fast Stream Acquisition | 6.2. Fast Stream Acquisition | |||
When the receiver initially starts reception of ROUTE packets, it is | When the receiver initially starts reception of ROUTE packets, it is | |||
likely that the reception does not start from the very first packet | likely that the reception does not start from the very first packet | |||
carrying the data of a multicast transport object, and in this case | carrying the data of a multicast transport object; in this case, such | |||
such a partially received object is normally discarded. However, the | a partially received object is normally discarded. However, the | |||
channel acquisition or "tune-in" times can be improved if the | channel acquisition or "tune-in" times can be improved if the | |||
partially received object is usable by the application. | partially received object is usable by the application. One example | |||
One example realization for this is as follows: | realization for this is as follows: | |||
o The receiver checks for the first received packet with the | * The receiver checks for the first received packet 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. | Access chunk. | |||
o The receiver MAY make the partially received object (a partial | * The receiver MAY make the partially received object (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. | application for fast stream acquisition. | |||
o It MAY recover the earliest presentation time of this CMAF Random | * It MAY recover the earliest presentation time of this 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 Section 2.1 to be able to | Information (CCI) field as specified in Section 2.1 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. | continuity signaling. | |||
6.3. Generating Extended FDT Instance for File Mode | 6.3. Generating Extended FDT-Instance for File Mode | |||
An Extended FDT Instance conforming to RFC 6726 [RFC6726], is | An Extended FDT-Instance conforming to RFC 6726 [RFC6726], is | |||
produced at the receiver using the service metadata and in band | produced at the receiver using the service metadata and in-band | |||
signaling in the following steps: | signaling in the following steps: | |||
6.3.1. File Template Substitution for Content-Location Derivation | 6.3.1. File Template Substitution for Content-Location Derivation | |||
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: | Application Object is derived as follows: | |||
"$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 Section 6.1). | specified in Section 6.1). | |||
After the substitution, the fileTemplate SHALL 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. | Application Object. | |||
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. | name for TOI=33 using this template is myVideo00033.mps. | |||
6.3.2. File@Transfer-Length Derivation | 6.3.2. File@Transfer-Length Derivation | |||
Either the EXT_FTI header (per RFC 5775 [RFC5775]) or the EXT_TOL | Either the EXT_FTI header (per RFC 5775 [RFC5775]) 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 SHALL be present. Note that a header containing | |||
transport object length (EXT_TOL or EXT_FTI) need not be present in | the transport object length (EXT_TOL or EXT_FTI) need not be present | |||
each packet header. If the broadcaster does not know the length of | in each packet header. If the broadcaster does not know the length | |||
the transport object at the beginning of the transfer, an EXT_TOL or | of the transport object at the beginning of the transfer, an EXT_TOL | |||
EXT_FTI header SHALL be included in at least the last packet of the | or EXT_FTI header SHALL be included in at least the last packet of | |||
file and should be included in the last few packets of the transfer. | the file and should be included in the last few packets of the | |||
transfer. | ||||
6.3.3. FDT-Instance@Expires Derivation | 6.3.3. FDT-Instance@Expires Derivation | |||
When present, the maxExpiresDelta attribute SHALL be used to generate | When present, the maxExpiresDelta attribute SHALL be used to generate | |||
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. | obtain the value for @Expires. | |||
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) SHALL be used to derive the expiry time | |||
of the Extended FDT Instance. When both maxExpiresDelta and the ERT | 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. | given by its @Expires attribute. | |||
7. FEC Application | 7. FEC Application | |||
7.1. General FEC Application Guidelines | 7.1. General FEC Application Guidelines | |||
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 MAY decide | |||
or not to utilize Repair Flows based on the following considerations: | whether or not to utilize Repair Flows based on the following | |||
considerations: | ||||
o The desired start-up and end-to-end latency. If a Repair Flow | * The desired start-up and end-to-end latency. 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. | off end-to-end latency against DASH Media Presentation quality. | |||
o FEC capabilities, i.e. the receiver MAY pick only the FEC | * FEC capabilities, i.e., the receiver MAY pick only the FEC | |||
algorithm that it supports. | algorithm that it supports. | |||
o Which Source Flows are being protected; for example, if the Repair | * 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. | then the receiver may not select the Repair Flow. | |||
o Other considerations such as available buffer size, reception | * Other considerations such as available buffer size, reception | |||
conditions, etc. | conditions, etc. | |||
If a receiver decides to acquire a certain Repair Flow then the | 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. | that Repair Flow to collect the relevant packets. | |||
7.2. TOI Mapping | 7.2. TOI Mapping | |||
When mappingTOIx/mappingTOIy are used to signal X and Y values, then | When mappingTOIx/mappingTOIy are used to signal X and Y values, the | |||
the TOI value(s) of the one or more source objects (sourceTOI) | TOI value(s) of the one or more source objects (sourceTOI) protected | |||
protected by a given FEC transport object or FEC super-object with a | by a given FEC transport object or FEC super-object with a TOI value | |||
TOI value rTOI is derived through an equation sourceTOI = X*rTOI + Y. | rTOI is derived through an equation sourceTOI = X*rTOI + Y. | |||
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 SHALL be | |||
identical to the TOI of the corresponding FEC object. | identical to the TOI of the corresponding FEC object. | |||
7.3. Delivery Object Reception Timeout | 7.3. Delivery Object Reception Timeout | |||
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: | reception, and associated rules and parameters are as follows: | |||
o The latest time that the file repair procedure may start is bound | * The latest time that the file repair procedure may start is bound | |||
by the @Expires attribute of the FDT-Instance. | by the @Expires attribute of the FDT-Instance. | |||
o The receiver may choose to start the file repair procedure | * The receiver may choose to start the file repair procedure earlier | |||
earlier, if it detects the occurrence of any of the following | if it detects the occurrence of any of the following events: | |||
events: | ||||
o Presence of the Close Object flag (B) in the LCT header | - Presence of the Close Object flag (B) in the LCT header | |||
[RFC5651] for the file of interest; | [RFC5651] for the file of interest; | |||
o Presence of the Close Session flag (A) in the LCT header | - Presence of the Close Session flag (A) in the LCT header | |||
[RFC5651] before the nominal expiration of the Extended FDT | [RFC5651] before the nominal expiration of the Extended FDT- | |||
Instance as defined by the @Expires attribute. | Instance as defined by the @Expires attribute. | |||
7.4. Example FEC Operation | 7.4. Example FEC Operation | |||
To be able to recover the delivery objects that are protected by a | To be able to recover the delivery objects that are protected by a | |||
Repair Flow, a receiver needs to obtain the necessary Service | Repair Flow, a receiver needs to obtain the necessary Service | |||
signaling metadata fragments that describe the corresponding | signaling metadata fragments that describe the corresponding | |||
collection of delivery objects that are covered by this Repair Flow. | collection of delivery objects that are covered by this Repair Flow. | |||
A Repair Flow is characterized by the combination of an LCT channel, | A Repair Flow is characterized by the combination of an LCT channel, | |||
a unique TSI number, as well as the corresponding protected Source | a unique TSI number, as well as the corresponding protected Source | |||
Flows. | Flows. | |||
If a receiver acquires data of a Repair Flow, the receiver is | If a receiver acquires data of a Repair Flow, the receiver is | |||
expected to collect all packets of all protected Transport Sessions. | expected to collect all packets of all protected Transport Sessions. | |||
Upon receipt of each packet, whether it is a source or repair packet, | Upon receipt of each packet, whether it is a source or repair packet, | |||
the receiver proceeds with the following steps in the order listed. | the receiver proceeds with the following steps in the order listed. | |||
1. The receiver is expected to parse the packet header and verify | ||||
that it is a valid header. If it is not valid, then the packet | ||||
SHALL be discarded without further processing. | ||||
2. The receiver is expected to parse the TSI field of the packet | ||||
header and verify that a matching value exists in the Service | ||||
signaling for the Repair Flow or the associated Protected Source | ||||
Flow. If no match is found, the packet SHALL be discarded without | ||||
further processing. | ||||
3. The receiver processes the remainder of the packet, including | ||||
interpretation of the other header fields, and using the source | ||||
FEC Payload ID (to determine the start_offset byte position within | ||||
the source object), the Repair FEC Payload ID, as well as the | ||||
payload data, reconstructs the decoding blocks corresponding to a | ||||
FEC super-object as follows: | ||||
a. For a source packet, the receiver identifies the delivery | ||||
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. | ||||
b. 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 Section 6.1. The received FEC super-object | ||||
is then mapped to a source block and the corresponding | ||||
encoding symbols are generated. | ||||
c. With the reception of the repair packets, the FEC super- | ||||
object can be recovered. | ||||
d. Once the FEC super-object is recovered, the individual | ||||
delivery objects can be extracted. | ||||
8. Considerations for Defining ROUTE Profiles | 1. The receiver is expected to parse the packet header and verify | |||
that it is a valid header. If it is not valid, then the packet | ||||
SHALL be discarded without further processing. | ||||
Services (e.g. ATSC-ROUTE [ATSCA331], DVB-MABR [DVBMABR] etc.) may | 2. The receiver is expected to parse the TSI field of the packet | |||
header and verify that a matching value exists in the Service | ||||
signaling for the Repair Flow or the associated Protected Source | ||||
Flow. If no match is found, the packet SHALL be discarded | ||||
without further processing. | ||||
3. The receiver processes the remainder of the packet, including | ||||
interpretation of the other header fields, and using the source | ||||
FEC Payload ID (to determine the start_offset byte position | ||||
within the source object), the Repair FEC Payload ID, as well as | ||||
the payload data, reconstructs the decoding blocks corresponding | ||||
to a FEC super-object as follows: | ||||
a. For a source packet, the receiver identifies the delivery | ||||
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. | ||||
b. For source packets, the receiver collects the data for each | ||||
FEC super-object and recovers FEC super-objects in the same | ||||
way as a Source Flow in Section 6.1. The received FEC super- | ||||
object is then mapped to a source block and the corresponding | ||||
encoding symbols are generated. | ||||
c. With the reception of the repair packets, the FEC super- | ||||
object can be recovered. | ||||
d. Once the FEC super-object is recovered, the individual | ||||
delivery objects can be extracted. | ||||
8. Considerations for Defining ROUTE Profiles | ||||
Services (e.g., ATSC-ROUTE [ATSCA331], DVB-MABR [DVBMABR], etc.) may | ||||
define specific ROUTE "profiles" based on this document in their | define specific ROUTE "profiles" based on this document in their | |||
respective standards organizations. An example is noted in the | respective standards organizations. An example is noted in the | |||
overview section: DVB has specified a profile of ATSC-ROUTE in DVB | overview section: DVB has specified a profile of ATSC-ROUTE in DVB | |||
Adaptive Media Streaming over IP Multicast (DVB-MABR) [DVBMABR]. The | Adaptive Media Streaming over IP Multicast (DVB-MABR) [DVBMABR]. The | |||
definition with the following considerations. Services MAY | definition has the following considerations. Services MAY | |||
o Restrict the signaling certain values signaled in the LCT header | * Restrict the signaling of certain values signaled in the LCT | |||
and/or provision unused fields in the LCT header. | header and/or provision unused fields in the LCT header. | |||
o Restrict using certain LCT header extensions and/or add new LCT | * Restrict using certain LCT header extensions and/or add new LCT | |||
header extensions. | header extensions. | |||
o Restrict or limit usage of some Codepoints, and/or assign | * Restrict or limit usage of some Codepoints and/or assign semantics | |||
semantics to service-specific Codepoints marked as reserved in | to service-specific Codepoints marked as reserved in this | |||
this document. | document. | |||
o Restrict usage of certain service signaling attributes and/or add | * Restrict usage of certain Service signaling attributes and/or add | |||
own service metadata. | their own service metadata. | |||
Services SHALL NOT redefine the semantics of any of the ROUTE | Services SHALL NOT redefine the semantics of any of the ROUTE | |||
attributes in LCT headers and extension, and service signaling | attributes in LCT headers and extensions, as well as Service | |||
attributes already specified in this document. | signaling attributes already specified in this document. | |||
By following these guidelines, services can define profiles that are | By following these guidelines, services can define profiles that are | |||
interoperable. | interoperable. | |||
9. ROUTE Concepts | 9. ROUTE Concepts | |||
9.1. ROUTE Modes of Delivery | 9.1. ROUTE Modes of Delivery | |||
Different ROUTE delivery modes specified in Section 4 are optimized | Different ROUTE delivery modes specified in Section 4 are optimized | |||
for delivery of different types of media data. For example, File Mode | for delivery of different types of media data. For example, File | |||
is specifically optimized for delivering DASH content using Segment | Mode is specifically optimized for delivering DASH content using | |||
Template with number substitution. Using File Template in EFDT avoids | Segment Template with number substitution. Using File Template in | |||
the need of repeated sending of metadata as outlined in the following | EFDT avoids the need for the repeated sending of metadata as outlined | |||
section. Same optimizations however cannot be used for time | 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 | |||
segment is time dependent and in general does not follow a fixed or | of each segment is time dependent and in general does not follow a | |||
repeated pattern. In this case, Entity mode is more optimized which | fixed or repeated pattern. In this case, Entity Mode is more | |||
carries the file location in band. Also, Entity mode can be used to | optimized since it carries the file location in band. Also, Entity | |||
deliver a file or part of the file using HTTP Partial Content | Mode can be used to deliver a file or part of the file using HTTP | |||
response headers. | Partial Content response headers. | |||
9.2. File Mode Optimizations | 9.2. File Mode Optimizations | |||
In the file mode, the delivery object represents an Application | In File Mode, the delivery object represents an Application Object. | |||
Object. This mode replicates FLUTE as defined in RFC 6726 [RFC6726], | This mode replicates FLUTE as defined in RFC 6726 [RFC6726] but with | |||
but with the ability to send static and pre-known file metadata out | the ability to send static and pre-known file metadata out of band. | |||
of band. | ||||
In FLUTE, FDT Instances are delivered in-band and need to be | In FLUTE, FDT-Instances are delivered in band and need to be | |||
generated and delivered in real-time if objects are generated in | generated and delivered in real time if objects are generated in real | |||
real-time at the sender. These FDT Instances have some differences as | time at the sender. These FDT-Instances have some differences as | |||
compared to the FDT specified in Section 3.4.2 of RFC 6726 [RFC6726] | compared to the FDT specified in Section 3.4.2 of [RFC6726] and | |||
and Section 7.2.10 of MBMS [MBMS]. The key difference is that besides | Section 7.2.10 of MBMS [MBMS]. The key difference is that besides | |||
separated delivery of file metadata from the delivery object it | separated delivery of file metadata from the delivery object it | |||
describes, the FDT functionality in ROUTE may be extended by | describes, the FDT functionality in ROUTE may be extended by | |||
additional file metadata and rules that enable the receiver to | additional file metadata and rules that enable the receiver to | |||
generate the Content-Location attribute of the File element of the | generate the Content-Location attribute of the File element of the | |||
FDT, on-the-fly. This is done by using information in both 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- | extensions to the FDT and the LCT header. The combination of pre- | |||
delivery of static file metadata and receiver self-generation of | delivery of static file metadata and receiver self generation of | |||
dynamic file metadata avoids the necessity of continuously sending | dynamic file metadata avoids the necessity of continuously sending | |||
the FDT Instances for real-time objects. Such modified FDT | the FDT-Instances for real-time objects. Such modified FDT | |||
functionality in ROUTE is referred to as the Extended FDT. | functionality in ROUTE is referred to as the Extended FDT. | |||
9.3. In Band Signaling of Object Transfer Length | 9.3. In-Band Signaling of Object Transfer Length | |||
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 Length directly within the ROUTE packet. | Transfer Length directly within the ROUTE packet. | |||
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. | used by the receiver to determine the transport object length. | |||
Applications using ROUTE for delivery of low-latency streaming | Applications using ROUTE for delivery of low-latency streaming | |||
content may make use of this feature for sender-end latency | content may make use of this feature for sender-end latency | |||
optimizations: the sender does not have to wait for the completion of | optimizations: the sender does not have to wait for the completion of | |||
the packaging of a whole Application Object to find its transfer | the packaging of a whole Application Object to find its Transfer | |||
length to be included in the FDT before the sending can start. | Length to be included in the FDT before the sending can start. | |||
Rather, partially encoded data can already be started to be sent via | Rather, partially encoded data can already be started to be sent via | |||
the ROUTE sender. As the time approaches when the encoding of the | the ROUTE sender. As the time approaches when the encoding of the | |||
Application Object is nearing completion, and the length 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 | object becomes known (e.g., the time of writing the last CMAF Chunk | |||
DASH segment), only then the sender can signal the object length | 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 | 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 | segment with 100-millisecond chunks, it may result in saving up to | |||
1.9 second latency at the sending end. | 1.9 second latency at the sending end. | |||
9.4. Repair Protocol Concepts | 9.4. Repair Protocol Concepts | |||
The ROUTE repair protocol is FEC-based and is enabled as an | The ROUTE repair protocol is FEC-based and is enabled as an | |||
additional layer between the transport layer (e.g., UDP) and the | additional layer between the transport layer (e.g., UDP) and the | |||
object delivery layer protocol. The FEC reuses concepts of FEC | object delivery layer protocol. The FEC reuses concepts of the FEC | |||
Framework defined in RFC 6363 [RFC6363], but in contrast to the FEC | Framework defined in RFC 6363 [RFC6363], but in contrast to the FEC | |||
Framework in RFC 6363 [RFC6363] the ROUTE repair protocol does not | Framework in RFC 6363 [RFC6363], the ROUTE repair protocol does not | |||
protect packets, but instead it protects delivery objects as | protect packets but instead protects delivery objects as delivered in | |||
delivered in the source protocol. In addition, as an extension to | the source protocol. In addition, as an extension to FLUTE, it | |||
FLUTE, it supports the protection of multiple objects in one source | supports the protection of multiple objects in one source block which | |||
block which is in alignment with the FEC Framework as defined in RFC | is in alignment with the FEC Framework as defined in RFC 6363 | |||
6363 [RFC6363]. Each FEC source block may consist of parts of a | [RFC6363]. Each FEC source block may consist of parts of a delivery | |||
delivery object, as a single delivery object (similar to FLUTE) or | object, as a single delivery object (similar to FLUTE) or multiple | |||
multiple delivery objects that are bundled prior to FEC protection. | delivery objects that are bundled prior to FEC protection. ROUTE FEC | |||
ROUTE FEC makes use of FEC schemes in a similar way as those defined | makes use of FEC schemes in a similar way as those defined in RFC | |||
in RFC 5052 [RFC5052] and uses the terminology of that document. The | 5052 [RFC5052] and uses the terminology of that document. The FEC | |||
FEC scheme defines the FEC encoding and decoding, as well as the | scheme defines the FEC encoding and decoding as well as the protocol | |||
protocol fields and procedures used to identify packet payload data | fields and procedures used to identify packet payload data in the | |||
in the context of the FEC scheme. | context of the FEC scheme. | |||
In ROUTE all packets are LCT packets as defined in RFC 5651 | ||||
[RFC5651]. Source and repair packets may be distinguished by: | ||||
o Different ROUTE sessions; i.e., they are carried on different | In ROUTE, all packets are LCT packets as defined in RFC 5651 | |||
UDP/IP port combinations. | [RFC5651]. Source and repair packets may be distinguished by: | |||
o Different LCT channels; i.e., they use different TSI values in the | * Different ROUTE sessions, i.e., they are carried on different UDP/ | |||
IP port combinations. | ||||
* Different LCT channels, i.e., they use different TSI values in the | ||||
LCT header. | LCT header. | |||
o The most significant PSI bit in the LCT, if carried in the same | * The most significant PSI bit in the LCT, if carried in the same | |||
LCT channel. This mode of operation is mostly suitable for FLUTE- | LCT channel. This mode of operation is mostly suitable for FLUTE- | |||
compatible deployments. | compatible deployments. | |||
10. Interoperability Chart | 10. Interoperability Chart | |||
As noted in prevision sections, ATSC-ROUTE [ATSCA331] and DVB-MABR | As noted in prevision sections, ATSC-ROUTE [ATSCA331] and DVB-MABR | |||
[DVBMABR] are considered services using this document that constrain | [DVBMABR] are considered services using this document that constrain | |||
specific features as well as add new ones. In this context, the | specific features as well as add new ones. In this context, the | |||
following table is an informative comparison of the interoperability | following table is an informative comparison of the interoperability | |||
of ROUTE as specified in this document, with the ATSC-ROUTE | of ROUTE as specified in this document with ATSC-ROUTE [ATSCA331] and | |||
[ATSCA331] and DVB-MABR [DVBMABR]: | DVB-MABR [DVBMABR]: | |||
+---------------+---------------+--------------------+-----------------+ | +===============+===================+==================+============+ | |||
| Element | ATSC-ROUTE | This Document | DVB-MABR | | | Element | ATSC-ROUTE | This Document | DVB-MABR | | |||
| | | | | | +===============+===================+==================+============+ | |||
+--------+------+---------------+--------------------+-----------------+ | | LCT header | PSI LSB set to 0 | Not defined | Set to 1 | | |||
| LCT |PSI | Set to 0 | Not defined | Set to 1 for | | | field | for Source Flow | | for Source | | |||
| header |least | for Source | | Source Flow for | | | | | | Flow for | | |||
| fields |signi-| Flow. | | CMAF Random | | | | | | CMAF | | |||
| |ficant| | | access chunk | | | | | | Random | | |||
| |bit | | | | | | | | | Access | | |||
| +------+---------------+--------------------------------------+ | | | | | chunk | | |||
| |CCI | May be set | May be set to EPT for Source Flow | | | +-------------------+------------------+------------+ | |||
| | | to 0 | | | | | CCI may be set to | CCI may be set to EPT for | | |||
+--------+------+---------------+--------------------+-----------------+ | | | 0 | Source Flow | | |||
| LCT header | EXT_ROUTE_ | Not defined, | Shall not | | +---------------+-------------------+------------------+------------+ | |||
| extensions | PRESENTATION_ | may be added | be used | | | LCT header | EXT_ROUTE_ | Not defined; | Shall not | | |||
| | TIME Header | by a profile. | | | | extensions | PRESENTATION_TIME | may be added by | be used. | | |||
| | used for | | | | | | Header used for | a profile. | | | |||
| | MDE mode | | | | | | Media Delivery | | | | |||
| +---------------+--------------------+-----------------+ | | | Event (MDE) mode | | | | |||
| | EXT_TIME | EXT_TIME Header may be used | | | +-------------------+------------------+------------+ | |||
| | Header | regardless (for | | | | EXT_TIME Header | EXT_TIME Header may be used | | |||
| | linked to | FDT-Instance@Expires | | | | linked to MDE | regardless (for FDT- | | |||
| | MDE mode | calculation) | | | | mode in Annex | Instance@Expires | | |||
| | in Annex | | | | | A.3.7.2 | calculation) | | |||
| | A.3.7.2 | | | | | [ATSCA331] | | | |||
+---------------+---------------+--------------------+-----------------+ | +---------------+-------------------+------------------+------------+ | |||
| Codepoints | Full set | Does not specify | Restricted | | | Codepoints | Full set | Does not | Restricted | | |||
| | | range 11 - 255 | to 5 - 9 | | | | | specify range | to 5 - 9 | | |||
| | | (leaves to | | | | | | 11 - 255 | | | |||
| | | profiles) | | | | | | (leaves to | | | |||
+---------------+---------------+--------------------+-----------------+ | | | | profiles) | | | |||
| Session | Full set | Only defines | Reuses A/331 | | +---------------+-------------------+------------------+------------+ | |||
| metadata | | a small subset | metadata, | | | Session | Full set | Only defines a | Reuses | | |||
| | | of data necessary | duplicated | | | metadata | | small subset of | A/331 | | |||
| | | for setting up | from its own | | | | | data necessary | metadata, | | |||
| | | Source and Repair | service | | | | | for setting up | duplicated | | |||
| | | Flows. | signaling. | | | | | Source and | from its | | |||
| | | Does not define | | | | | | Repair Flows. | own | | |||
| | | format or | | | | | | Does not define | Service | | |||
| | | encoding of data | | | | | | format or | signaling. | | |||
| | | except if data is | | | | | | encoding of | | | |||
| | | integral/ | | | | | | data except if | | | |||
| | | alphanumerical. | | | | | | data is | | | |||
| | | Leaves rest to | | | | | | integral/ | | | |||
| | | profiles. | | | | | | alphanumerical. | | | |||
+---------------+---------------+--------------------+-----------------+ | | | | Leaves rest to | | | |||
| Extended | Instance | Not restricted, | Instance shall | | | | | profiles. | | | |||
| FDT | shall not | may be | not be sent | | +---------------+-------------------+------------------+------------+ | |||
| | be sent | restricted | with Source | | | Extended FDT | Instance shall | Not restricted, | Instance | | |||
| | with Source | by a profile. | Flow | | | | not be sent with | may be | shall not | | |||
| | Flow | | | | | | Source Flow | restricted by a | be sent | | |||
| +---------------+--------------------+-----------------+ | | | | profile. | with | | |||
| | No | Only allowed in File Mode | | | | | | Source | | |||
| | restriction | | | | | | | Flow | | |||
+---------------+---------------+--------------------+-----------------+ | | +-------------------+------------------+------------+ | |||
| Delivery | File, Entity, Signed/ | Signed/ | | | | No restriction | Only allowed in File Mode | | |||
| Object | unsigned package | unsigned | | +---------------+-------------------+------------------+------------+ | |||
| Mode | | package not | | | Delivery | File, Entity, Signed/unsigned | Signed/ | | |||
| | | allowed | | | Object Mode | package | unsigned | | |||
+---------------+---------------+--------------------+-----------------+ | | | | package | | |||
| Sender | Defined for | Defined for DASH segment and CMAF | | | | | not | | |||
| operation: | DASH | Chunks | | | | | allowed | | |||
| Packet- | segment | | | +---------------+-------------------+------------------+------------+ | |||
| ization | | | | | Sender | Defined for DASH | Defined for DASH segment and | | |||
+---------------+---------------+--------------------------------------+ | | operation: | segment | CMAF Chunks | | |||
| Receiver | Object | Object may be handed before | | | Packetization | | | | |||
| object | handed | completion if | | +---------------+-------------------+-------------------------------+ | |||
| recovery | to | MPD@availabilityTimeOffset | | | Receiver | Object handed to | Object may be handed before | | |||
| | application | signaled | | | object | application upon | completion if | | |||
| | upon | | | | recovery | complete | MPD@availabilityTimeOffset | | |||
| | complete | | | | | reception | signaled | | |||
| | reception | | | | +-------------------+-------------------------------+ | |||
| +---------------+--------------------------------------+ | | | - | Fast Stream acquisition | | |||
| | - | Fast Stream acquisition | | | | | guidelines provided | | |||
| | | guideline provided | | +---------------+-------------------+-------------------------------+ | |||
+---------------+---------------+--------------------------------------+ | ||||
11. Security and Privacy Considerations | ||||
11.1. Security Considerations | Table 3: Interoperability Chart | |||
11. Security and Privacy Considerations | ||||
11.1. Security Considerations | ||||
As noted in Section 9, ROUTE is aligned with FLUTE as specified in | As noted in Section 9, ROUTE is aligned with FLUTE as specified in | |||
RFC 6726 [RFC6726] (see Section 9), and only diverges in certain | RFC 6726 [RFC6726] and only diverges in certain signaling | |||
signaling optimizations, especially for the real-time object delivery | optimizations, especially for the real-time object delivery case. | |||
case. Hence most of the security considerations documented in RFC | Hence, most of the security considerations documented in RFC 6726 | |||
6726 [RFC6726] for the data flow itself, the session metadata | [RFC6726] for the data flow itself, the session metadata (session | |||
(session control parameters in RFC 6726 [RFC6726]), and the | control parameters in RFC 6726 [RFC6726]), and the associated | |||
associated building blocks apply directly to ROUTE, as elaborated in | building blocks apply directly to ROUTE as elaborated in the | |||
the following along with some additional considerations. | following along with some additional considerations. | |||
Both encryption and integrity protection applied either on file or | Both encryption and integrity protection applied either on file or | |||
packet level, as recommended in file corruption considerations of RFC | packet level, as recommended in the file corruption considerations of | |||
6726 [RFC6726] SHOULD be used for ROUTE. Additionally, RFC 3740 | RFC 6726 [RFC6726], SHOULD be used for ROUTE. Additionally, RFC 3740 | |||
[RFC3740] documents multicast security architecture in great detail | [RFC3740] documents multicast security architecture in great detail | |||
with clear security recommendations which SHOULD be followed. | with clear security recommendations that SHOULD be followed. | |||
When ROUTE is carried over UDP and a reverse channel from receiver to | When ROUTE is carried over UDP and a reverse channel from receiver to | |||
sender is available, the security mechanisms provided in RFC 6347 | sender is available, the security mechanisms provided in RFC 9147 | |||
[RFC6347] SHALL apply. At the time, draft DTLS 1.3 based on TSL 1.3 | [RFC9147] SHOULD be applied. | |||
[DTLS13] is pending publication, and may be considered as the | ||||
alternate means for security post publication. | ||||
In regard to considerations for attacks against session description, | In regard to considerations for attacks against session description, | |||
this document does not specify the semantics or mechanism of delivery | this document does not specify the semantics or mechanism of delivery | |||
of session metadata, though the same threats apply for service using | of session metadata, though the same threats apply for service using | |||
ROUTE as well. Hence a service using ROUTE SHOULD take these threats | ROUTE as well. Hence, a service using ROUTE SHOULD take these | |||
into consideration and address them appropriately following the | threats into consideration and address them appropriately following | |||
guideline provided by RFC 6726 [RFC6726]. Additionally to the | the guidelines provided by RFC 6726 [RFC6726]. Additionally, to the | |||
recommendations of RFC 6726 [RFC6726], for Internet connected | recommendations of RFC 6726 [RFC6726], for Internet connected | |||
devices, services SHOULD enable clients to access the session | devices, services SHOULD enable clients to access the session | |||
description information using HTTPS with customary | description information using HTTPS with customary authentication/ | |||
authentication/authorization, instead of sending this data via | authorization, instead of sending this data via multicast/broadcast, | |||
multicast/broadcast, since considerable security work has been done | since considerable security work has been done already in this | |||
already in this unicast domain which can enable highly secure access | unicast domain, which can enable highly secure access of session | |||
of session description data. Accessing via unicast however will have | description data. Accessing via unicast, however, will have | |||
different privacy considerations, noted in Section 11.2. Note that in | different privacy considerations, noted in Section 11.2. Note that | |||
general the multicast/broadcast stream is delayed with respect to the | in general the multicast/broadcast stream is delayed with respect to | |||
unicast stream. Therefore, the session description protocol SHOULD | the unicast stream. Therefore, the session description protocol | |||
be time-synchronized with the broadcast stream, particularly if the | SHOULD be time synchronized with the broadcast stream, particularly | |||
session description contains security-related information. | if the session description contains security-related information. | |||
In regard to FDT, there is one key difference for File Mode when | In regard to FDT, there is one key difference for File Mode when | |||
using File Template in EFDT, which avoids repeated sending of FDT | using File Template in EFDT, which avoids repeated sending of FDT- | |||
instance and hence the corresponding threats noted in RFC 6726 | Instances and hence, the corresponding threats noted in RFC 6726 | |||
[RFC6726] do not apply directly to ROUTE in this case. The threat, | ||||
[RFC6726] do not apply directly to ROUTE in this case. The threat | however, is shifted to the ALC/LCT headers, since they carry the | |||
however is shifted to the ALC/LCT headers, since they carry the | ||||
additional signaling that enables determining Content-Location and | additional signaling that enables determining Content-Location and | |||
File@Transfer-Length in this case. Hence integrity protection | File@Transfer-Length in this case. Hence, integrity protection | |||
recommendations of ALC/LCT header SHOULD be considered with higher | recommendations of ALC/LCT header SHOULD be considered with higher | |||
emphasis in this case for ROUTE. | emphasis in this case for ROUTE. | |||
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 Section 6.2. Receivers SHOULD have robustness against | specified in Section 6.2. Receivers SHOULD 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 SHOULD discard outlying values. Additionally, receivers | |||
adhere to the expiry timelines as specified in Section 6. Integrity | MUST adhere to the expiry timelines as specified in Section 6. | |||
protection mechanisms documented in RFC 6726 [RFC6726] SHOULD be used | Integrity protection mechanisms documented in RFC 6726 [RFC6726] | |||
to address this threat. | SHOULD be used to address this threat. | |||
11.2. Privacy Considerations | 11.2. Privacy Considerations | |||
Encryption mechanisms recommended for security considerations in | Encryption mechanisms recommended for security considerations in | |||
Section 11.1 SHOULD also be applied to enable privacy and protection | Section 11.1 SHOULD also be applied to enable privacy and protection | |||
from snooping attacks. | from snooping attacks. | |||
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 SHOULD be applied by the operators, e.g., | |||
Recommendations for DNS Privacy Service Operators in RFC 8932 | "Recommendations for DNS Privacy Service Operators" in RFC 8932 | |||
[RFC8932]. | [RFC8932]. | |||
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 SHALL apply to this | |||
access as for regular HTTPS communication, an area which is very well | 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 [RFC9000] enabling HTTP/3 | newer transport protocols such as IETF QUIC [RFC9000] enabling HTTP/3 | |||
[HTTP3]. Hence such newer protocols SHOULD be used to foster privacy. | [HTTP3]. Hence, such newer protocols SHOULD be used to foster | |||
privacy. | ||||
Note that streaming services MAY contain content that may only be | Note that streaming services MAY contain content that may only 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. | can prevent unauthorized access to content delivered via ROUTE. | |||
12. IANA Considerations | 12. IANA Considerations | |||
This document makes no requests for IANA action. | ||||
13. References | This document has no IANA actions. | |||
13.1. Normative References | 13. References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | 13.1. Normative References | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | ||||
http://tools.ietf.org/html/rfc2119 | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 | [ATSCA331] Advanced Television Systems Committee, "Signaling, | |||
Key Words", BCP 14, FC 8174, DOI 10.17487/RFC8174, May 2017. | Delivery, Synchronization, and Error Protection", ATSC | |||
http://tools.ietf.org/html/rfc8174 | Standard A/331:2022-03, March 2022. | |||
[RFC5651] Luby, M., Watson, M., and L. Vicisano, "Layered Coding | [RFC1952] Deutsch, P., "GZIP file format specification version 4.3", | |||
Transport (LCT) Building Block", RFC 5651, October 2009. | RFC 1952, DOI 10.17487/RFC1952, May 1996, | |||
http://tools.ietf.org/html/rfc5651 | <https://www.rfc-editor.org/info/rfc1952>. | |||
[RFC5775] Luby, M., Watson, M., and L. Vicisano, "Asynchronous | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Layered Coding (ALC) Protocol Instantiation", RFC 5775, April 2010. | Requirement Levels", BCP 14, RFC 2119, | |||
http://tools.ietf.org/html/rfc5775 | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC6726] Paila, T., Luby, M., Lehtonen, R., Roca, V., Walsh, R., | [RFC2557] Palme, J., Hopmann, A., and N. Shelness, "MIME | |||
"FLUTE-File Delivery over Unidirectional Transport." 2012. | Encapsulation of Aggregate Documents, such as HTML | |||
http://tools.ietf.org/html/rfc6726 | (MHTML)", RFC 2557, DOI 10.17487/RFC2557, March 1999, | |||
<https://www.rfc-editor.org/info/rfc2557>. | ||||
[RFC6330] Luby, M., Shokrollahi, A., Watson, M., Stockhammer, T., and | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Minder, L. "RaptorQ forward error correction scheme for object | Resource Identifier (URI): Generic Syntax", STD 66, | |||
delivery", 2011. | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
http://tools.ietf.org/html/rfc6330 | <https://www.rfc-editor.org/info/rfc3986>. | |||
[RFC3986] Berners-Lee, T., Fielding, R. and Masinter, L., "Uniform | [RFC5052] Watson, M., Luby, M., and L. Vicisano, "Forward Error | |||
Resource Identifier (URI): Generic Syntax", January 2005. | Correction (FEC) Building Block", RFC 5052, | |||
http://tools.ietf.org/html/rfc3986 | DOI 10.17487/RFC5052, August 2007, | |||
<https://www.rfc-editor.org/info/rfc5052>. | ||||
[RFC1952] Deutsch, P., "GZIP file format specification version 4.3," | [RFC5445] Watson, M., "Basic Forward Error Correction (FEC) | |||
Internet Engineering Task Force, Reston, VA, May, 1996. | Schemes", RFC 5445, DOI 10.17487/RFC5445, March 2009, | |||
http://tools.ietf.org/html/rfc1952 | <https://www.rfc-editor.org/info/rfc5445>. | |||
[RFC2557] Palme, J., Hopmann, A. and Shelness, N., "MIME | [RFC5651] Luby, M., Watson, M., and L. Vicisano, "Layered Coding | |||
Encapsulation of Aggregate Documents, such as HTML (MHTML)", Internet | Transport (LCT) Building Block", RFC 5651, | |||
Engineering Task Force, Reston, VA, March 1999. | DOI 10.17487/RFC5651, October 2009, | |||
http://tools.ietf.org/html/rfc2557 | <https://www.rfc-editor.org/info/rfc5651>. | |||
[RFC8551] Schaad, J., Ramsdell, B., and S. Turner, | [RFC5775] Luby, M., Watson, M., and L. Vicisano, "Asynchronous | |||
"Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2 | Layered Coding (ALC) Protocol Instantiation", RFC 5775, | |||
Message Specification," Internet Engineering Task Force, Fremont, CA, | DOI 10.17487/RFC5775, April 2010, | |||
January 2010. | <https://www.rfc-editor.org/info/rfc5775>. | |||
https://tools.ietf.org/html/rfc8551 | ||||
[RFC5445] Watson, M., "Basic Forward Error Correction (FEC) Schemes," | [RFC6330] Luby, M., Shokrollahi, A., Watson, M., Stockhammer, T., | |||
Internet Engineering Task Force, Reston, VA, March, 2009. | and L. Minder, "RaptorQ Forward Error Correction Scheme | |||
http://tools.ietf.org/html/rfc5445 | for Object Delivery", RFC 6330, DOI 10.17487/RFC6330, | |||
August 2011, <https://www.rfc-editor.org/info/rfc6330>. | ||||
[RFC5052] Watson, M., Luby, M., and Vicisano, L., "Forward Error | [RFC6363] Watson, M., Begen, A., and V. Roca, "Forward Error | |||
Correction (FEC) Building Block," Internet Engineering Task Force, | Correction (FEC) Framework", RFC 6363, | |||
Reston, VA, August 2007. http://tools.ietf.org/html/rfc5052 | DOI 10.17487/RFC6363, October 2011, | |||
<https://www.rfc-editor.org/info/rfc6363>. | ||||
[RFC6363] Watson, M., Begen, A. and Roca, V., "Forward Error | [RFC6726] Paila, T., Walsh, R., Luby, M., Roca, V., and R. Lehtonen, | |||
Correction (FEC) Framework," Internet Engineering Task Force, Reston, | "FLUTE - File Delivery over Unidirectional Transport", | |||
VA, October, 2011. http://tools.ietf.org/html/rfc6363 | RFC 6726, DOI 10.17487/RFC6726, November 2012, | |||
<https://www.rfc-editor.org/info/rfc6726>. | ||||
[RFC7231] IETF RFC 7231 "Hypertext Transfer Protocol (HTTP/1.1): | [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
Semantics and Content", June 2014. | Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | |||
http://tools.ietf.org/html/rfc7231 | DOI 10.17487/RFC7231, June 2014, | |||
<https://www.rfc-editor.org/info/rfc7231>. | ||||
[ATSCA331] ATSC A/331:2019: "ATSC Standard: Signaling, Delivery, | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
Synchronization, and Error Protection", 20 June 2019. | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
13.2. Informative References | [RFC8551] Schaad, J., Ramsdell, B., and S. Turner, "Secure/ | |||
Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 | ||||
Message Specification", RFC 8551, DOI 10.17487/RFC8551, | ||||
April 2019, <https://www.rfc-editor.org/info/rfc8551>. | ||||
[RFC6968] Roca, V. and Adamson, B., "FCAST: Object Delivery for the | 13.2. Informative References | |||
Asynchronous Layered Coding (ALC) and NACK-Oriented Reliable | ||||
Multicast (NORM) Protocols," Internet Engineering Task Force, Reston, | ||||
VA, July, 2013. http://tools.ietf.org/html/rfc6968 | ||||
[DVBMABR] ETSI: "Digital Video Broadcasting (DVB); Adaptive media | [CMAF] International Organization for Standardization, | |||
streaming over IP multicast", ETSI TS 103 769 V1.1.1 (2020-11) | "Information technology -- Multimedia application format | |||
November 2020. | (MPEG-A) -- Part 19: Common media application format | |||
(CMAF) for segmented media", First edition, ISO/IEC | ||||
FDIS 23000-19, January 2018, | ||||
<https://www.iso.org/standard/71975.html>. | ||||
[DASH] ISO/IEC 23009-1:2019: "Information technology - Dynamic | [DASH] International Organization for Standardization, | |||
adaptive streaming over HTTP (DASH) - Part 1: Media presentation | "Information technology - Dynamic adaptive streaming over | |||
description and segment formats", Fourth edition, December 2019. | HTTP (DASH) - Part 1: Media presentation description and | |||
segment formats", Fourth edition, ISO/IEC 23009-1:2019, | ||||
December 2019, <https://www.iso.org/standard/79329.html>. | ||||
[CMAF] ISO/IEC 23000-19:2018: "Information technology - Multimedia | [DVBMABR] ETSI, "Digital Video Broadcasting (DVB); Adaptive media | |||
application format (MPEG-A) - Part 19: Common media application | streaming over IP multicast", version 1.1.1, ETSI TS 103 | |||
format (CMAF) for segmented media", First edition, January 2018. | 769, November 2020. | |||
[MBMS] ETSI: "Universal Mobile Telecommunications Systems (UMTS); | [HTTP3] Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 | |||
LTE; Multimedia Broadcast/Multicast Service (MBMS); Protocols and | (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf- | |||
codecs (3GPP TS 26.346 version 13.3.0 Release 13)," Doc. ETSI TS 126 | quic-http-34, 2 February 2021, | |||
346 v13.3.0 (2016-01), European Telecommunications Standards | <https://datatracker.ietf.org/doc/html/draft-ietf-quic- | |||
Institute, January 2016. | http-34>. | |||
[RFC3740] Hardjono, T. and B. Weis, "The Multicast Group Security | [MBMS] ETSI, "Universal Mobile Telecommunications Systems (UMTS); | |||
Architecture", RFC 3740, DOI 10.17487/RFC3740, March 2004, | LTE; 5G; Multimedia Broadcast/Multicast Service (MBMS); | |||
https://www.rfc-editor.org/info/rfc3740. | Protocols and codecs", version 16.9.1, ETSI TS 126 346, | |||
May 2021. | ||||
[HTTP3] M. Bishop, Ed, "Hypertext Transfer Protocol Version 3 | [RFC3740] Hardjono, T. and B. Weis, "The Multicast Group Security | |||
(HTTP/3)", draft-ietf-quic-http-34, February 2021. | Architecture", RFC 3740, DOI 10.17487/RFC3740, March 2004, | |||
<https://www.rfc-editor.org/info/rfc3740>. | ||||
[RFC9000] Iyengar, J., Ed., and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC6968] Roca, V. and B. Adamson, "FCAST: Object Delivery for the | |||
Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, | Asynchronous Layered Coding (ALC) and NACK-Oriented | |||
May 2021, <https://www.rfc-editor.org/info/rfc9000>. | Reliable Multicast (NORM) Protocols", RFC 6968, | |||
DOI 10.17487/RFC6968, July 2013, | ||||
<https://www.rfc-editor.org/info/rfc6968>. | ||||
[RFC6347] Rescorla E. and N. Modadugu. "Datagram Transport Layer | [RFC8932] Dickinson, S., Overeinder, B., van Rijswijk-Deij, R., and | |||
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012, | A. Mankin, "Recommendations for DNS Privacy Service | |||
https://www.rfc-editor.org/info/rfc6347. | Operators", BCP 232, RFC 8932, DOI 10.17487/RFC8932, | |||
October 2020, <https://www.rfc-editor.org/info/rfc8932>. | ||||
[RFC8932] Dickinson, S., Overeinder, B., van Rijswijk-Deij, R., and | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
A. Mankin, "Recommendations for DNS Privacy Service Operators", BCP | Multiplexed and Secure Transport", RFC 9000, | |||
232, RFC 8932, DOI 10.17487/RFC8932, October 2020, https://www.rfc- | DOI 10.17487/RFC9000, May 2021, | |||
editor.org/info/rfc8932. | <https://www.rfc-editor.org/info/rfc9000>. | |||
[DTLS13] Rescorla, E., Tschofenig, H., Modadugu, N., "The Datagram | [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
Transport Layer Security (DTLS) Protocol Version 1.3", Work in | Datagram Transport Layer Security (DTLS) Protocol Version | |||
Progress, draft-ietf-tls-dtls13, February 2022. | 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | |||
<https://www.rfc-editor.org/info/rfc9147>. | ||||
14. Acknowledgments | Acknowledgments | |||
As outlined in the introduction and in ROUTE concepts in Section 9, | As outlined in the introduction and in ROUTE concepts in Section 9, | |||
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): Mike | |||
Luby, Kent Walker, Charles Lo, and other colleagues from Qualcomm | Luby, Kent Walker, Charles Lo, and other colleagues from Qualcomm | |||
Incorporated, LG Electronics, Nomor Research, Sony, and BBC R&D. | Incorporated, LG Electronics, Nomor Research, Sony, and BBC R&D. | |||
Authors' Addresses | Authors' Addresses | |||
Waqar Zia | Waqar Zia | |||
Qualcomm CDMA Technologies GmbH | Qualcomm CDMA Technologies GmbH | |||
Anzinger Str. 13, 81671, Munich, Germany | Anzinger Str. 13 | |||
81671 Munich | ||||
Germany | ||||
Email: wzia@qti.qualcomm.com | Email: wzia@qti.qualcomm.com | |||
Thomas Stockhammer | Thomas Stockhammer | |||
Qualcomm CDMA Technologies GmbH | Qualcomm CDMA Technologies GmbH | |||
Anzinger Str. 13, 81671, Munich, Germany | Anzinger Str. 13 | |||
81671 Munich | ||||
Germany | ||||
Email: tsto@qti.qualcomm.com | Email: tsto@qti.qualcomm.com | |||
Lenaig Chaponniere | Lenaig Chaponniere | |||
Qualcomm Technologies Inc. | Qualcomm Technologies Inc. | |||
5775 Morehouse Drive | 5775 Morehouse Drive | |||
San Diego, California 92121 | San Diego, CA 92121 | |||
USA | United States of America | |||
Email: lguellec@qti.qualcomm.com | Email: lguellec@qti.qualcomm.com | |||
Giridhar Mandyam | Giridhar Mandyam | |||
Qualcomm Technologies Inc. | Qualcomm Technologies Inc. | |||
5775 Morehouse Drive | 5775 Morehouse Drive | |||
San Diego, California 92121 | San Diego, CA 92121 | |||
USA | United States of America | |||
Email: mandyam@qti.qualcomm.com | Email: mandyam@qti.qualcomm.com | |||
Michael Luby | Michael Luby | |||
BitRipple, Inc. | BitRipple, Inc. | |||
1133 Miller Ave | 1133 Miller Ave | |||
Berkeley CA 94708 | Berkeley, CA 94708 | |||
USA | United States of America | |||
Email: luby@bitripple.com | Email: luby@bitripple.com | |||
End of changes. 367 change blocks. | ||||
1161 lines changed or deleted | 1218 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/ |