Internet DRAFT - draft-jennings-moq-proto

draft-jennings-moq-proto







Network Working Group                                        C. Jennings
Internet-Draft                                                     cisco
Intended status: Informational                             S. Nandakumar
Expires: 14 September 2023                                         Cisco
                                                           13 March 2023


               QuicR - Media Delivery Protocol over QUIC
                        draft-jennings-moq-proto-00

Abstract

   This specification QuicR, an unified media delivery protocol over
   QUIC.  It aims at supporting multiple application classes with
   varying latency requirements including ultra low latency applications
   such as interactive communication and gaming.  It is based on a
   publish/subscribe metaphor where entities publish and subscribe to
   data that is sent through, and received from, relays in the cloud.
   The information subscribed to is named such that this forms an
   overlay information centric network.  The relays allow for efficient
   large scale deployments.

Status of This Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on 14 September 2023.

Copyright 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
   Provisions Relating to IETF Documents (https://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



Jennings & Nandakumar   Expires 14 September 2023               [Page 1]

Internet-Draft                 QuicR Media                    March 2023


   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Example Publish Flow  . . . . . . . . . . . . . . . . . .   3
     1.2.  Example Subscribe Flow  . . . . . . . . . . . . . . . . .   4
   2.  Contributing  . . . . . . . . . . . . . . . . . . . . . . . .   5
   3.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   6
   4.  Names and Named Objects . . . . . . . . . . . . . . . . . . .   7
     4.1.  Named Objects . . . . . . . . . . . . . . . . . . . . . .   7
     4.2.  Namespaces  . . . . . . . . . . . . . . . . . . . . . . .   8
     4.3.  Object Groups . . . . . . . . . . . . . . . . . . . . . .   9
   5.  QuicR Protocol Design . . . . . . . . . . . . . . . . . . . .   9
     5.1.  Control Stream  . . . . . . . . . . . . . . . . . . . . .   9
     5.2.  QuicR Control Messages  . . . . . . . . . . . . . . . . .  10
       5.2.1.  Subscribe Message . . . . . . . . . . . . . . . . . .  10
       5.2.2.  SUBSCRIBE_REPLY Message . . . . . . . . . . . . . . .  11
       5.2.3.  PUBLISH_INTENT Message. . . . . . . . . . . . . . . .  12
       5.2.4.  PUBLISH_INTENT_REPLY Message. . . . . . . . . . . . .  12
       5.2.5.  Fragment Message  . . . . . . . . . . . . . . . . . .  13
       5.2.6.  RELAY_REDIRECT MESSAGE  . . . . . . . . . . . . . . .  14
     5.3.  Sending Media as Datagrams  . . . . . . . . . . . . . . .  14
       5.3.1.  Datagram Header . . . . . . . . . . . . . . . . . . .  14
   6.  Relay Function and Relays . . . . . . . . . . . . . . . . . .  15
     6.1.  Relay or Cache or Drop Decisions  . . . . . . . . . . . .  15
     6.2.  Cache cleanup . . . . . . . . . . . . . . . . . . . . . .  15
     6.3.  Relay fail over . . . . . . . . . . . . . . . . . . . . .  15
     6.4.  Relay Discovery . . . . . . . . . . . . . . . . . . . . .  16
   Appendix A.  Acknowledgments  . . . . . . . . . . . . . . . . . .  16
   Appendix B.  TODO Items . . . . . . . . . . . . . . . . . . . . .  16
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  16

1.  Introduction

   This specification defines QuicR, a publish and subscribe based media
   delivery protocol over QUIC, where the principal idea is entities
   publish unique named objects that are end-to-end encrypted and
   consume data by subscribing to the named objects.  The names
   (Section 4) used in the QuicR protocol are scoped and authorized to
   the domain operating the application server (referred to as Origin in
   this specification).  The authorization is scoped to a QuicR
   Namespace (Section 4.2) that identify a range of Names that share a
   common prefix with the Namespace.




Jennings & Nandakumar   Expires 14 September 2023               [Page 2]

Internet-Draft                 QuicR Media                    March 2023


   The published data carry metadata identifying relative priority,
   time-to-live and other useful metadata that's authenticated for
   components implementing Relay functions to make drop/forwarding
   decisions.  QuicR is designed to make it easy to implement relays so
   that fail over could happen between relays with minimal impact to the
   clients and relays can redirect a client to a different relay.

   QuicR provides services based on application requirements (with the
   support of underlying transport, where necessary) such as estimation
   of available bandwidth, fragmentation and reassembly, resiliency,
   congestion control and prioritization of data delivery based on data
   lifetime and importance of data.  It is designed to be NAT and
   firewall traversal friendly and can be fronted with load balancers.

1.1.  Example Publish Flow




































Jennings & Nandakumar   Expires 14 September 2023               [Page 3]

Internet-Draft                 QuicR Media                    March 2023


┌───────────┐               ┌───────────┐                   ┌─────────┐
│           │               │           │                   │         │
│ Publisher │               │  Relay    │                   │ Origin  │
│           │               │           │                   │         │
└───────────┘               └───────────┘                   └─────────┘
      │                           │                              │
      │                           │                              │
      │┌──────────────────────────┴─────────────────────────────┐│
      ││Session Login - exchange configuration - tokens, names..││
      │└──────────────────────────┬─────────────────────────────┘│
      │                           │                              │
      │                           │                              │
      │    publish_intent(..,     │                              │
      │          token)           │                              │
      │                           │                              │
      ├──────────────────────────▶│◉◉◉◉  Validate                │
      │                           │   ◉    token                 │
      │                           │◉◉◉◉                          │
      │                           │                              │
      │                           │                              │
      │                           │       publish_intent(..,     │
      │                           │             token)           │
      │                           │                              │
      │                           │─────────────────────────────▶│ ◉◉◉◉
      │                           │                              │    ◉   Validate Request
      │                           │                              │ ◉◉◉◉
      │                           │                              │
      │                           │   publish_intent_ok(..)      │
      │                           │                              │
      │                           ◀──────────────────────────────┤
      │                           │                              │
      │                           │                              │
      │                           │◉◉◉◉  Save namespace,         │
      │                           │   ◉     publisher            │
      │   publish_intent_ok(..)   │◉◉◉◉                          │
      │                           │                              │
      │◀──────────────────────────┤                              │
      │                           │                              │
      │                           │                              │
      │ ┌─────────────────────────┴───────────────────────────┐  │
      │ │ Publish media objects                               │  │
      │ └─────────────────────────┬───────────────────────────┘  │
      │                           │                              │

1.2.  Example Subscribe Flow






Jennings & Nandakumar   Expires 14 September 2023               [Page 4]

Internet-Draft                 QuicR Media                    March 2023


┌────────────┐              ┌───────────┐                   ┌─────────┐
│            │              │           │                   │         │
│ Subscriber │              │  Relay    │                   │ Origin  │
│            │              │           │                   │         │
└─────┬──────┘              └───────────┘                   └─────────┘
      │                           │                              │
      │                           │                              │
      │┌──────────────────────────┴─────────────────────────────┐│
      ││Session Login - exchange configuration - tokens, names..││
      │└──────────────────────────┬─────────────────────────────┘│
      │                           │                              │
      │                           │                              │
      │   subscribe(.., token)    │                              │
      │                           │                              │
      │                           │                              │
      ├──────────────────────────▶│◉◉◉◉  Validate                │
      │                           │   ◉    token                 │
      │                           │◉◉◉◉                          │
      │                           │                              │
      │                           │                              │
      │                           │      subscribe(.., token)    │
      │                           │                              │
      │                           │                              │
      │                           │─────────────────────────────▶│ ◉◉◉◉
      │                           │                              │    ◉   Validate Request
      │                           │                              │ ◉◉◉◉
      │                           │                              │
      │                           │      subscribe_ok(..)        │
      │                           │                              │
      │                           ◀──────────────────────────────┤
      │                           │                              │
      │                           │                              │
      │                           │◉◉◉◉  Save subscriber         │
      │                           │   ◉        info              │
      │      subscribe_ok(..)     │◉◉◉◉                          │
      │                           │                              │
      │◀──────────────────────────┤                              │
      │                           │                              │
      │                           │                              │
      │ ┌─────────────────────────┴───────────────────────────┐  │
      │ │ Media objects will be delivered matching the sub    │  │
      │ └─────────────────────────┬───────────────────────────┘  │
      │                           │                              │

2.  Contributing

   TODO




Jennings & Nandakumar   Expires 14 September 2023               [Page 5]

Internet-Draft                 QuicR Media                    March 2023


3.  Terminology

   *  QuicR Name/Name: Identifier associated with the published object
      within the QuicR Delivery Network.  QuicR Names are globally
      unique and are scoped to publishers.

   *  QuicR Namespace/Namespace: A QuicR Namespace is a partial
      representation for a given QuicR Name.  The namespace identifies a
      range of names the share the common prefix and provides context
      for authorization for publishing and subscribing to the names
      under a given Namespace.

   *  Named (Media/Data) Object: A named object is an application level
      chunk of Data that is identified by its QuicR Name.  A media
      object thus has a unique Name, a lifetime, priority and carries
      end-to-end encrypted application data, along with other things and
      is transported via the QuicR protocol.

   *  Relay Function: Functionality of the QuicR architecture, that
      implements store and forward behavior at the minimum.  Such a
      function typically receives subscriptions and publishes data to
      the other endpoints that have subscribed to the named data.  Such
      functions may cache the data as well for optimizing the delivery
      experience.

   *  Relay: Server component (physical/logical) in the cloud that
      implements the Relay Function.

   *  Publisher: An endpoint that sends named objects to a Relay. [ also
      referred to as producer of the named object]

   *  Subscriber: An endpoint that subscribes and receives the named
      objects.  Relays can act as subscribers to other relays.
      Subscribers can also be referred to as consumers.

   *  Client/QuicR Client: An endpoint that acts as a Publisher,
      Subscriber, or both.  May also implement a Relay Function in
      certain contexts.

   *  Named Object: Application level chunk of Data that has a unique
      Name, a limited lifetime, priority and is transported via the
      protocol defined in this specification.

   *  Origin server: Component managing/authoring the names scoped under
      a domain for a specific application and is responsible for
      establishing trust between clients and relays for delivering
      media.  Origin servers MAY implement other QuicR functions, such
      as Relay function, as necessary.



Jennings & Nandakumar   Expires 14 September 2023               [Page 6]

Internet-Draft                 QuicR Media                    March 2023


   *  Control Stream: QUIC Stream to exchange control message to setup
      appropriate context for media delivery and is scoped to a given
      QUIC Connection.  Control channels are scoped to a given QUIC
      connection.  Functionally, Control Messages enable authorization
      of names, setting up media properties and starting/terminating
      media sessions.

   *  Media Stream/Data Stream: QUIC Stream or QUIC Datagram based
      transport for delivering end to end encrypted application media
      objects.  Such objects shall carry metadata (unencrypted) for
      Relays to make store/forwarding decisions along with the
      application payload.

4.  Names and Named Objects

   Names are basic elements with in the QuicR architecture and they
   uniquely identify objects.  For publishers of the media, the names
   identify application defined data objects being contributed and for
   the subscribers/receivers, the names correspond to application data
   objects to be consumed.

   The scope and granularity of the names and the data objects they
   represent are application defined and controlled.

   However, a given QuicR name must maintain certain properties as given
   below

   *  Each published name must be unique and is scoped to a given domain
      and an application under that domain.

   *  Names support a way for the subscribers to request for the
      associated data either by specifying the full or partial names.
      The latter is supported via wildcarding.

   *  Named objects should enable caching in relays in a way CDNs cache
      resources and thus can obtain similar benefits such caching
      mechanisms would offer.

4.1.  Named Objects

   The names of each object in QuicR is composed of the following
   components:

   1.  Template Idenitifier
   2.  Data Identifier






Jennings & Nandakumar   Expires 14 September 2023               [Page 7]

Internet-Draft                 QuicR Media                    March 2023


   The template identifier forms the first part of a given QuicR Name.
   It identifies the domain hosting a given application and the context
   information identifying the application under that domain.  The
   Domain component is like a HTTP Origin or an standardized identifier
   (similar to IANA PEN) and the application context provides necessary
   information to uniquely identify the application under the domain.

   Data identifier further aspects of application that uniquely defines
   the data being published, for example video stream from a conference
   user or a message in a chat room for a messaging application.  The
   breakdown of a given data identifier is application specifc and
   controlled.

   Example: In the example below the template identifier indicates the
   the domain as acme.meeting.com with the application context
   identifying instance of a meeting under this domain, say
   "meeting123".  The data component captures a QuicR named object
   corresponding to a high resolution camera stream from the user
   "alice" being published as object 17 under group 17.

   Example 1
   quicr://acme.meeting.com/v1/meeting123/alice/cam5/HiRes/15/17

   Example 2
   quicr://messages.com/v1/orgAbc/spaces/

   Once a named object is created, the content inside the named object
   can never be changed.  Objects have an expiry time after which they
   should be discarded by caches.  Objects have an priority that the
   relays and clients can use to make drop decisions or sequencing the
   sending order.  The data inside an object is end-to-end encrypted
   whose keys are not available to Relay(s).

4.2.  Namespaces

   QuicR supports the idea of QuicR Namespaces, that enables aggregation
   of objects with a common prefix.  Wildcard names are formed by
   skipping the right most segments of the name and is represented in
   the form of x/y,where x is the name where only first y bits are used
   and rest are wildcard and matches any name where the first y bits
   match.  When converting to a URI, the URI for such names end with a
   *.

   Thus a QuicR Namespace covers a range of names matching a common
   prefix and is used:






Jennings & Nandakumar   Expires 14 September 2023               [Page 8]

Internet-Draft                 QuicR Media                    March 2023


a) By Publishers to express their intent to publish a range of names
b) By Subscribers to request for named objects to be made as aggregates instead of
        requests made at the object level granularity,

   In both the cases above the QuicR Namespace provides the necessary
   authorization context.

   For example, in a web conferencing use case, the client may subscribe
   to just the meeting_id and one of the publishers so as to get all the
   media from that user in a particular.  The example matches all the
   named objects published by the user alice in the meeting123.

   quicr://acme.meeting.com/meeting123/alice/*

4.3.  Object Groups

   Objects within QuicR belong to a group.  A group (a.k.a group of
   objects) represent an independent composition of set of objects,
   where there exists dependency relationship between the objects within
   the group.  Groups, thus can be independently consumable by the
   subscriber applications.  Groups also represent sync/transition
   points enabling subscribers to consume at right point in time and for
   caches to apply appropriate caching and congestion strategies.

5.  QuicR Protocol Design

   QuicR supports delivering media over QUIC Streams as well as over
   QUIC Datagrams as chosen by the application.

   Media delivery in QuicR is started by the publisher/subscriber
   setting up a "Control Stream" for one or more QuicR Namespaces.  The
   control stream, which is based on QUIC stream, is used to configure
   and setup properties for the "Data Stream".  Named data is delivered
   over the Data Stream over QUIC streams or QUIC datagrams based on the
   application settings.  The Control Channel can also be used to
   configure in-session parameters.

5.1.  Control Stream

   When a client or relay begins a transaction with the relay/origin,
   the client starts by opening a new bilateral stream.  This stream
   will act as the "control stream" for the exchange of data, carrying a
   series of control messages in both directions.

   The control stream will remain open as long as the peers are still
   sending or receiving the media.  If either peer closes the control
   stream, the other peer will close its end of the stream and discard
   the state associated with the media transfer.



Jennings & Nandakumar   Expires 14 September 2023               [Page 9]

Internet-Draft                 QuicR Media                    March 2023


   Streams are "one way".  If a peer both sends and receive media, there
   will be different control streams for sending and receiving.

5.2.  QuicR Control Messages

   The control channel carry series of messages, encoded as a length
   followed by a message value:

   quicr_message {
       length(16),
       value(...)
   }

   The length is encoded as a 16 bit number in big endian network order.

5.2.1.  Subscribe Message

   Entities that intend to receive named objects will do so via
   subscriptions to the named objects.

   enum subscribe_intent
   {
     immediate(0),
     catch_up(1),
     wait_up(2),
   }

   quicr_subscribe_message {
    *     message_type(i),
    *     namespace_length(i),
    *     namespace(...),
    *     subscribe_intent intent,
    *     auth_info_length(i),
    *     auth_info(...)
    }

   The message type will be set to SUBSCRIBE. namespace identifies the
   QuicR Namespace and auth_info carries authorization information.

   The intent field specifies how the Relay Function should provided the
   named objects to the client.  Following options are defined for the
   intent

   *  immediate: Deliver any new objects it receives that match the
      namespace.






Jennings & Nandakumar   Expires 14 September 2023              [Page 10]

Internet-Draft                 QuicR Media                    March 2023


   *  catch_up: Deliver any new objects it receives and in addition send
      any previous objects it has received that matches the namespace,
      under the current group.

   *  wait_up: Wait until next sync point (group) before delivering the
      objects.

   Subscriptions are typically long-lived transactions and they stay
   active until one of the following happens

   *  a client local policy dictates expiration of a subscription.
   *  optionally, a server policy dictates subscription expiration.
   *  the underlying transport is disconnected.

   While the subscription is active for a given name, the Relay(s) must
   send named objects it receives to all the matching subscribers.  A
   QuicR client can renew its subscriptions at any point by sending a
   new quicr_subscribe_message.  Such subscriptions MUST refresh the
   existing subscriptions for that name.

   TODO: provide more details on authorization flows.

5.2.1.1.  Aggregating Subscriptions

   Subscriptions are aggregated at entities that perform Relay Function.
   Aggregating subscriptions helps reduce the number of subscriptions
   for a given named object in transit and also enables efficient
   distribution of published media with minimal copies between the
   client and the origin server/ or other relays, as well as reduce the
   latencies when there are multiple subscribers for a given namespace
   object behind a given cloud server.

5.2.2.  SUBSCRIBE_REPLY Message

   A quicr_subscribe_reply provides result of the subscription.
















Jennings & Nandakumar   Expires 14 September 2023              [Page 11]

Internet-Draft                 QuicR Media                    March 2023


   enum response
   {
     ok(0),
     expired(1)
     fail(2)
   }

   quicr_subscribe_reply
   {
       Response response,
       [Reason Phrase Length (i),
       [Reason Phrase (..)],
   }

   A response of ok indicates successful subscription, for failed or
   expired responses, "Reason Phrase" shall be populated with
   appropriate reason.

5.2.3.  PUBLISH_INTENT Message.

   The quicr_publish_intent sets up authorization for one or more QuicR
   Namespaces that the publisher intends to publish data with.  The
   authorization is carried out based on authorization token obtained
   via out of band mechanisms.  Either the Relay at the edge or the
   Origin Server may validate the token depending on the configuration.

   quicr_publish_intent {
    *     message_type(i),
    *     namespace_length(i),
    *     namespace(...)...,
    *     auth_info_length(i),
    *     auth_info(...)
    * }

   The message type will be set to PUBLISH_INTENT (6). namespace
   identifies the QuicR Namespace and auth_info carries authorization
   token.

   TODO: provide more details on authorization flows.

5.2.4.  PUBLISH_INTENT_REPLY Message.

   quicr_publish_intent_reply provides the result of intent to publish
   on a namespace.







Jennings & Nandakumar   Expires 14 September 2023              [Page 12]

Internet-Draft                 QuicR Media                    March 2023


   quicr_publish_intent_reply {
     *     message_type(i),
     *     Response response,
     *     [Reason Phrase Length (i),
     *     [Reason Phrase (..)]
   }

   The message id is set to PUBLISH_INTENT_OK (7).

   This message enables cloud relays to know the authorized names from a
   given Publisher.  This helps to make caching decisions, deal with
   collisions and so on.

   A>A cloud relay could start caching the data associated with the
   names that has not been validated yet by the origin server and decide
   to flush its cache if no response to the publish_intent is received
   within a given implementation defined timeout.  This is an
   optimization that would allow publishers to start transmitting the
   data without needing to wait a RTT.

5.2.5.  Fragment Message

   The quicr_fragment_message message is used to convey the content of a
   media stream as a series of fragments.  This message is sent when
   sending over QUIC Streams.

   quicr_fragment_message {
    *     message_type(i),
    *     name_length(i),
    *     name(...)...,
    *     best_before(i),
    *     flags(i),
    *     offset_and_fin(i),
    *     length(i),
    *     data(...)
    }

    flags := Reserved (3) | IsDiscardable (1) | Priority (3)

   The message type will be set to FRAGMENT (5).  The offset_and_fin
   field encodes two values, as in:

   offset_and_fin = 2 * offset + is_last_fragment

   The flag is_last_fragment is set to 1 if this fragment is the last
   one of an object.





Jennings & Nandakumar   Expires 14 September 2023              [Page 13]

Internet-Draft                 QuicR Media                    March 2023


5.2.6.  RELAY_REDIRECT MESSAGE

   quicr_relay_redirect_message enables relay failover scenarios that is
   sent in response to PUBLISH, PUBLISH_INTENT and SUBSCRIBE messages
   indicating the new relay to the clients.

   quicr_relay_redirect_message
   {
    *     message_type(i),
    *     relay_address_length(i),
    *      relay_address(...)
   }

5.3.  Sending Media as Datagrams

   If transmission as datagram is preferred, the media fragments are
   sent as QUIC Datagram frames.

5.3.1.  Datagram Header

   The datagram frames are encoded as a datagram header, followed by the
   bytes in the fragment:

   datagram_frame_content {
       datagram_header,
       datagram_content
   }

   The datagram header is defined as:

    * quicr_datagram_header {
    *     name_length (i),
    *     name(...)...,
    *     offset_and_fin (i),
    *     best_before(i),
    *     flags (8),
    * }

    flags := Reserved (3) | IsDiscardable (1) | Priority (3)

   The offset_and_fin field encodes two values, as in:

   offset_and_fin = 2*offset + is_last_fragment








Jennings & Nandakumar   Expires 14 September 2023              [Page 14]

Internet-Draft                 QuicR Media                    March 2023


6.  Relay Function and Relays

   The Relays receive subscriptions and intent to publish request and
   optionaly forward them towards the origin for authorization.
   Subscriptions received are aggregated.  When a relay receives a
   publish request with data, it will forward it both towards the Origin
   and to any clients or relays that have a matching subscription.  This
   "short circuit" of distribution by a relay before the data has even
   reached the Origin servers provides significant latency reduction for
   nearby client.  Relays MAY cache some of the information for short
   period of time and the time cached may depend on the Origin.  The
   Relay keeps an outgoing queue of objects to be sent to the each
   subscriber and objects are sent in priority order.

   At a high level, Relay Function within QuicR architecture support
   store and forward behavior.  Relay function can be realized in any
   component of the QuicR architecture depending on the application.
   Typical use-cases might require the intermediate servers (caches) and
   the origin server to implement the relay function.  However the
   endpoint themselves can implement the Relay function in a Isomorphic
   deployment, if needed.

   The relays are capable of receiving data in stream mode or in
   datagram mode.  In both modes, relays will cache and deliver
   fragments as they arrive.

6.1.  Relay or Cache or Drop Decisions

   Relays makes use of priority, time-to-live, is_discardable metadata
   properties from the published data to make forward or drop decisions
   when reacting to congestion as indicated by the underlying QUIC
   stack.  The same can be used to make caching decisions.

6.2.  Cache cleanup

   Relays store objects no more than best_before time associated with
   the object.  Congestion/Rate control feedback can further influence
   what gets cached based on the relative priority and rate at which
   data can be delivered.  Local cache policies can also limit the
   amount and duration of data that can be cached.

6.3.  Relay fail over

   A relay that wants to shutdown shall use the redirect message to move
   traffic to a new relay.  If a relay has failed and restarted or been
   load balanced to a different relay, the client will need to
   resubscribe to the new relay after setting up the connection.




Jennings & Nandakumar   Expires 14 September 2023              [Page 15]

Internet-Draft                 QuicR Media                    March 2023


   TODO: Cluster so high reliable relays should share subscription info
   and publication to minimize of loss of data during a full over.

6.4.  Relay Discovery

   TODO

Appendix A.  Acknowledgments

   Thanks to TODO for contributions and suggestions to this
   specification.

Appendix B.  TODO Items

   *  Authorization and Authentication Considerations for control and
      media messages
   *  End to End Security of named objects
   *  Manifest Encoding

Authors' Addresses

   Cullen Jennings
   cisco
   Canada
   Email: fluffy@iii.ca


   Suhas Nandakumar
   Cisco
   Email: snandaku@cisco.com





















Jennings & Nandakumar   Expires 14 September 2023              [Page 16]