Skip to main content

MSYNC
draft-bichot-msync-08

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Active".
Authors Sophie Bale , Remy Brebion , Guillaume Bichot
Last updated 2023-02-11
RFC stream Independent Submission
Formats
Reviews
Stream ISE state Response to Review Needed
Awaiting Reviews
Consensus boilerplate Unknown
Document shepherd (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-bichot-msync-08
Internet-Draft                                                   S. Bale
Intended Status: Informational                                R. Brebion
Expires: August 15, 2023                                       G. Bichot
                                                               Broadpeak
                                                       February 11, 2023

                                 MSYNC 
                         draft-bichot-msync-08  

Abstract

   This document describes the Multicast Synchronization (MSYNC)
   Protocol that aims at transferring video media objects over IP
   multicast. Although generic, MSYNC has been primarily designed for
   transporting HTTP adaptive streaming (HAS) objects including
   manifest/playlists and media segments (e.g. CMAF) according to an HAS
   protocol such as Apple HLS or MPEG DASH between a multicast sender
   and a multicast receiver.          

Status of this Memo

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

   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
   http://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

Copyright and License Notice

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

   This document is subject to BCP 78 and the IETF Trust's Legal
 

Bale et aL.             Expires August 15, 2023                 [Page 1]
Internet-Draft                   MSYNC                 February 11, 2023

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

Table of Contents

   1  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1  Terminology . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.2  Definitions . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   3. MSYNC Protocol  . . . . . . . . . . . . . . . . . . . . . . . .  8
     3.1. MSYNC Packet Format . . . . . . . . . . . . . . . . . . . .  8
     3.2. Object Info Packet  . . . . . . . . . . . . . . . . . . . .  9
     3.3. Object Data Packet  . . . . . . . . . . . . . . . . . . . . 11
     3.4. Object HTTP Header Packet . . . . . . . . . . . . . . . . . 12
     3.5. Object Data-part Packet . . . . . . . . . . . . . . . . . . 13
     3.6. Maximum Size of an MSYNC Packet . . . . . . . . . . . . . . 14
     3.7. Sending an receiving MSYNC Objects Over Transport/IP 
          Multicast Sessions  . . . . . . . . . . . . . . . . . . . . 14
     3.8. HAS Protocol Dependency . . . . . . . . . . . . . . . . . . 16
       3.8.1. Object Info Packet  . . . . . . . . . . . . . . . . . . 16
         3.8.1.1. Media Sequence  . . . . . . . . . . . . . . . . . . 16
         3.8.1.2. Object URI  . . . . . . . . . . . . . . . . . . . . 17
       3.8.2. Sending Rules . . . . . . . . . . . . . . . . . . . . . 18
     3.9. RTP As The Transport Multicast Session Protocol . . . . . . 18
   4.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 21
   5.  Security Considerations  . . . . . . . . . . . . . . . . . . . 21
   6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 21
     6.1.  Normative References . . . . . . . . . . . . . . . . . . . 21
     6.2.  Informative References . . . . . . . . . . . . . . . . . . 22
   7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 22
   8. Change Log  . . . . . . . . . . . . . . . . . . . . . . . . . . 22
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 23

 

Bale et aL.             Expires August 15, 2023                 [Page 2]
Internet-Draft                   MSYNC                 February 11, 2023

1  Introduction

   Transporting media content over multicast is known to be very
   effective for saving network resources (bandwidth). Multicast is
   available and used by Internet service providers for providing IPTV
   services.  The IPTV technology relies essentially on MPEG Transport
   Stream (MPEG TS) format, UDP transport and IP multicast while the
   HTTP adaptive bit-rate streaming (HAS), a unicast "Over The Top"
   technology relies on HTTP /TCP, new container formats (as MP4/CMAF)
   and signaling protocols (Apple HLS, MPEG DASH). With the
   generalization of HAS streaming there is a need to operate multicast
   in order to achieve the same level of bandwidth efficiency provided
   by an IPTV service. MSYNC allows transporting HTTP based ABR flows
   over multicast relying on IP/UDP and optionally RTP that makes it
   particularly suited for transitioning IPTV legacy (MPEG2 TS) to the
   HAS ecosystem. MSYNC is simple (no flow control, no forward error
   correction) although reliable (enable easy coupling with a unicast
   based repair protocols) and extensible; it has been experimented and
   deployed over various IPTV infrastructures (xDSL, cable, fiber) and
   satellite.

1.1  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

1.2  Definitions

   HTTP Adaptive Streaming (HAS) session: Transport one or more media
        streams (e.g. one video, two audios, One subtitle) according to
        HTTP. A HAS session is triggered by a player downloading first a
        manifest file(s), then init and/or media segments (belonging to
        possibly different sub-streams according to the selected
        representation) and possibly more manifest files according to
        the HAS protocol.

   init segment: A piece of a media sub-stream used to initialize the
        decoder as specified in [MPEGCMAF].

   IP multicast session: A session gathering transport multicast
        sessions having the same source IP address and destination
        multicast IP address.

   manifest: A file gathering the configuration for conducting a
        streaming session; corresponds to a play list as defined by HLS
        [RFC8216]. During a HAS streaming session, a manifest or
 

Bale et aL.             Expires August 15, 2023                 [Page 3]
Internet-Draft                   MSYNC                 February 11, 2023

        playlist can be modified. 

   media: A digitalized piece of video, audio, subtitle, image, ....

   media chunk: A piece of a media segment of a fixed duration as
        specified in [MPEGCMAF].

   media segment: A piece of a media sub-stream of a fixed duration
        (e.g. 2s) as specified in [MPEGCMAF].

   media stream: Gathers one or more media sub-streams.

   media sub-stream:  A version of a media encoded in a particular bit-
        rate, format and resolution; also called representation or
        variant stream.

   MSYNC channel: The set of transport multicast sessions carrying a HAS
        session as a set of MSYNC objects.

   MSYNC control channel: the transport multicast session carrying
        control plane MSYNC objects. As part of the control channel, an
        MSYNC object may transport some control plane information (as
        e.g. the MSYNC receiver configuration).

   MSYNC object: As part of a HAS session carried over MSYNC, an MSYSNC
        object can be an addressable HAS entity like an initialization
        segment, a media segment (or fragment, or chunk), a manifest (or
        playlist). An MSYNC object can also be a non-addressable
        transport entity like a part of a segment (an HTTP2 frame or an
        HTTP 1.1 CTE block). An MSYNC object is sent by an MSYNC sender
        over a transport multicast session and receives by an MSYNC
        receiver.

   MSYNC packet: The transport unit of MSYNC. Several MSYNC packets MAY
        be used to transport an MSYNC object.

   MSYNC receiver. The MSYNC end point that receives MSYNC objects over
        multicast according to MSYNC. It is typically part of a
        multicast gateway that receives MSYNC objects relying on the
        MSYNC receiver and reconstructs/serves in unicast the original
        HAS session on demand (i.e. based on HAS player requests).

   MSYNC sender. The MSYNC end point that sends MSYNC objects over
        multicast according to MSYNC. It is typically part of a
        multicast server that acquire HAS session payload and send it
        over multicast as MSYNC objects relying on the MSYNC sender.

   MSYNC super object. When an object to be transmitted is composed of
 

Bale et aL.             Expires August 15, 2023                 [Page 4]
Internet-Draft                   MSYNC                 February 11, 2023

        parts delivered on the fly when available in such a way the size
        of an object to be transmitted is unknown in advance, it is
        called a super object. A super object may correspond to a stream
        or a media segment not yet completely generated/received and for
        which the size is therefore unknown.

   representation: A media sub-stream as defined by [MPEGDASH];
        Corresponds to a variant stream as defined by HLS [RFC8216].

   RTP multicast session: A transport multicast session based on RTP as
        defined in [RFC3550].

   transport multicast session: Operating a transport protocol that is
        (possibly based on) UDP over IP multicast. A transport multicast
        session is identified by the transport (UDP) port number, the
        source IP address and the IP multicast address.

   variant stream :  A media sub-stream as defined by HLS [RFC8216];
        corresponds to a representation as defined by [MPEGDASH].

2.  Overview

   MSYNC is a simple protocol typically used between a multicast server
   (hosting the MSYNC sender) and a multicast gateway (hosting the MSYNC
   receiver) as represented in the figure 1 below. The multicast server
   acquires HAS session elements in unicast conforming to a HAS protocol
   as e.g. MPEG DASH [MPEGDASH] or HLS [RFC8216] and sends those HAS
   session elements over a multicast link according to MSYNC supporting
   [possibly RTP/] UDP/IP multicast up to the multicast gateways. A
   multicast gateway listens the corresponding multicast flows and serve
   the HAS player(s) in unicast conforming to the same HAS protocol.
   MSYNC permits a sender to serve simultaneously multiple receivers
   conforming to one or several HAS protocols and formats (e.g. assuming
   one shared multicast network, one sender could served some receivers
   with MPEG DASH compliant content and some other receivers with HLS
   compliant content). 

   The Multicast server is configured (by e.g. the ISP operating the
   multicast network) in order to acquire HAS content from a Content
   Distribution Network (CDN) over a unicast link. Considering one among
   several possible content ingest methods (e.g. HTTP GET), for each HAS
   session, the multicast server behaves as a sort of HAS player,
   reading the manifest, discovering the available representations and
   downloading concurrently media segments of all (or a subset) of the
   available representations. Finally the multicast server is configured
   for sending all those HAS session elements over [possibly RTP/]UDP/IP
   multicast according to a certain UDP flow arrangement (for example
 

Bale et aL.             Expires August 15, 2023                 [Page 5]
Internet-Draft                   MSYNC                 February 11, 2023

   all the objects related to each video representation are sent over a
   separate multicast transport session (multicast IP address +  port
   number) whereas all audio representations are sent over the same
   transport multicast session.

   The Multicast gateway is configured (by the same ISP having
   configured the multicast server) for being aware of the same UDP flow
   arrangement in order to listen and to receive the right transport
   multicast sessions (in particular the MSYNC receiver has to subscribe
   to the multicast IP group addresses associated with that UDP flow
   arrangement. Note that the multicast gateway might not be capable of
   being attached to all the concurrent transport multicast sessions in
   the same time per bandwidth restriction (e.g. ADSL). In that case,
   the multicast gateway attaches to the transport multicast session
   corresponding to the player's request (and detaches from the other
   previous one).

   At any time, the multicast gateway can detect corrupted and/or lost
   packets and attempt to repair using a repair protocol. This is
   possible interacting with the HAS CDN or thanks to the RTP protocol
   if used as the transport layer over UDP (see section 3.9).

   The multicast gateway receives the MSYNC objects and is ready to
   serve it (e.g. acts as a local cache). Whenever a HAS request is sent
   by a media player and received by the multicast gateway, the latter
   reads first its local cache. In case of cache hit, it returns the
   object. In case of cache miss, the multicast gateway can possibly
   retrieve the requested object from the associated CDN (or a dedicated
   server) over an unicast interface (if existing) through operating
   HTTP conventionally and forwards back to the HAS player the object
   once retrieved.

 

Bale et aL.             Expires August 15, 2023                 [Page 6]
Internet-Draft                   MSYNC                 February 11, 2023

    Unicast server                   Multicast server        
    +-------- +                  + -------------------- +  
    |   HAS   | < -- unicast --> |   HAS      |  MSYNC  |  
    |   CDN   |                  |  Ingest    |  Sender | 
    + ------- +                  + ---------------------+
       ^    ^                                       |
       |    |                                       |
    unicast  - - - - -unicast - - - - -         multicast
       |                               |            |
       v                               v            V
    +-------- +                  + -------------------- +
    |   HAS   | < -- unicast --> |   HAS      |  MSYNC  |
    | Player  |                  |  Server    |Receiver |
    + ------- +                  + ---------------------+
     End-user                        Multicast gateway
     terminal

                Figure 1: example of MSYNC deployment 

   The figure 1 shows a typical MSYNC deployment where a HAS player may
   interacts with an HAS server in a unicast way over e.g. Internet and
   may also interact with a multicast gateway over e.g. a local network
   (LAN) according to the same HAS protocol. With MSYNC deployed over a
   multicast link/network, the HAS player gets basically the HAS content
   in full transparency (i.e. the player is absolutely unaware of
   getting the content through MSYNC or not).

   Note that nothing precludes the MSYNC receiver or even the multicast
   gateway to be co-located with the media player and therefore embedded
   in the end-user terminal as shown in the figure 2.

                                    Multicast server        
    +-------- +                  + -------------------- +  
    |   HAS   | < -- unicast --> |   HAS      |  MSYNC  |  
    | Server  |                  |  Player    |  Sender | 
    + ------- +                  + ---------------------+
         ^                                         |
         |                                         |
      unicast                                  multicast
         |                                         |
         v                                         |
    + ----------------- +                          |
    |   HAS   |  MSYNC  |<-------------------------
    | Player  |Receiver |
    + ------------------+
     End-user terminal

         Figure 2: MSYNC receiver in the terminal
 

Bale et aL.             Expires August 15, 2023                 [Page 7]
Internet-Draft                   MSYNC                 February 11, 2023

   Note that nothing precludes application dependent features in the
   multicast server and/or the multicast gateway that may adapt/modify
   the content delivered to the end-user player.

3. MSYNC Protocol

3.1. MSYNC Packet Format

   The MSYNC packet has the following format.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   version     |  packet type  |        object identifier      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           sub-header                          |
   |                              ....                             |
   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   |                             data                              |
   |                             ....                              |

                     Figure 3: MSYNC Packet 

   version: 8 bits
      version of the MSYNC protocol = 0x3 

   packet type: 8 bits
      Defines the MSYNC packet type. The sub-header and the associated
      data (if any) are dependent on the packet type. The following
      types are defined.
        0x01: object info
        0x02: object info redundancy packet
        0x03: object data
        0x04: Reserved
        0x05: object http header
        0x06: object data-part as a piece of an object data for
        transporting e.g. an MPEG CMAF chunk, an HTTP 1.1 chunk or yet
        an HTTP2 frame. 

   object identifier: 16 bits
      The field identifies the object being transferred in a multicast
      transport session. Considering one multicast transport session,
      all MSYNC packets associated with the same object carry the same
      object identifier in their MSYNC packet header. Whenever this
      object ID change that means the transfer of the previous object is
      finished.

 

Bale et aL.             Expires August 15, 2023                 [Page 8]
Internet-Draft                   MSYNC                 February 11, 2023

   sub-header: series of N x 32 bits
      The packet sub-header is linked to the packet type. The details of
      each packet type is given in the next sections. 

   data: series of D x 8 bits
      This field is optional and is present depending on the packet
      type. D is bounded by the maximum size of a transport multicast
      session protocol packet size and the MTU (Maximum Transfer Unit)
      otherwise as depicted in 3.6.

3.2. Object Info Packet

      The Object info packet is used to transport the meta-data
      associated with an object. It permits to characterize the object
      in term of e.g. size and type. The object information is carried
      over one object info packet only. The object info packet is
      typically sent along with the object data it describes. 

      The object identifier corresponds to the object identifier of the
      object data packets or the object data-part packets the object
      info packet relates to.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   version     |  packet type  |        object identifier      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           object size                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     number of MSYNC packets                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          object CRC                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | object type   |   Reserved    | mtype |    object URI size    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        media sequence                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                         object URI                            |
      :                                                               :
      :                                                               :  
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 4: Object Info packet 

   packet type: 0x01 or 0x02
      Redundant object INFO packets (packet type 02) MAY be sent in
 

Bale et aL.             Expires August 15, 2023                 [Page 9]
Internet-Draft                   MSYNC                 February 11, 2023

      addition to the "main" object info packet according to section
      3.7.
   object size: 32 bits
      The number of bytes that compose the object payload transported
      with a MSYNC object data packet (Section 3.3) or MSYNC object
      data-part packet (Section 3.5). The maximum size of an object (4.4
      Gbytes) authorizes the transfer of a video segment of several tens
      of seconds, 4K encoded.   

      The size may be 0 indicating that there is no corresponding
      object's payload transmission foreseen (i.e. no expected MSYNC
      data packet or MSYNC data-part packet) . In case of a super object
      transmission (Section 3.5), if the object URI of an object info
      with an object size set to 0 matches the super object URI then it
      MUST be interpreted as the end of the super object transmission
      (Section 3.8.1.2).

   number of MSYNC packets: 32 bits
      Number of MSYNC packets that compose the transported object. If
      the object size is null (set to 0) then the number of MSYNC
      packets MUST be null (set to 0).

   object CRC: 32 bits
      A CRC applied to the object data payload for corruption detection.

   object type : 8 bits
      Defines the type of MSYNC data object associated with this MSYNC
      info packet
        0x00: Reserved for future use. 
        0x01: media manifest (playlist)
        0x02: Reserved
        0x03: media data or data-part: Transport stream (MPEG2-TS) 
        0x04: media data or data-part: MPEG4 (CMAF)
        0x05: control: control plane information (e.g. multicast gateway
        configuration)
        0x06-0xFF: Reserved

   mtype: 4 bits
      The manifest (playlist) type, the MSYNC INFO is compatible with.
      The field can take the following values.
        0x00: Not Applicable
        0x01: MPEG Dash as specified in [MPEGDASH].
        0x02: HLS as specified in [RFC8216].
        0x03-0xF: Reserved

   object URI size: 12bits
      The size in bytes of the object URI field. The value MUST
      guarantee that the MSYNC info packet size is not greater than the
 

Bale et aL.             Expires August 15, 2023                [Page 10]
Internet-Draft                   MSYNC                 February 11, 2023

      network MTU.

   media sequence: 32 bits
      It is a sequence number associated with the MSYNC objects data and
      data-part (for transporting a segment or a manifest). It is
      dependent on the mtype value. It is used to synchronize unicast
      and multicast receptions in the multicast gateway. The values and
      rules are detailed in the section 3.8 dedicated to the HAS
      protocol dependencies. The default value is 0x00. 

   object URI: Quotient((object URI size * 8)/32) bits + 32 bits if
      remainder ((object URI size * 8)/32) >0 
      This the path name associated with the object. It MAY corresponds
      to a storage/Cache path.  There SHOULD be a direct relationship
      between this URI and the URL associated with the addressable
      object (e.g. HAS segment or CMAF chunk and/or a manifest). The
      rules are detailed in the section 3.8 dedicated to the HAS
      protocol dependencies. 

      The object URI is coded as a series of string characters.
      Remaining non used bytes of the last 32 bits field MUST be filled
      with the 0x00 value. 

3.3. Object Data Packet

      This MSYNC packet carries part or all of the the object's data
      payload. The type of data and the way to process the object's data
      packets is function of the associated object's info packet. Object
      payload is transported through a series of object data packets.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   version     | packet type   |        object identifier      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         object offset                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              data                             |
      :                                                               :
      :                                                               :

                       Figure 5: Object Data packet 

   packet type: 0x03

   object offset: 32 bits
      The index from which the MSYNC object data packet payload is to be
      written in order to compose the object data at the receiver side
 

Bale et aL.             Expires August 15, 2023                [Page 11]
Internet-Draft                   MSYNC                 February 11, 2023

      (i.e. the multicast gateway). The first data packet of an object
      has an offset equal to 0. 

   data: N x 8bits
      The size N is not declared; it is bounded by the maximum size of
      the under-laying transport multicast session packet (e.g. RTP) as
      depicted in Section 3.6. The total size (number of bytes) of the
      object data is indicated in the associated object info (field
      object size).

3.4. Object HTTP Header Packet

      The HTTP header packet carries part or all of an HTTP header
      related to the object (data) to be sent. There is at most one HTTP
      header object per data (or data-part) object that can be
      repeated.

      The object identifier is the same than the one present in the
      object data packets or object data-part packets it relates to.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   version     |  packet type  |        object identifier      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      header size              |        header offset          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              data                             |
      :                                                               :
      :                                                               :

                      Figure 6: Object HTTP Header packet 

   packet type: 0x05

   header size: 16 bits
      An object HTTP header can be transported over one or several
      under-laying transport packets. This field indicates the total
      size of the HTTP header in bytes and it is indicated in each the
      HTTP header's packet.

   header offset: 16 bits
      The index from which this HTTP header MSYNC packet payload data is
      to be written in order to complement the HTTP header at the
      receiver side (i.e the multicast gateway). The first packet of the
      HTTP header has an offset equal to 0. 

   data: N x 8bits
 

Bale et aL.             Expires August 15, 2023                [Page 12]
Internet-Draft                   MSYNC                 February 11, 2023

      The size N is not declared; it is bounded by either the header
      size field value or by the maximum size of the under-laying
      transport packet(e.g. RTP)as depicted in Section 3.6.

3.5. Object Data-part Packet

      This MSYNC packet carries part or all of the media data-part
      object payload. The type of data and the way to process the
      object's data-part packets is function of the associated info
      packet. Object payload is transported through a series of object
      data-part packets. The data-part is used when the object
      corresponds to a "part" (a block) of a super object for which the
      size is unknown (a super object may correspond to a stream or a
      media segment not yet complete and for which the size is therefore
      unknown).

      All data-part packets belonging to the same data part object have
      the same object identifier that is the same one present in the
      object info packet and HTTP header (if any) packets the data-part
      object relates too. 

      All data-part objects composing a super object have a different
      object identifier. The way to link data-part objects with a super
      object is thanks to the object info packet (object URI) as
      explained in Section 3.8.1.2.

      The end of super-object transmission is signaled with an object
      info packet having both the object size and the number of MSYNC
      packets set to 0 and having the object URI matching the object URI
      of the already received parts according to Section 3.8.1.2. 

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   version     |  packet type  |        object identifier      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         object offset                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      super object offset                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              data                             |
      :                                                               :
      :                                                               :

                      Figure 7: Object Data-part packet 

   packet type: 0x06

 

Bale et aL.             Expires August 15, 2023                [Page 13]
Internet-Draft                   MSYNC                 February 11, 2023

   object offset: 32 bits
      The index from which the data-part packet payload is to be written
      in order to compose the object data-part at the receiver side
      (i.e. the multicast gateway). The first packet of the data-part
      has an offset equal to 0. 

   super object offset: 32 bits
      The index from which the object part-data packet payload is to be
      written in order to compose the super object data at the receiver
      side (i.e. the multicast gateway). The first data-part object
      composing a super object has the super object offset equal to 0.
      The super object offset is the same for all object data-part
      packets composing the same object data-part.

   data: N x 8bits
      The size N is not declared; it is bounded by the maximum size of
      the under-laying transport packet (e.g. RTP) as depicted in the
      section 3.6. The total size (number of bytes) of the object data
      is indicated in the associated object info (field object size).

3.6. Maximum Size of an MSYNC Packet

      An MSYNC packet MUST fit within the underlying protocol packet. As
      detailed in section 3, an MSYNC packet is composed with a header
      part and a data part for which the size is limited by the
      transport multicast protocol. With  RTP and/or UDP (which
      authorize up to 65235 bytes), then the maximum size is linked to
      the path MTU (Maximum Transfer Unit) as the largest transfer unit
      supported between the source (the multicast sender) and the
      destination (the multicast receiver) without fragmentation. 

3.7. Sending an receiving MSYNC Objects Over Transport/IP Multicast
      Sessions

      The following considerations are linked to the MSYNC sender and
      MSYNC receiver configuration. Note that the configuration
      procedure (protocol and format) is out of the scope of that
      document.

      The mapping of MSYNC objects related to a HAS stream onto
      transport/IP multicast sessions is not constrained by the MSYNC
      protocol. The multicast IP flow arrangement is chosen (typically
      by the ISP) function of the network architecture and capacity. For
      example, with xDSL, the capacity dedicated to multicast is limited
      which may drive to a IP multicast flow arrangement where each sub-
      stream/representation matches with one dedicated IP multicast
      session. The MSYNC receiver switches to the IP transport multicast
 

Bale et aL.             Expires August 15, 2023                [Page 14]
Internet-Draft                   MSYNC                 February 11, 2023

      session corresponding to the sub-stream/representation it should
      serve to the end user terminal/player. Alternatively, one would
      like to have one IP multicast session (with possibly multiple
      transport multicast sessions, each having a different destination
      port number) for the entire HAS session/MSYNC channel that is an
      arrangement a la "IPTV", less bandwidth efficient but where only
      one multicast IP address is allocated per HAS session/MSYNC
      channel.

      Considering a satellite network, as all transport multicast
      sessions are carried simultaneously, all IP multicast flow
      arrangements may make sense.

      Regarding the mapping onto a transport multicast session, the
      triplet: source IP address, destination multicast IP address and
      destination transport port number is the discriminator. It is
      RECOMMENDED to carry media sub-streams and the control channel in
      separate transport multicast sessions because It permits the
      deployment of different error correction (see section 3.9) or
      content protection procedure (e.g. one ISP may decide to encrypt
      the control channel). 

      The following arrangement is possible:   

        - One IP multicast session per media (audio or video or
        subtitle) sub-stream (representation); each transport multicast
        session having a different destination multicast IP address.

        - One transport multicast session for the MSYNC control channel.

        - It is perfectly possible to send all the MSYNC packets in only
        one transport multicast session.  

      For each MSYNC object (see object type in 3.2)  to be sent over a
      multicast transport multicast session , the MSYNC sender MUST send
      the following MSYNC packets in the specified order: one object
      info packet, zero or more object info redundant packets, zero or
      more HTTP header packets and one or more object data packets or
      object data-part packets.

      When the MSYNC object is a media data-part object of size null
      (used to signal the end of the transmission of a super object)
      then only one object info packet MUST be sent.

      Detecting the end of an MSYNC data object (or super object) 
      transmission is done thanks to the object Info (see 3.2)
      information. However entire packet loss is always possible in such
      a way the end of an object (or super object) transmission cannot
 

Bale et aL.             Expires August 15, 2023                [Page 15]
Internet-Draft                   MSYNC                 February 11, 2023

      be detected without the usage of a timer. MSYNC does not mandate
      any particular mechanism.; this is left to the implementer.The
      MYNC receiver MAY arm a timer when the reception start (e.g. first
      packet of a new object) and stop the timer after a certain time
      (linked with the application) triggering the end of teh
      transmission/reception of the object.     

3.8. HAS Protocol Dependency

      A certain number of MSYNC packet header fields have a dependency
      on the HAS protocol and therefore on the manifest type. Similarly
      the sending rules may also depend from the HAS protocol.

3.8.1. Object Info Packet

3.8.1.1. Media Sequence

      The media sequence (an object Info Packet header field presented
      in the section 3.2) is used by the multicast gateway to
      synchronize the MSYNC (i.e. multicast) reception with unicast
      reception. The multicast gateway may operate jointly
      MSYNC/multicast and unicast for retrieving HAS elements as
      indicated in section 2 and illustrated in figure 1. This is useful
      in some occasions like processing a new streaming session request
      (i.e. a manifest request after a channel switch) or in the case of
      segment repair. The multicast gateway may attempt to retrieve a
      manifest object or segment(s) through a unicast mean (e.g. a CDN
      server or a repair server) in order to speed up the start of the
      session or to repair damaged object(s). Consequently, the
      multicast gateway needs to understand the freshness of the HAS
      object received through multicast with regard to unicast. 

      If no unicast reception is used jointly with MSYNC in the
      multicast gateway (e.g. like in one way delivery only), the
      default value of 0x00 MAY be used.  

      If unicast reception is used jointly with MSYNC then the media
      sequence MUST be set depending on the object type (Info Packet
      header field presented in the section 3.2.) as listed below.

   HLS master playlist: 0x00

   HLS variant playlist; MUST contain the value of EXT-X-MEDIA-SEQUENCE
      added with the position in the playlist of the last segment
      transmitted.

   HLS segment: MUST contain the value of EXT-X-MEDIA-SEQUENCE added
      with the position of the segment in the playlist.
 

Bale et aL.             Expires August 15, 2023                [Page 16]
Internet-Draft                   MSYNC                 February 11, 2023

   DASH manifest: MUST contain $time$/scale or $Number$ corresponding to
      the last segment transmitted or under transmission (and possibly
      received partially) and declared by the manifest. 

   DASH segment: MUST contain the $time$/scale or $Number$ value 

        
3.8.1.2. Object URI

      In the context of HTTP adaptive streaming, The object URI is a URI
      reference.

      if the object is a HAS addressable entity (e.g. a segment or a
      CMAF chunk), the object URI MUST match (be a sub-string) with the
      URL announced in the corresponding manifest/playlist. 

      Examples:

        - The object URI: /tvChannel1/Q1/S_2 matches with the segment's
        URL that is computed from the associated manifest/playlist: 
        ".../tvChannel1/Q1/S_2.mp4"

        - The object URI /tvChannel11/Q1/S_2_3 matches with the CMAF
        chunk URL that is computed from the associated
        manifest/playlist:  ".../tvChannel11/Q1/S_2_3.mp4". 

      If the object is a non-addressable HAS entity (e.g. a HTTP 1.1 CTE
      block), the object URI is composed with a sub-string (that MUST
      match with the URL announced in the corresponding manifest) and a
      suffix composed with the hash sign/character (#) and the block
      number).

      Example:

        - The object URI of the 3rd HTTP CTE block of the segment S_2:
        tvChannel11/Q1/S_2.mp4#2 matches with the segment's request URL
        that terminates with  ".../tvChannel1/Q1/S_2.mp4"

      The block number of an object URI attached to a media data-part
      object MUST be incremented for each subsequent transmission. 

      When all the MSYNC data-part packets for all the media data-part
      objects (e.g. CTE blocks) composing a super object (e.g. a media
      segment) have been sent, the MSYNC sender MUST signal the end of
      the MSYNC super object transmission through sending an MSYNC
      object info packet with the object size set to zero (0) . In
      addition, the object URI MUST contain the URI reference of the
      next block (never transmitted). see section 3.2.
 

Bale et aL.             Expires August 15, 2023                [Page 17]
Internet-Draft                   MSYNC                 February 11, 2023

      Example:

        - The object URI of the object info packet associated with the
        1st HTTP CTE block of the segment S_2: tvChannel11/Q1/S_2.mp4#0

        - The object URI of the object info packet associated with the
        2nd HTTP CTE block of the segment S_2: tvChannel11/Q1/S_2.mp4#1

        - The object URI of the object info packet associated with the
        3rd HTTP CTE block of the segment S_2: tvChannel11/Q1/S_2.mp4#2 

        - The object URI of the object info packet associated with the
        4st HTTP CTE block of the segment S_2: tvChannel11/Q1/S_2.mp4#3

        - The object URI of the object info packet associated with the
        5st HTTP CTE block (of size null) signaling the end of the super
        object (i.e. segment) transmission: tvChannel11/Q1/S_2.m4s#4

3.8.2. Sending Rules

      Whenever a manifest has to be sent over MSYNC, the following
      applies.

        - The corresponding MSYNC object data  MUST be sent over all the
        transport multicast sessions related to the transmission of the
        media segments the manifest refers to.

        - It MUST reference addressable objects (segment or CMAF chunk)
        that have already been sent or for which the transmission has
        started.

3.9. RTP As The Transport Multicast Session Protocol

      RTP [RFC3550] MAY be used as part of the transport multicast
      session protocol according to the following.

        - The payload type (PT) MAY correspond to one of the values
        specified in [RFC3551]. Its value should be communicated to the
        MSYNC receiver through a separate unspecified offline mean.

        - Each RTP multicast session MUST operate a unique different
        SSRC number [RFC3550]. This allows packet retransmission (if
        used) on the RTP transport multicast session basis.

        - RTCP usage is not required.

      Packet retransmission (see Figure 8 below) MAY be used in
      association with the RTP multicast session for packet loss
 

Bale et aL.             Expires August 15, 2023                [Page 18]
Internet-Draft                   MSYNC                 February 11, 2023

      recovery. If this is the case then the RTP Repair client and RTP
      repair server MUST be compliant with [RFC4585], [RFC4588],
      [RFC5506] and [RFC5761] according to the followings:

        - The RTP Repair client (coupled to the MSYNC receiver) submits
        transport layer feedback (FB) messages in NACK mode (Generic
        NACK) to the RTP Repair Server according to [RFC5506] and
        [RFC4585].

        - The RTP Repair server receives, processes and responds to the
        feedback NACK messages (FB) according to [RFC4588]. The RTP
        Repair server MAY be located within the multicast server or it
        MAY be hosted by any intermediate entity acting as a multicast
        RTP receiver (i.e. capable of receiving the multicast RTP
        packets). In any case, the RTP Repair server and the RTP Repair
        client MUST operate a unicast interface.

        - The Session-multiplexing scheme [RFC4588] MUST be applied: the
        RTP retransmission (repair) stream MUST be sent on a different
        RTP session than the original (multicast) RTP stream.

        - The retransmission stream MUST support multiplexing the RTP
        and RTCP traffic on a single port according to [RFC5761].

                     Multicast server        
                   + ----------------- +  
                   |   HAS   |  MSYNC  |
                   |  Ingest |  Sender | 
                   + ----------------- + 
                                  |
                                  |         + ------ +
                               multicast    | RTP    |
                                  | ------->| Repair |
                                  |         | Server |
                                  |         + ------ +
                                  V                ^
                  + ------------------------- +    |
                  |   HAS   |  MSYNC  | RTP   | <--- 
                  |         |         |Repair | unicast
                  |  Server |Receiver |Client |
                  + ------------------------- +
                        Multicast gateway

                  Figure 8: RTP repair 

      Note that instead of relying on "RTP retransmission", the MSYNC
      receiver (i.e. the multicast gateway) could attempt to
 

Bale et aL.             Expires August 15, 2023                [Page 19]
Internet-Draft                   MSYNC                 February 11, 2023

      recover/repair damaged HAS elements (e.g. segments, manifest)
      through HTTP (aka "HTTP repair") and byte-range requests. However
      the latter method requires a CDN, relies on HTTP Byte-range
      request for which the support is not harmonized and is less
      reactive than operating RTCP ( UDP transactions over a dedicated
      path are typically much quicker than HTTP/TCP transactions over
      the unicast broadband data path).

 

Bale et aL.             Expires August 15, 2023                [Page 20]
Internet-Draft                   MSYNC                 February 11, 2023

4.  IANA Considerations

      This document has no actions for IANA.

5.  Security Considerations

      MSYNC  is exposed to the risks linked to the underlying transport
      protocols: UDP and RTP. An attacker can spoof the source and
      destination addresses, modify any MSYNC headers and, because MSYNC
      applies to IP multicast, the MSYNC sender has no control about the
      MSYNC receivers which may represent a non authorized party.   The
      multicast communication between the MSYNC sender (multicast
      server) and the MSYNC receiver (the multicast gateway) SHOULD be
      protected against confidentiality leaks, message tampering and
      replay attacks. The MSYNC protocol does not specify any security
      mechanism. MSYNC relies on possibly content protection (Digital
      Right Management) and on the underlying transport layer and
      security extensions for providing message integrity,
      authentication and encryption. Secure RTP (SRTP) [RFC3711] and
      IPSec applied to multicast [RFC5374] are potential candidates for
      providing such extensions.

6.  References

6.1.  Normative References

   [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate
              Requirement Levels",  RFC 2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3550] H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson, "RTP:
              A Transport Protocol for Real-Time Applications", RFC
              3550, July 2003, <https://www.rfc-
              editor.org/info/rfc3550>.

   [MPEGDASH] "Information technology - Dynamic adaptive streaming over
              HTTP (DASH) - Part1:Media presentation description and
              segment formats",ISO/IEC23009-1 

   [MPEGCMAF] "Information technology - Multimedia application format
              (MPEG-A) - Part 19:Common media application format (CMAF)
              for segmented media"ISO/IEC 23000-19

   [RFC5506] I. Johansson, M. Westerlund. "Support for Reduced-Size
              Real-Time Transport Control Protocol(RTCP): Opportunities
              and Consequences",  RFC 5506, April 2009,
              <https://www.rfc-editor.org/info/rfc5506>.
 

Bale et aL.             Expires August 15, 2023                [Page 21]
Internet-Draft                   MSYNC                 February 11, 2023

   [RFC4585] J. Ott, S. Wenger, N. Sato, C.   Burmeister, J. Rey.
              "Extended RTP Profile for Real-time Transport Control
              Protocol(RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July
              2006, <https://www.rfc-editor.org/info/rfc4585>.

   [RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
              Hakenberg, "RTP Retransmission Payload Format", RFC 4588,
              July 2006, <https://www.rfc-editor.org/info/rfc4588>.  

   [RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and
              Control Packets on a Single Port", RFC 5761, April 2010,
              <https://www.rfc-editor.org/info/rfc5761>.

6.2.  Informative References

   [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and
              Video Conferences with Minimal Control", RFC 3551, July
              2003, <https://www.rfc-editor.org/info/rfc3551>.

   [RFC3711] M. Baugher, D. McGrew, M. Naslund, E. Carrara, K. Norrman.
              "The Secure Real-time Transport Protocol (SRTP)", RFC
              3711, March 2004, <https://www.rfc-
              editor.org/info/rfc3711>.

   [RFC5374] B. Weis, G. Gross, D. Ignjatic. "Multicast Extensions to
              the Security Architecture for the Internet Protocol",  RFC
              5374, November 2008, <https://www.rfc-
              editor.org/info/rfc5374>.

   [RFC8216] R. Pantos, Ed., W. May, "HTTP Live Streaming", RFC 8216,
              August 2017, <https://www.rfc-editor.org/info/rfc8216>.

7. Acknowledgments

      The authors will be ever grateful to their late colleague Arnaud
      Leclerc who has been the initiator of that work. 

      The authors would like to thank the following people for their
      feedback: Yann Barateau (Eutelsat).

8. Change Log

      - 08: Another round of editorial changes

      - 07: Lots of editorial changes

      - 06: Example in section 3.8.1.2. update the example for using the
 

Bale et aL.             Expires August 15, 2023                [Page 22]
Internet-Draft                   MSYNC                 February 11, 2023

      "#" character as the bloc number prefix instead of the "_"
      character.

      - 05: Updated section 3.9 adding reference (RFC4588) and details
      for RTP retransmission. Updated/normalized references in section
      5.1 and 5.2.

      - 04: Added detection of super object transmission (Section 3.2
      and Section 3.8.1.2); several adjustments regarding RFC style;
      Section numbering correction.(Sections 3.9 and 3.10 are now
      section 3.8 and 3.9 respectively). 

Authors' Addresses

      Sophie Bale
      Broadpeak
      15 rue Claude Chappe
      Zone des Champs Blancs
      35510 Cesson-Sevigne
      France

      Email: sophie.bale@broadpeak.tv

      Remy Brebion
      Broadpeak
      15 rue Claude Chappe
      Zone des Champs Blancs
      35510 Cesson-Sevigne
      France

      Email: remy.brebion@broadpeak.tv

      Guillaume Bichot (Editor)
      Broadpeak
      15 rue Claude Chappe
      Zone des Champs Blancs
      35510 Cesson-Sevigne
      France

      Email: guillaume.bichot@broadpeak.tv

Bale et aL.             Expires August 15, 2023                [Page 23]