CLUE Working Group

Internet Engineering Task Force (IETF)                         R. Presta
Internet-Draft                                              S.
Request for Comments: 8847                                   S P. Romano
Intended status:
Category: Experimental                              University of Napoli
Expires: January 6,
ISSN: 2070-1721                                                June 2020                                    July 5, 2019

   Protocol for Controlling Multiple Streams for Telepresence (CLUE)
                      draft-ietf-clue-protocol-19

Abstract

   The CLUE Controlling Multiple Streams for Telepresence (CLUE) protocol is
   an application protocol conceived for the description and negotiation
   of a telepresence session.  The design of the CLUE protocol takes
   into account the requirements and the framework defined within the
   IETF CLUE working group. Working Group.  A companion
   document document, RFC 8848, delves into
   CLUE signaling details, details as well as on the SIP/
   SDP SIP / Session Description
   Protocol (SDP) session establishment phase.  CLUE messages flow over
   the CLUE data channel, based on reliable and ordered SCTP over DTLS SCTP-over-DTLS
   transport.  ("SCTP" stands for "Stream Control Transmission
   Protocol".)  Message details, together with the behavior of CLUE
   Participants acting as Media Providers and/or Media Consumers, are
   herein discussed.

Status of This Memo

   This Internet-Draft document is submitted in full conformance with the
   provisions of BCP 78 not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and BCP 79.

   Internet-Drafts are working documents
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  This document is a product of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list  It represents the consensus of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft the IETF
   community.  It has received public review and has been approved for
   publication by the Internet Engineering Steering Group (IESG).  Not
   all documents valid approved by the IESG are candidates for a maximum any level of
   Internet Standard; see Section 2 of RFC 7841.

   Information about the current status of six months this document, any errata,
   and how to provide feedback on it may be updated, replaced, or obsoleted by other documents obtained 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 January 6, 2020.
   https://www.rfc-editor.org/info/rfc8847.

Copyright Notice

   Copyright (c) 2019 2020 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 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
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Conventions . . . . . . . . . . . . . . . . . . . . . . . . .   4
   4.  Overview of the CLUE protocol . . . . . . . . . . . . . . . .   4 Protocol
   5.  Protocol messages . . . . . . . . . . . . . . . . . . . . . .   7 Messages
     5.1.  options . . . . . . . . . . . . . . . . . . . . . . . . .   9  'options'
     5.2.  optionsResponse . . . . . . . . . . . . . . . . . . . . .  11  'optionsResponse'
     5.3.  advertisement . . . . . . . . . . . . . . . . . . . . . .  12  'advertisement'
     5.4.  ack . . . . . . . . . . . . . . . . . . . . . . . . . . .  13  'ack'
     5.5.  configure . . . . . . . . . . . . . . . . . . . . . . . .  14  'configure'
     5.6.  configureResponse . . . . . . . . . . . . . . . . . . . .  15  'configureResponse'
     5.7.  Response codes Codes and reason strings . . . . . . . . . . . .  16 Reason Strings
   6.  Protocol state machines . . . . . . . . . . . . . . . . . . .  18 State Machines
     6.1.  Media Provider's state machine  . . . . . . . . . . . . .  21 State Machine
     6.2.  Media Consumer's state machine  . . . . . . . . . . . . .  22 State Machine
   7.  Versioning  . . . . . . . . . . . . . . . . . . . . . . . . .  25
   8.  Extensions  . . . . . . . . . . . . . . . . . . . . . . . . .  25
     8.1.  Extension example . . . . . . . . . . . . . . . . . . . .  27 Example
   9.  XML Schema  . . . . . . . . . . . . . . . . . . . . . . . . .  29
   10. Call flow example . . . . . . . . . . . . . . . . . . . . . .  34 Flow Example
     10.1.  CLUE message nr. Message No. 1: 'options'  . . . . . . . . . . . . .  37
     10.2.  CLUE message nr. 2: 'optionsResponse'  . . . . . . . . .  39 Message No. 2: 'optionsResponse'
     10.3.  CLUE message nr. Message No. 3: 'advertisement'  . . . . . . . . . .  39
     10.4.  CLUE message nr. Message No. 4: 'configure + ack'  . . . . . . . . .  47
     10.5.  CLUE message nr. Message No. 5: 'confResponse' . . . . . . . . . . .  47
     10.6.  CLUE message nr. Message No. 6: 'advertisement'  . . . . . . . . . .  48
     10.7.  CLUE message nr. Message No. 7: 'ack'  . . . . . . . . . . . . . . .  58
     10.8.  CLUE message nr. Message No. 8: 'configure'  . . . . . . . . . . . .  58
     10.9.  CLUE message nr. Message No. 9: 'confResponse' . . . . . . . . . . .  59
   11. Security Considerations . . . . . . . . . . . . . . . . . . .  60
   12. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  61
     12.1.  URN Sub-Namespace Registration . . . . . . . . . . . . .  61
     12.2.  XML Schema registration  . . . . . . . . . . . . . . . .  62
     12.3.  MIME Media Type Registration for 'application/clue+xml'   62
     12.4.  CLUE Protocol Registry . . . . . . . . . . . . . . . . .  63
       12.4.1.  CLUE Message Types . . . . . . . . . . . . . . . . .  63
       12.4.2.  CLUE Response Codes  . . . . . . . . . . . . . . . .  64
   13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .  66
   14.  XML Schema Registration
     12.3.  Media Type Registration for "application/clue+xml"
     12.4.  CLUE Protocol Registry
       12.4.1.  CLUE Message Types
       12.4.2.  CLUE Response Codes
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  66
     14.1.
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  66
     14.2.
     13.2.  Informative References . . . . . . . . . . . . . . . . .  67
   Acknowledgements
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  67

1.  Introduction

   The CLUE Controlling Multiple Streams for Telepresence (CLUE) protocol is
   an application protocol used by two CLUE Participants to enhance the
   experience of a multimedia telepresence session.  The main goals of
   the CLUE protocol are: are as follows:

   1.  enabling a Media Provider (MP) to properly announce its current
       telepresence capabilities to a Media Consumer (MC) in terms of
       available media captures, groups of encodings, simultaneity
       constraints
       constraints, and other information defined in
       [I-D.ietf-clue-framework]; [RFC8845].

   2.  enabling an MC to request the desired multimedia streams from the
       offering MP.

   CLUE-capable endpoints are connected by means of the CLUE data
   channel,
   channel -- an SCTP over DTLS SCTP-over-DTLS channel that is opened and established
   as described in [I-D.ietf-clue-signaling] [RFC8848] and
   [I-D.ietf-clue-datachannel]. [RFC8850].  ("SCTP" stands for "Stream
   Control Transmission Protocol".)  CLUE protocol messages flowing over
   such a channel are detailed in this document, both syntactically and
   semantically.

   In Section 4 4, we provide a general overview of the CLUE protocol.
   CLUE protocol messages are detailed in Section 5.  The CLUE Protocol protocol
   state machines are introduced in Section 6.  Versioning and
   extensions are discussed in Section Sections 7 and Section 8, respectively.  The XML
   schema [W3C.REC-xml-20081126] defining the CLUE messages is reported provided
   in Section 9.

2.  Terminology

   This document refers to the same terminology used in
   [I-D.ietf-clue-framework] [RFC8845] and in
   [RFC7262].  We briefly recall list herein some of the main terms used in the
   document.  The definition of "CLUE Participant" herein proposed is
   not imported taken from any of the above documents.

   Capture Encoding:  A specific encoding of a Media Capture, to be sent
      via RTP [RFC3550].

   CLUE Participant (CP):  An entity able to use the CLUE protocol
      within a telepresence session.  It can be an endpoint or an MCU
      (Multipoint Control Unit) able to use the CLUE protocol.

   CLUE-capable device:  A device that (1) supports the CLUE data
      channel
      [I-D.ietf-clue-datachannel], [RFC8850], the CLUE protocol protocol, and the principles of CLUE negotiation,
      negotiation and (2) seeks CLUE-enabled calls.

   Endpoint:  A CLUE-capable device that is the logical point of final
      termination through receiving, decoding decoding, and rendering, and/or
      initiation through the capturing, encoding, and sending of media
      streams.  An endpoint consists of one or more physical devices
      that source and sink media streams, and exactly one [RFC4353]
      Participant (which, participant
      (as described in [RFC4353]) that, in turn, includes exactly one [RFC3261] User
      Agent).
      user agent [RFC3261].  Endpoints can be anything from multiscreen/multicamera multiscreen/
      multicamera rooms to handheld devices.

   Multipoint Control Unit (MCU):  a  A CLUE-capable device that connects
      two or more endpoints together into one single multimedia
      conference [RFC7667].  An MCU includes an [RFC4353]-like Mixer, a mixer (as defined in
      [RFC4353]), without the [RFC4353] requirement per [RFC4353] to send media to
      each participant.

   Media:  Any data that, after suitable encoding, can be conveyed over
      RTP, including audio, video video, or timed text.

   Media Capture:  a  A source of Media, such as media -- for example, from one or more
      Capture Devices or constructed from other Media streams.

   Media Consumer (MC):  A CLUE Participant (i.e., an Endpoint or an
      MCU) able to receive Capture Encodings.

   Media Provider (MP):  A CLUE Participant (i.e., an Endpoint or an
      MCU) able to send Capture Encodings.

   Stream:  a  A Capture Encoding sent from a Media Provider to a Media
      Consumer via RTP [RFC3550].

3.  Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

4.  Overview of the CLUE protocol Protocol

   The CLUE protocol is conceived to enable CLUE telepresence sessions.
   It is designed in order to address SDP Session Description Protocol (SDP)
   limitations in terms of the description of some information about the
   multimedia streams that are involved in a real-time multimedia
   conference.  Indeed, by simply using SDP SDP, it is not possible to
   convey information about the features of the flowing multimedia
   streams that are needed to enable a "being there" rendering
   experience.  Such information is contained in the CLUE framework
   document [I-D.ietf-clue-framework] [RFC8845] and formally defined and described in the CLUE
   data model document
   [I-D.ietf-clue-data-model-schema]. [RFC8846].  The CLUE protocol represents the
   mechanism for the exchange of telepresence information between CLUE
   Participants.  It mainly provides the messages to enable a Media
   Provider to advertise its telepresence capabilities and to enable a
   Media Consumer to select the desired telepresence options.

   The CLUE protocol, as defined in the following, this document and further described
   below, is a stateful,
   client-server, stateful client-server XML-based application protocol.
   CLUE protocol messages flow on a reliable and ordered SCTP over DTLS SCTP-over-DTLS
   transport channel connecting two CLUE Participants.  Messages carry
   information taken from the XML-based CLUE data model
   ([I-D.ietf-clue-data-model-schema]). [RFC8846].
   Three main communication phases can be identified:

   1.

   Establishment of the CLUE data channel: in
      In this phase, the CLUE data channel setup takes place.  If it
      completes successfully, the CPs are able to communicate and start
      the initiation phase.

   2.

   Negotiation of the CLUE protocol version and extensions
   (initiation phase): the
      The CPs connected via the CLUE data channel agree on the protocol
      version and on the extensions to be used during the telepresence session.
      Special CLUE messages are used for such a task ('options' and
      'optionsResponse').  The negotiation of the version and extensions negotiation
      can be performed once during the CLUE session and only at this
      stage.  At the end of that basic negotiation, each CP starts its
      activity as a CLUE MP and/or CLUE MC.

   3.

   Description and negotiation of CLUE telepresence capabilities description and negotiation: in capabilities:
      In this phase, the MP-MC dialogues take place on the data channel
      by means of the CLUE protocol messages.

   As soon as the channel is ready, the CLUE Participants must agree on
   the protocol version and extensions to be used within the
   telepresence session.  CLUE protocol version numbers are
   characterized by a major version number (single digit) and a minor
   version number (single digit), both unsigned integers, separated by a
   dot.  While minor version numbers denote backward compatible backward-compatible changes
   in the context of a given major version, different major version
   numbers generally indicate a lack of interoperability between the
   protocol implementations.  In order to correctly establish a CLUE
   dialogue, the involved CPs must have in common a major version number
   (see Section 7 for further details).  The subset of the extensions
   that are allowed within the CLUE session is also determined in the
   initiation phase.  It includes only the extensions that are supported
   by both parties.  A mechanism for the negotiation of the CLUE
   protocol version and extensions is part of the initiation phase.
   According to such a solution, the CP that is the CLUE Channel
   Initiator (CI) issues a proper CLUE message ('options') to the CP
   that is the Channel Receiver (CR) (CR), specifying the supported version
   and extensions.  The CR then answers by selecting the subset of the
   CI extensions that it is able to support and determines the protocol
   version to be used.

   After the negotiation phase is completed, CLUE Participants describe
   and agree on the media flows to be exchanged.  In many cases cases, CPs
   will seek to both transmit and receive media.  Hence  Hence, in a call
   between two
   CPs, CPs (e.g., CPs A and B, B), there would be two separate
   message exchange sequences, as follows:

   1.  the one needed to describe and set up the media streams sent from
       A to B, i.e., the dialogue between A's Media Provider side and
       B's Media Consumer side side.

   2.  the one needed to describe and set up the media streams sent from
       B to A, i.e., the dialogue between B's Media Provider side and
       A's Media Consumer side side.

   CLUE messages for the media session description and negotiation are
   designed by considering the MP side as to be the server side of the
   protocol, since it produces and provides media streams, and the MC
   side as the client side of the protocol, since it requests and
   receives media streams.  The messages that are exchanged to set up
   the telepresence media session are described by focusing on a single
   MP-MC dialogue.

   The MP first advertises its available media captures and encoding
   capabilities to the MC, as well as its simultaneity constraints,
   according to the information model defined in
   [I-D.ietf-clue-framework]. [RFC8845].  The CLUE
   message conveying the MP's multimedia offer is the 'advertisement'
   message.  Such a message leverages the XML data model definitions
   provided in
   [I-D.ietf-clue-data-model-schema]. [RFC8846].

   The MC selects the desired streams of the MP by using the 'configure'
   message, which makes reference to the information carried in the
   previously received 'advertisement'.

   Besides 'advertisement' and 'configure', other messages have been
   conceived in order to provide all the needed mechanisms and operations.
   Such messages are detailed in the following sections.

5.  Protocol messages Messages

   CLUE protocol messages are textual, textual XML-based messages that enable the
   configuration of the telepresence session.  The formal definition of
   such messages is provided in the XML Schema provided at the end of
   this document (Section 9). schema in Section 9.  This
   section includes non-normative excerpts of the schema to aid in
   describing it.

   The XML definitions of the CLUE information provided in
   [I-D.ietf-clue-data-model-schema] [RFC8846] are
   included within some CLUE protocol messages (namely the
   'advertisement' and the 'configure' messages), in order to use the
   concepts defined in
   [I-D.ietf-clue-framework]. [RFC8845].

   The CLUE protocol messages are the following:

   o as follows:

   *  options

   o

   *  optionsResponse

   o

   *  advertisement

   o

   *  ack

   o

   *  configure

   o

   *  configureResponse

   While the 'options' and 'optionsResponse' messages are exchanged in
   the initiation phase between the CPs, the other messages are involved
   in MP-MC dialogues.  Please note that the word "dialog" "dialogue" as used in
   this document is not related to SIP's usage of the same term.  It
   refers to message exchange sequences between a CLUE Media Provider
   and a Clue Media Consumer.

   Each CLUE message inherits a basic structure structure, as depicted in the
   following excerpt (Figure 1):

   <xs:complexType name="clueMessageType" abstract="true">
     <xs:sequence>
       <xs:element name="clueId" type="xs:string" minOccurs="0"/>
       <xs:element name="sequenceNr" type="xs:positiveInteger"/>
     </xs:sequence>
     <xs:attribute name="protocol" type="xs:string" fixed="CLUE"
           use="required"/>
     <xs:attribute name="v" type="versionType" use="required"/>
   </xs:complexType>

   <!-- VERSION TYPE -->
   <xs:simpleType name="versionType">
     <xs:restriction base="xs:string">
       <xs:pattern value="[1-9][0-9]*\.[0-9]+" />
     </xs:restriction>
   </xs:simpleType>

                   Figure 1: Structure of a CLUE message Message

   The information contained in each CLUE message is:

   o is as follows:

   clueId: an  An optional XML element containing the identifier (in the
      form of a generic string) of the CP within the telepresence
      system;

   o
      system.

   sequenceNr: an  An XML element containing the local message sequence
      number.  The sender MUST increment the sequence numbers number by one for
      each new message sent, and the receiver MUST remember the most
      recent sequence number received and send back a 402 error if it
      receives a message with an unexpected sequence number (e.g.,
      sequence number gap, repeated sequence number, sequence number too
      small).  The initial sequence number can be chosen randomly by
      each party;

   o party.

   protocol: a  A mandatory attribute set to "CLUE", identifying the
      procotol
      protocol the messages refer to;

   o to.

   v: a  A mandatory attribute carrying the version of the protocol.  The
      content of the "v" attribute is composed by of the major version
      number followed by a dot and then by the minor version number of
      the CLUE protocol in use.  The major number cannot be "0" and, "0", and if
      it is more than one digit, it cannot start with a "0".  Allowed
      values are of this kind are, e.g., are "1.3", "2.0", "20.44" "20.44", etc.  This document
      describes version 1.0.

   Each CP is responsible for creating and updating up to three
   independent streams of sequence numbers in messages it sends: (i) one
   for the messages sent in the initiation phase, (ii) one for the
   messages sent as a MP (if it is acting as a MP), and (iii) one for
   the messages sent as a MC (if it is acting as a MC).

   In particular, CLUE response messages ('optionsResponse', 'ack',
   'configureResponse') derive from a base type, inheriting from the
   clueMessageType, which is defined as follows (Figure 2):

   <xs:complexType name="clueResponseType">
    <xs:complexContent>
     <xs:extension base="clueMessageType">
      <xs:sequence>
       <xs:element name="responseCode" type="responseCodeType"/>
       <xs:element name="reasonString" type="xs:string" minOccurs="0"/>
      </xs:sequence>
     </xs:extension>
    </xs:complexContent>
   </xs:complexType>

               Figure 2: Structure of CLUE response messages Response Messages

   The elements <responseCode> and <reasonString> get are populated as
   detailed in Section 5.7 5.7.

5.1.  options  'options'

   The 'options' message is sent by the CLUE Participant that is the
   Channel Initiator to the CLUE Participant that is the Channel
   Receiver as soon as the CLUE data channel is ready.  Besides the
   information envisioned in the basic structure, it specifies:

   o

   <mediaProvider>: a  A mandatory boolean field set to "true" if the CP
      is able to act as a MP

   o MP.

   <mediaConsumer>: a  A mandatory boolean field set to "true" if the CP
      is able to act as a MC

   o MC.

   <supportedVersions>: the  The list of the supported versions

   o versions.

   <supportedExtensions>: the  The list of the supported extensions extensions.

   The XML Schema schema of such a message is reported shown below (Figure 3):

   <!-- CLUE OPTIONS -->
   <xs:complexType name="optionsMessageType">
     <xs:complexContent>
       <xs:extension base="clueMessageType">
         <xs:sequence>
           <xs:element name="mediaProvider" type="xs:boolean" />
           <xs:element name="mediaConsumer" type="xs:boolean" />
           <xs:element name="supportedVersions" type="versionsListType"
                   minOccurs="0"/>
           <xs:element name="supportedExtensions"
                 type="extensionsListType"
                   minOccurs="0"/>
           <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>

   <!-- VERSIONS LIST TYPE -->
   <xs:complexType name="versionsListType">
     <xs:sequence>
       <xs:element name="version" type="versionType" minOccurs="1"
           maxOccurs="unbounded"/>
       <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
     </xs:sequence>
     <xs:anyAttribute namespace="##other" processContents="lax"/>
   </xs:complexType>

   <!-- EXTENSIONS LIST TYPE -->
   <xs:complexType name="extensionsListType">
     <xs:sequence>
       <xs:element name="extension" type="extensionType" minOccurs="1"
           maxOccurs="unbounded"/>
       <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
     </xs:sequence>
     <xs:anyAttribute namespace="##other" processContents="lax"/>
   </xs:complexType>

   <!-- EXTENSION TYPE -->
   <xs:complexType name="extensionType">
     <xs:sequence>
       <xs:element name="name" type="xs:string" />
       <xs:element name="schemaRef" type="xs:anyURI" />
       <xs:element name="version" type="versionType" />
       <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
     </xs:sequence>
     <xs:anyAttribute namespace="##other" processContents="lax"/>
   </xs:complexType>

              Figure 3: Structure of a CLUE 'options' message Message

   <supportedVersions> contains the list of the versions that are supported
   by the CI, each one represented in a child <version> element.  The
   content of each <version> element is a string made by of the major
   version number followed by a dot and then by the minor version number
   (e.g., 1.3 or 2.4).  Exactly one <version> element MUST be provided
   for each major version supported, containing the maximum minor
   version number of such a version, since all minor versions are
   backward compatible.  If no <supportedVersions> is carried within the
   'options' message, the CI supports only the version declared in the
   "v" attribute and all the versions having the same major version
   number and lower minor version number.  For example, if the "v"
   attribute has a value of "3.4" and there is no <supportedVersions>
   tag in the 'options' message, it means the CI supports only major
   version 3 with all the minor versions comprised
   between from 3.0 and 3.4, with version 3.4 included. through 3.4.  If a
   <supportedVersion> is provided, at least one <version> tag MUST be
   included.  In this case, the "v" attribute SHOULD be set to the
   largest minor version of the smallest major version advertised in the
   <supportedVersions> list.  Indeed, the intention behind the "v"
   attribute is that some implementation that receives a version number
   in the "v" field with a major number higher than it understands is
   supposed to close the connection, since it runs a risk of
   misinterpreting the contents of messages.  The minor version is less
   useful in this context, since minor versions are defined to be both
   backwards
   backward and forwards compatible, but it forward compatible and the value can in any case be
   parsed out of the <version> list.  It is more useful to know the
   highest minor version supported than some random minor version, as it
   indicates the full feature set that is supported.

   The reason why it
   is less useful is that the value can in any case be parsed out of the
   <version> list.

   The <supportedExtensions> element specifies the list of extensions
   supported by the CI.  If there is no <supportedExtensions> in the
   'options' message, the CI does not support anything other than what
   is envisioned in the versions it supports.  For each extension, an
   <extension> element is provided.  An extension is characterized by a
   name, an XML schema of reference where the extension is defined, and
   the version of the protocol which that the extension refers to.

5.2.  optionsResponse  'optionsResponse'

   The 'optionsResponse' (Figure 4) is sent by a CR to a CI as a reply
   to the 'options' message.  The 'optionsResponse' contains a mandatory
   response code and a reason string indicating the processing result of
   the 'options' message.  If the responseCode is between 200 and 299
   inclusive, the response MUST also include <mediaProvider>,
   <mediaConsumer>, <version> <version>, and <commonExtensions> elements; it MAY
   include them for any other response code.  <mediaProvider> and
   <mediaConsumer> elements (which are of a boolean nature) are
   associated with the supported roles (in terms of, respectively of the MP and
   MC), the MC,
   respectively), similarly to what the CI does in the 'options'
   message.  The <version> field indicates the highest commonly
   supported version number.  The content of the <version> element MUST
   be a string made of the major version number followed by a dot and
   then by the minor version number (e.g., 1.3 or 2.4).  Finally, the
   commonly supported extensions are copied in the <commonExtensions>
   field.

   <!-- CLUE 'optionsResponse' -->
   <xs:complexType name="optionsResponseMessageType">
     <xs:complexContent>
       <xs:extension base="clueResponseType">
         <xs:sequence>
           <xs:element name="mediaProvider" type="xs:boolean"
                   minOccurs="0"/>
           <xs:element name="mediaConsumer" type="xs:boolean"
                   minOccurs="0"/>
           <xs:element name="version" type="versionType" minOccurs="0"/>
           <xs:element name="commonExtensions" type="extensionsListType"
                   minOccurs="0"/>
           <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>

          Figure 4: Structure of a CLUE 'optionsResponse' message Message

   Upon reception of the 'optionsResponse' 'optionsResponse', the version to be used is
   the one provided in the <version> tag of the message.  The following
   CLUE messages MUST use such a version number in the "v" attribute.
   The allowed extensions in the CLUE dialogue are those indicated in
   the <commonExtensions> element of the 'optionsResponse' message.

5.3.  advertisement  'advertisement'

   The 'advertisement' message is used by each MP to advertise the
   available media captures and related information to the corresponding
   MC.  The MP sends an 'advertisement' to the MC as soon as it is ready
   after the successful completion of the initiation phase, i.e., as
   soon as the CPs have agreed on the version and the extensions of the CLUE protocol are
   agreed between the CPs.
   protocol.  During a single CLUE session, an MP may send new
   'advertisement' messages to replace the previous advertisement, advertisement if,
   for instance, its CLUE telepresence media capabilities change
   mid-call.  A new 'advertisement' completely replaces the previous
   'advertisement'.

   The 'advertisement' structure is defined in the schema excerpt below
   (Figure 5).  The 'advertisement' contains elements compliant with the
   CLUE data model that characterize the MP's telepresence offer.
   Namely, such elements are: are the list of the

   *  media captures (<mediaCaptures>), of the

   *  encoding groups (<encodingGroups>), of the

   *  capture scenes (<captureScenes>), of the

   *  simultaneous sets (<simultaneousSets>), of the

   *  global views (<globalViews>), and of the

   *  represented participants (<people>).

   Each of them is fully described in the CLUE framework document
   [RFC8845] and formally defined in the CLUE data model document. document
   [RFC8846].

   <!-- CLUE ADVERTISEMENT MESSAGE TYPE -->
   <xs:complexType name="advertisementMessageType">
     <xs:complexContent>
       <xs:extension base="clueMessageType">
         <xs:sequence>
           <!-- mandatory -->
           <xs:element name="mediaCaptures"
                 type="dm:mediaCapturesType"/>
           <xs:element name="encodingGroups"
                 type="dm:encodingGroupsType"/>
           <xs:element name="captureScenes"
                 type="dm:captureScenesType"/>
           <!-- optional -->
           <xs:element name="simultaneousSets"
                 type="dm:simultaneousSetsType" minOccurs="0"/>
           <xs:element name="globalViews" type="dm:globalViewsType"
                 minOccurs="0"/>
           <xs:element name="people"
                 type="dm:peopleType" minOccurs="0"/>
           <xs:any namespace="##other" processContents="lax"
                 minOccurs="0"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>

           Figure 5: Structure of a CLUE 'advertisement' message Message

5.4.  ack  'ack'

   The 'ack' message is sent by a MC to a MP to acknowledge an
   'advertisement' message.  As it can be seen from the message schema
   provided in the following excerpt (Figure 6), the 'ack' contains a
   response code and may contain a reason string for describing the
   processing result of the 'advertisement'.  The <advSequenceNr>
   element carries the sequence number of the 'advertisement' message
   the 'ack' refers to.

   <!-- 'ack' MESSAGE TYPE -->
   <xs:complexType name="advAcknowledgementMessageType">
     <xs:complexContent>
       <xs:extension base="clueResponseType">
         <xs:sequence>
           <xs:element name="advSequenceNr" type="xs:positiveInteger"/>
           <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>

                Figure 6: Structure of a CLUE 'ack' message Message

5.5.  configure  'configure'

   The 'configure' message is sent from a MC to a MP to list the
   advertised captures the MC wants to receive.  The MC MUST send a
   'configure' after the reception of an 'advertisement', as well as
   each time it wants to request other captures that have been
   previously advertised by the MP.  The content of the 'configure'
   message is shown below (Figure 7).

   <!-- CLUE 'configure' MESSAGE TYPE -->
   <xs:complexType name="configureMessageType">
     <xs:complexContent>
       <xs:extension base="clueMessageType">
         <xs:sequence>
           <!-- mandatory fields -->
           <xs:element name="advSequenceNr" type="xs:positiveInteger"/>
           <xs:element name="ack" type="successResponseCodeType"
                   minOccurs="0"/>
           <xs:element name="captureEncodings"
                   type="dm:captureEncodingsType" minOccurs="0"/>
           <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>

             Figure 7: Structure of a CLUE 'configure' message Message

   The <advSequenceNr> element contains the sequence number of the
   'advertisement' message the 'configure' refers to.

   The optional <ack> element, when present, contains a success response
   code, as defined in Section 5.7.  It indicates that the 'configure'
   message also acknowledges with success the referred advertisement
   ('configure' + 'ack' message).  The <ack> element MUST NOT be present
   if an 'ack' message (associated with the advertisement carrying that
   specific sequence number) has been already been sent back to the MP.

   The most important content of the 'configure' message is the list of
   the
   capture encodings provided in the <captureEncodings> element (see
   [I-D.ietf-clue-data-model-schema]
   [RFC8846] for the definition of <captureEncodings>).  Such an element
   contains a sequence of capture encodings, representing the streams to
   be instantiated.

5.6.  configureResponse  'configureResponse'

   The 'configureResponse' message is sent from the MP to the MC to
   communicate the processing result of requests carried in the
   previously received 'configure' message.  It  As shown in Figure 8, it
   contains (Figure 8) a response code (and optionally (and, optionally, a reason string)
   indicating either the success or the failure (along with failure details)
   of a the 'configure' request processing.  Following, the  The <confSequenceNr> field
   that follows contains the sequence number of the 'configure' message
   the response refers to.  There is no partial execution of commands.
   As an example, if a MP is able to understand all the selected capture
   encodings except one, then the whole command fails and nothing is
   instantiated.

   <!-- 'configureResponse' MESSAGE TYPE -->
   <xs:complexType name="configureResponseMessageType">
     <xs:complexContent>
       <xs:extension base="clueResponseType">
         <xs:sequence>
           <xs:element name="confSequenceNr"
                 type="xs:positiveInteger" />
           <xs:any namespace="##other" processContents="lax"
                 minOccurs="0"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax" />
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>

         Figure 8: Structure of a CLUE 'configureResponse' message Message

5.7.  Response codes Codes and reason strings Reason Strings

   Response codes are defined as a sequence of three digits.  A well-
   defined meaning is associated with the first digit.  Response codes
   beginning with "2" are associated with successful responses.
   Response codes that do not begin with either "2" or "1" indicate an
   error response, i.e., that an error occurred while processing a CLUE
   request.  In particular, response codes beginning with "3" indicate
   problems with the XML content of the message ("Bad syntax", "Invalid
   value", etc.), while response codes beginning with "4" refer to
   problems related to CLUE protocol semantics ("Invalid sequencing",
   "Version not supported", etc.).  200, 300 300, and 400 codes are the most
   generic ones codes in their respective categories.  Further response codes
   can be either defined either in future versions of the protocol, protocol or defined by
   leveraging the extension mechanism.  In both cases, the new response
   codes MUST be registered with IANA.  Such new response codes MUST NOT
   override the ones here codes defined in this document, and they MUST respect
   the semantics of the first code digit.

   This document does not define response codes starting with "1", and
   such response codes are not allowed to appear in major version 1 of
   the CLUE protocol.  The range from 100 to 199 inclusive is reserved
   for future major versions of the protocol to define response codes
   for delayed or incomplete operations operations, if necessary.  Response codes
   starting with "5" through "9" are reserved for future major versions
   of the protocol to define new classes of response, responses and are not
   allowed in major version 1 of the CLUE protocol.  Response codes
   starting with "0" are not allowed.

   The response codes and reason strings defined for use with version 1
   of the CLUE protocol are listed in Figure 9. Table 1.  The "Description" text
   contained in the table can be sent in the <reasonString> element of a
   response message.  Implementations can (and are encouraged to)
   include more specific descriptions of the error condition, condition that are more specific,
   if possible.

   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |

   +==========+===============+========================================+
   | Response code | Reason string String |              Description               |
   | Code     |               |                                        |
   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   +==========+===============+========================================+
   | 200      | Success       | The request has been    |
   |                 |                      | successfully processed. |
   |                 |                      |      |
   +-----------------+----------------------+--------------------------+
   |          |               | processed.                             |
   +----------+---------------+----------------------------------------+
   | 300      | Low-level request     | A generic low-level     |
   |                 |  error.              | request error has      |
   |          | request error | has occurred.                          |
   |                 |                      |                          |
   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   +----------+---------------+----------------------------------------+
   | 301      | Bad syntax    | The XML syntax of the   |
   |                 |                      | message is not correct.       |
   +-----------------+----------------------+--------------------------+
   |          |               | not correct.                           |
   +----------+---------------+----------------------------------------+
   | 302      | Invalid value | The message             |
   |                 |                      | contains an invalid        |
   |          |               | parameter value.                       |
   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   +----------+---------------+----------------------------------------+
   | 303      | Conflicting values   | The message             |
   |                 |                      | contains values that       |
   |          | values        | cannot be used together.|
   +-----------------+----------------------+--------------------------+
   |                 |                      | together.               |
   +----------+---------------+----------------------------------------+
   | 400      | Semantic errors      | Semantic errors in the received        |
   |          | errors        |  received CLUE protocol  |
   |                 |                      | message.                 |
   |                 |                      |                          |
   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   +----------+---------------+----------------------------------------+
   | 401      | Version not supported|   | The protocol version    |
   |                 |                      | used in the message       |
   |          | supported     | message is not supported.              |
   |                 |                      |                          |
   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   +----------+---------------+----------------------------------------+
   | 402      | Invalid sequencing       | Sequence number gap; repeated          |
   |          | sequencing    | repeated sequence number;|
   |                 |                      | number; sequence number outdated.|
   +-----------------+----------------------+--------------------------+       |
   |          |               | outdated.                              |
   +----------+---------------+----------------------------------------+
   | 403      | Invalid identifier       | The clueId used in      |
   |                 |                      | the message is      |
   |          | identifier    |  not valid invalid or unknown.                    |
   +-----------------+----------------------+--------------------------+
   +----------+---------------+----------------------------------------+
   | 404      | Advertisement | The sequence number of the             |
   |   404          |   advertisement expired       |  the advertisement the 'configure'          |
   |          |       Expired               |  configure message refers to is  |
   |                 |                      | out of date.      |
   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   +----------+---------------+----------------------------------------+
   | 405      | Subset choice not | The subset choice is not allowed       |
   |          | not allowed   | allowed for the specified| specified Multiple             |
   |          |               | Multiple Content Capture Capture.                       |
   +-----------------+----------------------+--------------------------+

                       Figure 9:
   +----------+---------------+----------------------------------------+

                        Table 1: CLUE response codes Response Codes

6.  Protocol state machines State Machines

   The CLUE protocol is an application protocol used between two CPs in
   order to properly configure a multimedia telepresence session.  CLUE
   protocol messages flow over the CLUE Data Channel, data channel, a DTLS/SCTP
   channel established as depicted in [I-D.ietf-clue-datachannel]. [RFC8850].  We herein discuss the
   state machines associated, respectively, associated with the CLUE Participant (Figure 10), with 9), the MC
   MP role (Figure 11) 10 in Section 6.1), and with the MP MC role (Figure 12). 11 in
   Section 6.2), respectively.  Endpoints often wish to both send and
   receive media, i.e., act as both a MP and a MC.  As such, there will
   often be two sets of messages flowing in opposite directions; the
   state machines of these two flows do not interact with each other.
   Only the CLUE application logic is considered.  The interaction of
   CLUE protocol and SDP negotiations for the media streams exchanged is
   discussed in [RFC8848].

                               +----+
       +---------------------->|IDLE|<----------------------------+
       |                       +-+--+                             |
       |                         |                                |
       |                         |  start                         |
       |                         |  channel                       |
       |                         v                                |
       |  channel error /     +--------+                          |
       |  session ends        | CHANNEL|                          |
       +----------------------+ SETUP  |                          |
       |                      +--+-----+                          |
       |                         |                                |
       |                         |  channel                       |
       |                         |  established                   |
       |  channel error /        v                 OPTIONS phase  |
       |  session ends         +-------+           failure        |
       +-----------------------+OPTIONS+--------------------------+
       |                       +-+-----+
       |                         |
       |                         |  OPTIONS phase
       |                         |  success
       |                         v
       |   channel error /    +---------+
       |   session ends       | ACTIVE  |
       +----------------------+         |
                              | +----+  +------------------+
                              | | MP and MC.  As such there will often
   be two sets of messages flowing in opposite directions; the state
   machines of these two flows do not interact with each other.  Only
   the |  |    send/receive  |
                              | +----+  |    CLUE application logic is considered.  The interaction of messages |
                              |         |<-----------------+
                              | +----+  |
                              | | MC |  |
                              | +----+  |
                              |         |
                              +---------+

                  Figure 9: CLUE
   protocol and SDP negotiations for the media streams exchanged is
   treated in [I-D.ietf-clue-signaling]. Participant State Machine

   The main state machines focus on the behavior of the CLUE Participant
   (CP) acting as a CLUE Channel Initiator/Receiver Initiator / Channel Receiver (CI/CR).

   The initial state is the IDLE one. state.  When in the IDLE state, the
   CLUE data channel is not established and no CLUE-controlled media are
   exchanged between the two considered CLUE-capable devices in question (if there
   is an ongoing exchange of media streams, such media streams are not
   currently CLUE-controlled). CLUE controlled).

   When the CLUE data channel sets is set up ("start channel"), the CP moves
   from the IDLE state to the CHANNEL SETUP state.

   If the CLUE data channel is successfully set up ("channel
   established"), the CP moves from the CHANNEL SETUP state to the
   OPTIONS state.  Otherwise  Otherwise, if a "channel error", error" occurs, it moves back
   to the IDLE state.  The same transition happens if the CLUE-enabled
   telepresence session ends ("session ends"), i.e., when an SDP
   negotiation for removing the CLUE data channel is performed.

   When in the OPTIONS state, the CP addresses the initiation phase
   where both parts agree on the version and on the extensions to be used in
   the subsequent CLUE messages message exchange phase.  If the CP is the Channel Initiator (CI), CI, it
   sends an 'options' message and waits for the 'optionsResponse'
   message.  If the CP is the Channel Receiver
   (CR), CR, it waits for the 'options' message
   and, as soon as it arrives, replies with the 'optionsResponse'
   message.  If the negotiation is successfully completed ("OPTIONS
   phase success"), the CP moves from the OPTIONS state to the ACTIVE
   state.  If the initiation phase fails ("OPTIONS phase failure"), the
   CP moves from the OPTIONS state to the IDLE state.  The initiation
   phase might fail because of for one of the following reasons:

   1.  the  The CI receives an 'optionsResponse' with an error response code code.

   2.  the  The CI does not receive any 'optionsResponse' 'optionsResponse', and a timeout
       error is raised raised.

   3.  the  The CR does not receive any 'options' 'options', and a timeout error is
       raised
       raised.

   When in the ACTIVE state, the CP starts the envisioned sub-state
   machines (i.e., the MP state machine and the MC state machine)
   according to the roles it plays in the telepresence sessions.  Such
   roles have been previously declared in the 'options' and
   'optionsResponse' messages involved in the initiation phase (see
   OPTIONS sections Section
   Sections 5.1 and Section 5.2 for the details).  When in the ACTIVE state, the CP
   delegates the sending and the processing of the CLUE messages to the
   appropriate MP/MC sub-state machines.  If the CP receives a further
   'options'/'optionsResponse' message, it MUST ignore the message and
   stay in the ACTIVE state.

                                  +----+
          +---------------------->|IDLE|<----------------------------+
          |                       +-+--+                             |
          |                         |                                |

6.1.  Media Provider's State Machine

   As soon as the sub-state machine of the MP (Figure 10) is activated,
   it is in the ADV state.  In the ADV state, the MP prepares the
   'advertisement' message reflecting its actual telepresence
   capabilities.

                              +-----+
                +------------>| ADV |<-------------------+
                |             +-+---+                    |  start
                |  advertisement|       NACK received    |
                |  channel           sent|                        |
                |               v                        |
          |  channel error/
         changed|             +--------+                 |
          |  session ends        | CHANNEL|                          |
          +----------------------+ SETUP
    telepresence+-------------+WAIT FOR+-----------------+
        settings|  +----------+  ACK   |
                |  |configure +-+------+
                |                      +--+-----+  |  + ack     |
                |  |received    |ack received
                |  |            v
                |  channel  |          +--------+
                +-------------+WAIT FOR|
                |  |  established          |  CONF  |  channel error/         v                 OPTIONS phase
                |  |  session ends         +-------+           failure          +-+------+<-----------------------------+
                |
          +-----------------------+OPTIONS+--------------------------+  |                       +-+-----+            |                                     |
                |  |  OPTIONS phase            |configure received                   |
                |  success  |            v                                     |   channel error/     +---------+
                |   session ends  +--------->+---------+ error configureResponse sent|
                +-------------+CONF     |-----------------------------+
                | ACTIVE  +--------->|RESPONSE +
                |
          +----------------------+  |          +---------+
                | +----+  +------------------+  |              | MP
                |  |    send/receive              |successful
                |  | +----+              |configureResponse
                |    CLUE messages  |              |sent
                |  |         |<-----------------+              | +----+
                |  |              | MC
                |  |configure     |
                | +----+  |received      v
                |  |          +-----------+
                |
                                 +---------+  +----------+ESTABLISHED|
                +-------------+-----------+

                 Figure 10: CLUE Participant state machine

6.1. Media Provider's state machine

   As soon as the sub-state machine of the MP (Figure 11) is activated,
   it is in the ADV state.  In the ADV state, the MP prepares the
   'advertisement' message reflecting its actual telepresence
   capabilities. State Machine

   After the 'advertisement' has been sent ("advertisement sent"), the
   MP moves from the ADV state to the WAIT FOR ACK state.  If an 'ack'
   message with a successful response code arrives ("ack received"), the
   MP moves to the WAIT FOR CONF state.  If a NACK arrives (i.e., an
   'ack' message with an error response code), the MP moves back to the
   ADV state for preparing preparation of a new 'advertisement'.  When in the WAIT
   FOR ACK state, if a 'configure' message with the <ack> element set to
   TRUE
   "TRUE" arrives ("configure+ack received"), the MP goes directly to
   the CONF RESPONSE state.  'configure+ack' messages referring to out-of-
   date out-
   of-date (i.e., having a sequence number less than the highest
   generated so far) advertisements MUST be ignored, i.e., they do not
   trigger any state transition.  If the telepresence settings of the MP
   change while in the WAIT FOR ACK state ("changed telepresence
   settings"), the MP switches from the WAIT FOR ACK state to the ADV
   state to create a new 'advertisement'.

   When in the WAIT FOR CONF state, the MP listens to the channel for a
   'configure' request coming from the MC.  When a 'configure' arrives
   ("configure received"), the MP switches to the CONF RESPONSE state.
   If the telepresence settings change in the meanwhile meantime ("changed
   telepresence settings"), the MP moves from the WAIT FOR CONF state
   back to the ADV state to create the new 'advertisement' to be sent to
   the MC.

   The MP in the CONF RESPONSE state processes the received 'configure'
   in order to produce a 'configureResponse' message.  If the MP
   successfully processes the MC's configuration, then it sends a 200
   'configureResponse' ("success ("successful configureResponse sent") and moves
   to the ESTABLISHED state.  If there are errors in the 'configure'
   processing, then the MP issues a 'configureResponse' carrying an
   error response code and it goes back to the WAIT FOR CONF state to wait
   for a new configuration request.  Finally, if there are changes in
   the MP's telepresence settings ("changed telepresence settings"), the
   MP switches to the ADV state.

   The MP in the ESTABLISHED state has successfully negotiated the media
   streams with the MC by means of the CLUE messages.  If there are
   changes in the MP's telepresence settings ("changed telepresence
   settings"), the MP moves back to the ADV state.  In the ESTABLISHED
   state, the CLUE-controlled media streams of the session are those
   described in the last successfully processed 'configure' message.

   Messages not shown for a state do not cause the state to change.

                              +-----+
                +------------>| ADV |<-------------------+
                |             +-+---+                    |
                |  advertisement|       NACK received    |
                |           sent|                        |
                |               v                        |
         changed|             +--------+                 |
    telepresence+-------------+WAIT FOR+-----------------+
        settings|  +----------+  ACK   |
                |  |configure +-+------+
                |  |  + ack     |
                |  |received    |ack received
                |  |            v
                |  |          +--------+
                +-------------+WAIT FOR|
                |  |          |  CONF  |
                |  |          +-+------+<-----------------------------+
                |  |            |                                     |
                |  |            |configure received                   |
                |  |            v                                     |
                |  +--------->+---------+ error configureResponse sent|
                +-------------+CONF     |-----------------------------+
                |  +--------->|RESPONSE +
                |  |          +---------+
                |  |              |
                |  |              |success
                |  |              |configureResponse
                |  |              |sent
                |  |              |
                |  |              |
                |  |configure     |
                |  |received      v
                |  |          +-----------+
                |  +----------+ESTABLISHED|
                +-------------+-----------+

                 Figure 11: Media Provider's state machine

6.2.  Media Consumer's state machine State Machine

   As soon as the sub-state machine of the MC (Figure 12) 11) is activated,
   it is in the WAIT FOR ADV state.  An MC in the WAIT FOR ADV state is
   waiting for an 'advertisement' coming from the MP.  If the
   'advertisement' arrives ("ADV received"), the MC reaches moves to the ADV
   PROCESSING state.  Otherwise, the MC stays in the WAIT FOR ADV state. ADV state.

                         +----------+
                         | WAIT FOR |
                         |   ADV    |
                         +----+-----+<--------+
                              |               |
                 advertisement|      NACK sent|
                      received|               |
                              v               |
                         +-----------+--------+
                         |  ADV      +
                         | PROCESSING|<-----------------------+
                         +-+-----+---+                        |
                           |     |                            |
            configure+ack  |     |  ack                       |
                   sent    |     |  sent                      |
                           |     v                            |
                           |  +-----+                         |
                           |  |CONF |  advertisement received |
     +----------------------->|     +-------------------------+
     |error                |  +--+--+                         |
     |configureResponse    |     |                            |
     |received             |     |configure                   |
     |                     |     |sent                        |
     |                     |     |                            |
     |                     v     v              advertisement |
     +------------------+---------------+            received |
             +--------->|   WAIT FOR    +---------------------+
             |          |  CONF RESPONSE+                     |
             |          +-------+-------+                     |
             |                  |                             |
             |                  |                             |
             |                  |successful                   |
             |                  |configureResponse            |
             |                  |received                     |
             |configure         v                             |
             |sent        +-----------+ advertisement received|
             +------------+ESTABLISHED+-----------------------+
                          +-----------+

                 Figure 11: Media Consumer's State Machine

   In the ADV PROCESSING state, the 'advertisement' is parsed by the MC.
   If the 'advertisement' is successfully processed, there are two
   possibilities. scenarios are
   possible.  In the former first case, the MC issues a successful 'ack'
   message to the MP ("ACK sent") and moves to the CONF state.  This
   typically happens when the MC needs some more time to produce the
   'configure' message associated with the received 'advertisement'.  In
   the latter case, the MC is able to immediately prepare and send back
   to the MP a 'configure' message.  Such a message will have the <ack>
   field set to "200" ("configure+ack sent") and will allow the MC to
   move directly to the WAIT FOR CONF RESPONSE state.

   If the ADV processing is unsuccessful (bad syntax, missing XML
   elements, etc.), the MC sends a NACK message (i.e., an 'ack' with an
   error response code) to the MP and optionally and, optionally, further describes the
   problem via a proper reason phrase.  In this way scenario ("NACK sent"),
   the MC switches back to the WAIT FOR ADV state, waiting state and waits for a new
   'advertisement'.

   When in the CONF state, the MC prepares the 'configure' request to be
   issued to the MP on the basis of the previously ack-ed acked
   'advertisement'.  When the 'configure' has been sent ("configure
   sent"), the MC moves to the WAIT FOR CONF RESPONSE state.  If a new
   'advertisement' arrives in the meanwhile meantime ("advertisement received"),
   the MC goes back to the ADV PROCESSING state.

   In the WAIT FOR CONF RESPONSE state, the MC waits for the MP's
   response to the issued 'configure' or 'configure+ack'.  If a 200
   'configureResponse' message is received ("successful
   configureResponse received"), it means that the MP and the MC have
   successfully agreed on the media streams to be shared.  Then, the MC
   can move to the ESTABLISHED state.  On the other hand, if an error
   response is received ("error configureResponse received"), the MC
   moves back to the CONF state to prepare a new 'configure' request.
   If a new 'advertisement' is received in the WAIT FOR CONF RESPONSE
   state, the MC switches to the ADV PROCESSING state.

   When the MC is in the ESTABLISHED state, the telepresence session
   configuration has been set up at the CLUE application level according
   to the MC's preferences.  Both the MP and the MC have agreed on (and
   are aware of) the CLUE-controlled media streams to be exchanged
   within the call.  While in the ESTABLISHED state, it might happen
   that the MC decides might decide
   to change something in the call settings.  The settings; in this case, the MC then
   issues a new 'configure' ("configure sent") and goes to wait for
   the new 'configureResponse' in the WAIT FOR CONF RESPONSE state.  On
   the other hand, in the ESTABLISHED state, if a new 'advertisement'
   arrives from the MP ("advertisement received"), it means that
   something has changed on the MP's side.  The MC then moves to the ADV
   PROCESSING state.

   Messages not shown for a state do not cause the state to change.

                         +----------+
                         | WAIT FOR |
                         |   ADV    |
                         +----+-----+<--------+
                              |               |
                 advertisement|      NACK sent|
                      received|               |
                              v               |
                         +-----------+--------+
                         |  ADV      +
                         | PROCESSING|<-----------------------+
                         +-+-----+---+                        |
                           |     |                            |
            configure+ack  |     |  ack                       |
                   sent    |     |  sent                      |
                           |     v                            |
                           |  +-----+                         |
                           |  |CONF |  advertisement received |
     +----------------------->|     +-------------------------+
     |error                |  +--+--+                         |
     |configureResponse    |     |                            |
     |received             |     |configure                   |
     |                     |     |sent                        |
     |                     |     |                            |
     |                     v     v              advertisement |
     +------------------+---------------+            received |
             +--------->|   WAIT FOR    +---------------------+
             |          |  CONF RESPONSE+                     |
             |          +-------+-------+                     |
             |                  |                             |
             |                  |                             |
             |                  |successful                   |
             |                  |configureResponse            |
             |                  |received                     |
             |configure         v                             |
             |sent        +-----------+ advertisement received|
             +------------+ESTABLISHED+-----------------------+
                          +-----------+

                 Figure 12: Media Consumer's moves to the WAIT FOR
   CONF RESPONSE state machine to wait for the new 'configureResponse'.  On the
   other hand, if the MC is in the ESTABLISHED state and a new
   'advertisement' ("advertisement received") arrives from the MP, it
   means that something has changed on the MP's side; the MC then moves
   to the ADV PROCESSING state.

   Messages not shown for a state do not cause the state to change.

7.  Versioning

   CLUE protocol messages are XML messages compliant to the CLUE
   protocol XML schema [I-D.ietf-clue-data-model-schema]. [RFC8846].  The version of the protocol
   corresponds to the version of the schema.  Both the client and the
   server have to test the compliance of the received messages with the
   XML schema of the CLUE protocol.  If the compliance is not verified,
   the message cannot be processed further.

   Client

   The client and server cannot communicate if they do not share exactly
   the same XML schema.  Such a schema is associated with the CLUE URN
   "urn:ietf:params:xml:ns:clue-protocol".  If all CLUE-enabled devices
   use that schema schema, there will be no interoperability problems due to
   schema issues.

   This document defines uses XML schema version 1.0. 1.0 [W3C.REC-xml-20081126].
   The version usage is similar in philosophy to XMPP ([RFC6120]). the Extensible
   Messaging and Presence Protocol (XMPP) [RFC6120].  A version number
   has major and minor components, each a non-negative integer.  Major  Changes
   to the major version changes denote non-interoperable changes.  Minor  Changes to
   the minor version
   changes denote schema changes that are backward compatible
   by ignoring unknown XML elements, elements or other backward compatible backward-compatible
   changes.

   The minor versions of the XML schema MUST be backward compatible, not
   only in terms of the schema but also semantically and procedurally as
   well.  This means that they should define further features and
   functionality besides those defined in the previous versions, in an
   incremental way, without impacting the basic rules defined in the
   previous version of the schema.  In this way, if a MP is able to
   speak, e.g.,
   "speak", for example, version 1.5 of the protocol while the MC only
   understands version 1.4, the MP should have no problem in reverting
   the dialogue back to version 1.4 without exploiting 1.5 features and
   functionality.  Version 1.4 is the one to be spoken and has to appear
   in the "v" attribute of the subsequent CLUE messages.  In other
   words, in this example, the MP MUST use version 1.4.  This  That said, and
   coherently
   in keeping with the general IETF "protocol robustness protocol "robustness principle"
   stating that "an an implementation must be conservative in its sending
   behavior,
   behavior and liberal in its receiving behavior" behavior [RFC1122], CLUE
   Participants MUST ignore unknown elements or attributes that are not
   envisioned in the negotiated protocol version and related extensions.

8.  Extensions

   Although the standard version of the CLUE protocol XML schema is
   designed to thoroughly cope with the requirements emerging from the
   application domain, new needs might arise arise, and new extensions can
   then be designed.  Extensions specify information and behaviors that
   are not described in a certain version of the protocol and specified
   in the related RFC document.  Such information and behaviors can be
   optionally used in a CLUE dialogue and MUST be negotiated in the CLUE
   initiation phase.  They can relate to:

   1.  new information, to be carried in the existing messages.  For
       example, more fields may be added within an existing message; message.

   2.  new messages.  This is the case if there is no proper message for
       a certain task, so a brand new CLUE message needs to be defined.

   As to the first type category of extensions, it is possible to distinguish
   between protocol-specific and data model information.  Indeed, CLUE
   messages are envelopes carrying both:

   o  (i) both of the following:

   1.  XML elements defined within the CLUE protocol XML schema itself
       (protocol-specific information)

   o  (ii) information).

   2.  other XML elements compliant to the CLUE data model schema (data
       model information) information).

   When new protocol-specific information is needed somewhere in the
   protocol messages, it can be added in place of the <any> elements and
   <anyAttribute> elements envisioned by the protocol schema.  The
   policy currently defined in the protocol schema for handling <any>
   and <anyAttribute> elements is:

   o is as follows:

   *  elementFormDefault="qualified"

   o

   *  attributeFormDefault="unqualified"

   The new information must be qualified by namespaces other than
   "urn:ietf:params:xml:ns:clue-protocol" (the protocol URN) and
   "urn:ietf:params:xml:ns:clue-info" (the data model URN).  Elements or
   attributes from unknown namespaces MUST be ignored.

   The other matter concerns data model information.  Data model
   information is defined by the XML schema associated with the URN
   "urn:ietf:params:xml:ns:clue-info".  Also  Note that there are also
   extensibility issues for the XML elements defined in such a schema there are extensibility issues. schema.
   Those issues are overcome by using <any> and <anyAttribute>
   placeholders.  New information within data model elements can be
   added in place of <any> and <anyAttribute> schema elements, as long
   as they are properly namespace qualified.

   On the other hand (second type (the second category of extensions), "extra" CLUE
   protocol messages, i.e., messages not envisioned in the latest
   standard version of the schema, can might be needed.  In that case, the
   messages and the associated behavior should be defined in external
   documents that both communication parties must be aware of.

   As reported shown in Figure 13, 12, the fields of the <extension> element (either
   new information or new messages) take the following values:

   o

   *  a name;

   o name.

   *  an external XML Schema schema defining the XML information and/or the XML
      messages representing the extension;

   o extension.

   *  the major standard version of the protocol that the extension
      refers to.

     <xs:complexType name="extensionType">
       <xs:sequence>
         <xs:element name="name" type="xs:string" />
         <xs:element name="schemaRef" type="xs:anyURI"/>
         <xs:element name="version" type="versionType"/>
         <xs:any namespace="##other" processContents="lax"
               minOccurs="0"/>
       </xs:sequence>
       <xs:anyAttribute namespace="##other" processContents="lax"/>
     </xs:complexType>

                     Figure 13: 12: The <extension> element Element

   The above described above-described <extension> element is carried within the
   'options' and 'optionsResponse' messages to represent the extensions
   supported both by both the CI and the CR.

   Extensions MUST be defined in a separate XML schema file and MUST be
   provided with a companion document describing their semantics and
   use.

8.1.  Extension example Example

   An example of an extension might be a "new" capture attribute (i.e.,
   a capture attribute that is not envisioned in the current standard
   defining the CLUE data model in [I-D.ietf-clue-data-model-schema]) [RFC8846]) needed to further describe
   a video capture.

   The CLUE data model document ([I-D.ietf-clue-data-model-schema]) [RFC8846] envisions the possibility of
   adding this kind of "extra" information in the description of a video
   capture.  For the sake of convenience, the XML definition of a video capture
   taken from
   [I-D.ietf-clue-data-model-schema] [RFC8846] is reported shown in Figure 14 13 below.

   <!-- VIDEO CAPTURE TYPE -->
      <xs:complexType name="videoCaptureType">
       <xs:complexContent>
        <xs:extension base="tns:mediaCaptureType">
         <xs:sequence>
          <xs:any namespace="##other" processContents="lax"
                minOccurs="0"
          maxOccurs="unbounded"/>
         </xs:sequence>
         <xs:anyAttribute namespace="##other" processContents="lax"/>
        </xs:extension>
       </xs:complexContent>
      </xs:complexType>

             Figure 14: 13: XML definition Definition of a CLUE video capture Video Capture

   According to such a definition, a video capture might have, after the
   set of the generic media capture attributes, a set of new attributes
   defined elsewhere, i.e., in an XML schema defining an extension.  The
   XML schema defining the extension might look like the following
   (Figure 15): 14):

   <?xml version="1.0" encoding="UTF-8" ?>
   <xs:schema version="1.0"
   targetNamespace="http://example.extensions.com/myVideoExtensions"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns="http://example.extensions.com/myVideoExtensions"
     targetNamespace="https://example.extensions.com/myVideoExtensions"
     xmlns:xs="https://www.w3.org/2001/XMLSchema"
     xmlns="https://example.extensions.com/myVideoExtensions"
     elementFormDefault="qualified"
     attributeFormDefault="unqualified">

           <!--
                 This is the new element to be put in place of the <any>
                 element in the video capture definition
                 of the CLUE data model schema
           -->

           <xs:element name="myVideoExtension">
                   <xs:complexType>
                           <xs:sequence>
                                <xs:element ref="newVideoAttribute1"/>
                                <xs:element ref="newVideoAttribute2"/>
                           </xs:sequence>
                   </xs:complexType>
           </xs:element>

           <xs:element name="newVideoAttribute1" type="xs:string"/>

           <xs:element name = "newVideoAttribute2" type = "xs:boolean"/>
   </xs:schema>

                Figure 15: 14: XML schema defining Schema Defining an extension Extension

   By using the extension above, a video capture can be further
   described in the advertisement using the <myVideoExtension> element
   containing two extra pieces of information (<newVideoAttribute1> and
   <newVideoAttribute2>)
   <newVideoAttribute2>), besides using the attributes envisioned for a
   generic media capture.  As stated in this document, both participants
   must be aware of the extension schema and related semantics to use
   such an extension and must negotiate it via the 'options' and
   'optionsResponse' mechanism. messages.

9.  XML Schema

   NOTE TO THE RFC-Editor: Please replace "data-model-schema-19.xsd"
   with the right schema location for the CLUE data model schema
   document (which is still to be defined at the time of this writing)
   in this section prior to publication as an RFC.

   In this section, the

   The XML schema defining the CLUE messages is provided below
   (Figure 16). 15).

   <?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="https://www.w3.org/2001/XMLSchema"
           xmlns="urn:ietf:params:xml:ns:clue-protocol"
           xmlns:dm="urn:ietf:params:xml:ns:clue-info"
        xmlns:tns="urn:ietf:params:xml:ns:clue-protocol"
           version="1.0"
           targetNamespace="urn:ietf:params:xml:ns:clue-protocol"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">
     <!-- Import data model schema -->
     <xs:import namespace="urn:ietf:params:xml:ns:clue-info"
        schemaLocation="clue-data-model-schema-19.xsd" /> namespace="urn:ietf:params:xml:ns:clue-info"/>
     <!-- ELEMENT DEFINITIONS -->
     <xs:element name="options" type="optionsMessageType" />
     <xs:element name="optionsResponse"
           type="optionsResponseMessageType"/>
     <xs:element name="advertisement" type="advertisementMessageType"/>
     <xs:element name="ack" type="advAcknowledgementMessageType"/>
     <xs:element name="configure" type="configureMessageType"/>
     <xs:element name="configureResponse"
           type="configureResponseMessageType"/>
     <!-- CLUE MESSAGE TYPE -->
     <xs:complexType name="clueMessageType" abstract="true">
       <xs:sequence>
         <xs:element name="clueId" type="xs:string" minOccurs="0" />
         <xs:element name="sequenceNr" type="xs:positiveInteger" />
       </xs:sequence>
       <xs:attribute name="protocol" type="xs:string" fixed="CLUE"
           use="required" />
       <xs:attribute name="v" type="versionType" use="required" />
     </xs:complexType>
     <!-- CLUE RESPONSE TYPE -->
     <xs:complexType name="clueResponseType">
       <xs:complexContent>
         <xs:extension base="clueMessageType">
           <xs:sequence>
             <xs:element name="responseCode" type="responseCodeType" />
             <xs:element name="reasonString" type="xs:string"
                   minOccurs="0"/>
           </xs:sequence>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <!-- VERSION TYPE -->
     <xs:simpleType name="versionType">
       <xs:restriction base="xs:string">
         <xs:pattern value="[1-9][0-9]*\.[0-9]+" />
       </xs:restriction>
     </xs:simpleType>
     <!-- RESPONSE CODE TYPE -->
     <xs:simpleType name="responseCodeType">
       <xs:restriction base="xs:integer">
         <xs:pattern value="[1-9][0-9][0-9]" />
       </xs:restriction>
     </xs:simpleType>
     <!-- SUCCESS RESPONSE CODE TYPE -->
     <xs:simpleType name="successResponseCodeType">
       <xs:restriction base="xs:integer">
         <xs:pattern value="2[0-9][0-9]" />
       </xs:restriction>
     </xs:simpleType>
     <!-- CLUE OPTIONS -->
     <xs:complexType name="optionsMessageType">
       <xs:complexContent>
         <xs:extension base="clueMessageType">
           <xs:sequence>
             <xs:element name="mediaProvider" type="xs:boolean"/>
             <xs:element name="mediaConsumer" type="xs:boolean"/>
             <xs:element name="supportedVersions"
                   type="versionsListType"
                   minOccurs="0" />
             <xs:element name="supportedExtensions"
                   type="extensionsListType" minOccurs="0"/>
             <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
           </xs:sequence>
           <xs:anyAttribute namespace="##other" processContents="lax"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <!-- VERSIONS LIST TYPE -->
     <xs:complexType name="versionsListType">
       <xs:sequence>
         <xs:element name="version" type="versionType" minOccurs="1"
           maxOccurs="unbounded"/>
         <xs:any namespace="##other" processContents="lax"
           minOccurs="0"/>
       </xs:sequence>
       <xs:anyAttribute namespace="##other" processContents="lax" />
     </xs:complexType>
     <!-- EXTENSIONS LIST TYPE -->
     <xs:complexType name="extensionsListType">
       <xs:sequence>
         <xs:element name="extension" type="extensionType"
           minOccurs="1"
           maxOccurs="unbounded"/>
         <xs:any namespace="##other" processContents="lax"
           minOccurs="0"/>
       </xs:sequence>
       <xs:anyAttribute namespace="##other" processContents="lax" />
     </xs:complexType>
     <!-- EXTENSION TYPE -->
     <xs:complexType name="extensionType">
       <xs:sequence>
         <xs:element name="name" type="xs:string" />
         <xs:element name="schemaRef" type="xs:anyURI" />
         <xs:element name="version" type="versionType" />
         <xs:any namespace="##other" processContents="lax"
           minOccurs="0"/>
       </xs:sequence>
       <xs:anyAttribute namespace="##other" processContents="lax"/>
     </xs:complexType>
     <!-- CLUE 'optionsResponse' -->
     <xs:complexType name="optionsResponseMessageType">
       <xs:complexContent>
         <xs:extension base="clueResponseType">
           <xs:sequence>
             <xs:element name="mediaProvider" type="xs:boolean"
                   minOccurs="0"/>
             <xs:element name="mediaConsumer" type="xs:boolean"
                   minOccurs="0"/>
             <xs:element name="version" type="versionType"
                   minOccurs="0"/>
             <xs:element name="commonExtensions"
                   type="extensionsListType" minOccurs="0"/>
             <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
           </xs:sequence>
           <xs:anyAttribute namespace="##other" processContents="lax"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <!-- CLUE ADVERTISEMENT MESSAGE TYPE -->
     <xs:complexType name="advertisementMessageType">
       <xs:complexContent>
         <xs:extension base="clueMessageType">
           <xs:sequence>
             <!-- mandatory -->
             <xs:element name="mediaCaptures"
                   type="dm:mediaCapturesType"/>
             <xs:element name="encodingGroups"
                   type="dm:encodingGroupsType"/>
             <xs:element name="captureScenes"
                   type="dm:captureScenesType"/>
             <!-- optional -->
             <xs:element name="simultaneousSets"
                   type="dm:simultaneousSetsType" minOccurs="0"/>
             <xs:element name="globalViews" type="dm:globalViewsType"
                   minOccurs="0"/>
             <xs:element name="people"
                   type="dm:peopleType" minOccurs="0"/>
             <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
           </xs:sequence>
           <xs:anyAttribute namespace="##other" processContents="lax"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <!-- 'ack' MESSAGE TYPE -->
     <xs:complexType name="advAcknowledgementMessageType">
       <xs:complexContent>
         <xs:extension base="clueResponseType">
           <xs:sequence>
             <xs:element name="advSequenceNr"
                   type="xs:positiveInteger"/>
             <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
           </xs:sequence>
           <xs:anyAttribute namespace="##other" processContents="lax"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <!-- CLUE 'configure' MESSAGE TYPE -->
     <xs:complexType name="configureMessageType">
       <xs:complexContent>
         <xs:extension base="clueMessageType">
           <xs:sequence>
             <!-- mandatory fields -->
             <xs:element name="advSequenceNr"
                   type="xs:positiveInteger"/>
             <xs:element name="ack" type="successResponseCodeType"
                   minOccurs="0"/>
             <xs:element name="captureEncodings"
                   type="dm:captureEncodingsType" minOccurs="0"/>
             <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
           </xs:sequence>
           <xs:anyAttribute namespace="##other" processContents="lax"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <!-- 'configureResponse' MESSAGE TYPE -->
     <xs:complexType name="configureResponseMessageType">
       <xs:complexContent>
         <xs:extension base="clueResponseType">
           <xs:sequence>
             <xs:element name="confSequenceNr"
                   type="xs:positiveInteger"/>
             <xs:any namespace="##other" processContents="lax"
                   minOccurs="0"/>
           </xs:sequence>
           <xs:anyAttribute namespace="##other" processContents="lax"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
   </xs:schema>

                  Figure 16: 15: Schema defining Defining CLUE messages Messages

10.  Call flow example

   In this Flow Example

   This section describes the CLUE protocol messages exchanged in the
   following call flow are detailed.  Only flow.  For simplicity, only one direction of media is shown for
   simplicity,
   shown, as the other direction is precisely symmetric.

                      +-----+             +-----+
                      |     |             |     |
                      | CP1 |             | CP2 |
                      |     |             |     |
                      +--+--+             +--+--+
                         |                   |
                         |   1.options      |
       +----------------->|
       |                  |    1. options     |
                         +------------------>|
                         |
       |2.optionsResponse                   |
       |<-----------------+
                         |                   |
                         |2. optionsResponse |
                         |<------------------+
                         |                   | 3.advertisement
                         |
       +----------------->|                   |
                         |3. advertisement   |
                         +------------------>|
                         |                   |
       |4.configure+ack
                         |
       |<-----------------+                   |
                         |4. configure+ack   |
                         |<------------------+
                         |                   |
       |5.confResponse
                         |
       +----------------->|                   |
                         |5. confResponse    |
                         +------------------>|
                         |                   |
       |6.advertisement
                         |
       +----------------->|                   |
                         |6. advertisement   |
                         +------------------>|
                         |                   |
                         |    7.ack                   |
       |<-----------------+
                         |    7. ack         |
                         |<------------------+
                         |                   |
                         | 8.configure                   |
       |<-----------------+
                         |8. configure       |
                         |<------------------+
                         |                   |
                         |                   | 9.confResponse
                         |9. confResponse    |
       +----------------->|
                         +------------------>|
                         |                   |
                         |                   |
                         .                   .
                         .                   .
                         .                   .

   Two CLUE Participants, CP1 and CP2, have successfully set up the CLUE
   channel according to document [I-D.ietf-clue-datachannel]. [RFC8850].  CP1 is the Channel Initiator (CI) CI, and CP2 is the Channel Receiver (CR). CR.

   *  The initiation phase starts (negotiation of the CLUE protocol
      version and extensions).  CP1, as the CI, sends to CP2 an
      'options' message specifying the supported versions and extensions
      (Section 10.1).  CP1
   supports: supports (i) version 1.4 with extensions E1, E2
      E2, and E3 and E3, (ii) version 2.7 with extensions E4 and E5.
      Because of such capabilities, CP1 sends an 'options' message with
      the 'v' "v" attribute set to 1.4 "1.4" and
   specifies explicitly specifies all the
      supported versions and extensions in the corresponding fields of
      the 'options' message.  In the 'options' message, CP1 specifies also
      specifies that it intends to act both as both a MP and
   as a MC.

   *  CP2 supports version versions 3.0, version 2.9 2.9, and version 1.9 of the CLUE protocol, each
      version without any extension. extensions.  Version 2.7 is the best common
      choice.  Given the received 'options' message, CP2 answers with an
      'optionsResponse' message in which it specifies only version 2.7
      as the agreed agreed-upon version of the CLUE protocol to be used,
      leaving blank the extensions part of the message to say that no
   extension
      extensions will be used in the CLUE session (Section 10.2).  In
      the 'optionsResponse' message, CP2 specifies also specifies that it intends
      to act
   both as both a MP and as a MC.

   After the initiation phase is completed, CP1 and CP2 start their
   activity as the MP and as MC. the MC, respectively.  For the sake of
   simplicity, the following rest of the call flow focuses only on the dialogue
   between MP CP1 and MC CP2.

   *  CP1 advertises a telepresence configuration like the one described
      in
   [I-D.ietf-clue-data-model-schema], Sec. Sample XML File, [RFC8846], Section 27, where there are (i) three main video
      streams captured by three cameras, with the central one camera capable
      of capturing a zoomed-out view of the overall telepresence room,
      (ii) a multi-content multicontent capture of the loudest segment of the room,
      and (iii) one audio capture for the audio of the whole room
      (Section 10.3).

   *  CP2 receives CP1's 'advertisement' message and, after processing
      it, sends back to CP1 a 'configure + ack' message where in which it
      declares to be
   interested only its interest in the multi-content multicontent capture and in the audio
      capture only (Section 10.4).

   *  CP1 answers to CP2's 'configure + ack' message with a
      'configureResponse' message including that includes a 200 (Success) response
      code '200 - Success' to accept all of CP2's requests (Section 10.5).

   *  To reflect the changes in its telepresence offer, CP1 issues a new
      'advertisement' message to CP2 (Section 10.6), this time adding also
      adding a composed capture made by of a big picture representing the
      current speaker and two picture-in-picture boxes representing the
      previous speakers (see [RFC8846], Section 28 for more details about
      regarding the telepresence description in
   [I-D.ietf-clue-data-model-schema], Sec. MCC example). description).

   *  CP2 acknowledges the second 'advertisement' message with an 'ack'
      message (Section 10.7).

   *  In a second moment, CP2 changes the requested media streams from
      CP1 by sending to CP1 a 'configure' message replacing the
      previously selected video streams with the new composed media
      streams advertised by CP1 (Section 10.8).  Media streams from the
      previous configuration continue to flow during the reconfiguration
      process.

   *  Finally, CP1 accept the last requests of CP2 accepts CP2's latest request with a 'confResponse'
      message (Section 10.9) 10.9).

   We would also remark like to point out that in the depicted flow three
   distinct sequence number spaces per sender are involved (two of which
   appear in the
   snippets snippets, since we only show one direction of media).
   The discontinuity between the sequence number values in Section Sections 10.2
   and
   Section 10.3 is hence correct.

10.1.  CLUE message nr. Message No. 1: 'options'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <options xmlns="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="1.4">
       <clueId>CP1</clueId>
       <sequenceNr>51</sequenceNr>
       <mediaProvider>true</mediaProvider>
       <mediaConsumer>true</mediaConsumer>
       <supportedVersions>
           <version>1.4</version>
           <version>2.7</version>
       </supportedVersions>
       <supportedExtensions>
           <extension>
                   <name>E1</name>
                   <schemaRef>URL_E1</schemaRef>
                   <version>1.4</version>
           </extension>
           <extension>
                   <name>E2</name>
                   <schemaRef>URL_E2</schemaRef>
                   <version>1.4</version>
           </extension>
           <extension>
                   <name>E3</name>
                   <schemaRef>URL_E3</schemaRef>
                   <version>1.4</version>
           </extension>
           <extension>
                   <name>E4</name>
                   <schemaRef>URL_E4</schemaRef>
                   <version>2.7</version>
           </extension>
           <extension>
                   <name>E5</name>
                   <schemaRef>URL_E5</schemaRef>
                   <version>2.7</version>
           </extension>
       </supportedExtensions>
   </options>

10.2.  CLUE message nr. Message No. 2: 'optionsResponse'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <optionsResponse xmlns="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="1.4">
       <clueId>CP2</clueId>
       <sequenceNr>62</sequenceNr>
       <responseCode>200</responseCode>
       <reasonString>Success</reasonString>
       <mediaProvider>true</mediaProvider>
       <mediaConsumer>true</mediaConsumer>
       <version>2.7</version>
   </optionsResponse>

10.3.  CLUE message nr. Message No. 3: 'advertisement'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:advertisement xmlns="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
 http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <ns2:clueId>CP1</ns2:clueId>
       <ns2:sequenceNr>11</ns2:sequenceNr>
       <ns2:mediaCaptures>
         <mediaCapture
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
            xsi:type="audioCaptureType" captureID="AC0"
            mediaType="audio">
            <captureSceneIDREF>CS1</captureSceneIDREF>
               <spatialInformation>
                   <captureOrigin>
                      <capturePoint>
                         <x>0.0</x>
                         <y>0.0</y>
                         <z>10.0</z>
                    </capturePoint>
                    <lineOfCapturePoint>
                      <x>0.0</x>
                      <y>1.0</y>
                      <z>10.0</z>
                     </lineOfCapturePoint>
                   </captureOrigin>
                 </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG1</encGroupIDREF>
                <description lang="en">main audio from the room
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>room</view>
                <capturedPeople>
                    <personIDREF>alice</personIDREF>
                    <personIDREF>bob</personIDREF>
                    <personIDREF>ciccio</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC0"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>-2.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>-1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>-1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">left camera video capture
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                <capturedPeople>
                    <personIDREF>ciccio</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC1"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>0.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>-1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">central camera video capture
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                <capturedPeople>
                    <personIDREF>alice</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC2"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>2.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">right camera video capture
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                <capturedPeople>
                    <personIDREF>bob</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC3"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <content>
                    <sceneViewIDREF>SE1</sceneViewIDREF>
                </content>
                <policy>SoundLevel:0</policy>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">loudest room segment</description> segment
                </description>
                <priority>2</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC4"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>0.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>7.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>7.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>13.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>13.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">zoomed out lang="en">zoomed-out view of all people in
                the room</description>
                <priority>2</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>room</view>
                <capturedPeople>
                    <personIDREF>alice</personIDREF>
                    <personIDREF>bob</personIDREF>
                    <personIDREF>ciccio</personIDREF>
                    </capturedPeople>
            </mediaCapture>
        </ns2:mediaCaptures>
        <ns2:encodingGroups>
            <encodingGroup encodingGroupID="EG0">
                <maxGroupBandwidth>600000</maxGroupBandwidth>
                <encodingIDList>
                    <encodingID>ENC1</encodingID>
                    <encodingID>ENC2</encodingID>
                    <encodingID>ENC3</encodingID>
                </encodingIDList>
            </encodingGroup>
            <encodingGroup encodingGroupID="EG1">
                <maxGroupBandwidth>300000</maxGroupBandwidth>
                <encodingIDList>
                    <encodingID>ENC4</encodingID>
                    <encodingID>ENC5</encodingID>
                </encodingIDList>
            </encodingGroup>
        </ns2:encodingGroups>
        <ns2:captureScenes>
            <captureScene scale="unknown" sceneID="CS1">
                <sceneViews>
                    <sceneView sceneViewID="SE1">
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC0</mediaCaptureIDREF>
                            <mediaCaptureIDREF>VC1</mediaCaptureIDREF>
                            <mediaCaptureIDREF>VC2</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE2">
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC3</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE3">
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC4</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE4">
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>AC0</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                </sceneViews>
            </captureScene>
        </ns2:captureScenes>
        <ns2:simultaneousSets>
            <simultaneousSet setID="SS1">
                <mediaCaptureIDREF>VC3</mediaCaptureIDREF>
                <sceneViewIDREF>SE1</sceneViewIDREF>
            </simultaneousSet>
            <simultaneousSet setID="SS2">
                <mediaCaptureIDREF>VC0</mediaCaptureIDREF>
                <mediaCaptureIDREF>VC2</mediaCaptureIDREF>
                <mediaCaptureIDREF>VC4</mediaCaptureIDREF>
            </simultaneousSet>
        </ns2:simultaneousSets>
        <ns2:people>
            <person personID="bob">
                <personInfo>
                    <ns3:fn>
                      <ns3:text>Bob</ns3:text>
                    </ns3:fn>
                </personInfo>
                <personType>minute taker</personType>
            </person>
            <person personID="alice">
                <personInfo>
                    <ns3:fn>
                        <ns3:text>Alice</ns3:text>
                    </ns3:fn>
                </personInfo>
                <personType>presenter</personType>
            </person>
            <person personID="ciccio">
                <personInfo>
                    <ns3:fn>
                        <ns3:text>Ciccio</ns3:text>
                    </ns3:fn>
                </personInfo>
                <personType>chairman</personType>
                <personType>timekeeper</personType>
            </person>
        </ns2:people>
   </ns2:advertisement>

10.4.  CLUE message nr. Message No. 4: 'configure + ack'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:configure xmlns="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <ns2:clueId>CP2</ns2:clueId>
       <ns2:sequenceNr>22</ns2:sequenceNr>
       <ns2:advSequenceNr>11</ns2:advSequenceNr>
       <ns2:ack>200</ns2:ack>
       <ns2:captureEncodings>
           <captureEncoding ID="ce123">
              <captureID>AC0</captureID>
              <encodingID>ENC4</encodingID>
           </captureEncoding>
           <captureEncoding ID="ce223">
              <captureID>VC3</captureID>
              <encodingID>ENC1</encodingID>
              <configuredContent>
                 <sceneViewIDREF>SE1</sceneViewIDREF>
              </configuredContent>
          </captureEncoding>
       </ns2:captureEncodings>
   </ns2:configure>

10.5.  CLUE message nr. Message No. 5: 'confResponse'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:configureResponse xmlns="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <ns2:clueId>CP1</ns2:clueId>
       <ns2:sequenceNr>12</ns2:sequenceNr>
       <ns2:responseCode>200</ns2:responseCode>
       <ns2:reasonString>Success</ns2:reasonString>
       <ns2:confSequenceNr>22</ns2:confSequenceNr>
   </ns2:configureResponse>

10.6.  CLUE message nr. Message No. 6: 'advertisement'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:advertisement xmlns="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
 http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <ns2:clueId>CP1</ns2:clueId>
       <ns2:sequenceNr>13</ns2:sequenceNr>
       <ns2:mediaCaptures>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="audioCaptureType" captureID="AC0"
             mediaType="audio">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>0.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                        <lineOfCapturePoint>
                            <x>0.0</x>
                            <y>1.0</y>
                            <z>10.0</z>
                        </lineOfCapturePoint>
                    </captureOrigin>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG1</encGroupIDREF>
                <description lang="en">main audio from the room
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>room</view>
                <capturedPeople>
                    <personIDREF>alice</personIDREF>
                    <personIDREF>bob</personIDREF>
                    <personIDREF>ciccio</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC0"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>0.5</x>
                            <y>1.0</y>
                            <z>0.5</z>
                        </capturePoint>
                        <lineOfCapturePoint>
                            <x>0.5</x>
                            <y>0.0</y>
                            <z>0.5</z>
                        </lineOfCapturePoint>
                    </captureOrigin>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">left camera video capture
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                <capturedPeople>
                    <personIDREF>ciccio</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC1"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>0.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>-1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">central camera video capture
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                <capturedPeople>
                    <personIDREF>alice</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC2"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>2.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>1.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">right camera video capture
                </description>
                <priority>1</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
                <capturedPeople>
                    <personIDREF>bob</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC3"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <content>
                    <sceneViewIDREF>SE1</sceneViewIDREF>
                </content>
                <policy>SoundLevel:0</policy>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">loudest room segment</description> segment
                </description>
                <priority>2</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC4"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureOrigin>
                            <capturePoint>
                            <x>0.0</x>
                            <y>0.0</y>
                            <z>10.0</z>
                        </capturePoint>
                    </captureOrigin>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>7.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>7.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>13.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>13.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <individual>true</individual>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">
               zoomed out
                  zoomed-out view of all people in the room
                </description>
                <priority>2</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>room</view>
                <capturedPeople>
                    <personIDREF>alice</personIDREF>
                    <personIDREF>bob</personIDREF>
                    <personIDREF>ciccio</personIDREF>
                </capturedPeople>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC5"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <content>
                    <sceneViewIDREF>SE1</sceneViewIDREF>
                </content>
                <policy>SoundLevel:1</policy>
                <description lang="en">penultimate loudest room segment
                </description>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC6"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <content>
                    <sceneViewIDREF>SE1</sceneViewIDREF>
                </content>
                <policy>SoundLevel:2</policy>
                <description lang="en">last but two loudest room segment
                </description>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
            </mediaCapture>
            <mediaCapture
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:type="videoCaptureType" captureID="VC7"
             mediaType="video">
                <captureSceneIDREF>CS1</captureSceneIDREF>
                <spatialInformation>
                    <captureArea>
                            <bottomLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomLeft>
                            <bottomRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>9.0</z>
                            </bottomRight>
                            <topLeft>
                            <x>-3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topLeft>
                            <topRight>
                            <x>3.0</x>
                            <y>20.0</y>
                            <z>11.0</z>
                            </topRight>
                    </captureArea>
                </spatialInformation>
                <content>
                    <mediaCaptureIDREF>VC3</mediaCaptureIDREF>
                    <mediaCaptureIDREF>VC5</mediaCaptureIDREF>
                    <mediaCaptureIDREF>VC6</mediaCaptureIDREF>
                </content>
                <maxCaptures exactNumber="true">3</maxCaptures>
                <encGroupIDREF>EG0</encGroupIDREF>
                <description lang="en">big picture of the current
                speaker + pips about previous speakers</description>
                <priority>3</priority>
                <lang>it</lang>
                <mobility>static</mobility>
                <view>individual</view>
            </mediaCapture>
        </ns2:mediaCaptures>
        <ns2:encodingGroups>
            <encodingGroup encodingGroupID="EG0">
                <maxGroupBandwidth>600000</maxGroupBandwidth>
                <encodingIDList>
                    <encodingID>ENC1</encodingID>
                    <encodingID>ENC2</encodingID>
                    <encodingID>ENC3</encodingID>
                </encodingIDList>
            </encodingGroup>
            <encodingGroup encodingGroupID="EG1">
                <maxGroupBandwidth>300000</maxGroupBandwidth>
                <encodingIDList>
                    <encodingID>ENC4</encodingID>
                    <encodingID>ENC5</encodingID>
                </encodingIDList>
            </encodingGroup>
        </ns2:encodingGroups>
        <ns2:captureScenes>
            <captureScene scale="unknown" sceneID="CS1">
                <sceneViews>
                    <sceneView sceneViewID="SE1">
                        <description lang="en">participants' individual
                        videos</description>
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC0</mediaCaptureIDREF>
                            <mediaCaptureIDREF>VC1</mediaCaptureIDREF>
                            <mediaCaptureIDREF>VC2</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE2">
                        <description lang="en">loudest segment of the
                        room</description>
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC3</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE5">
                        <description lang="en">loudest segment of the
                        room + pips</description>
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC7</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE4">
                        <description lang="en">room audio</description>
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>AC0</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                    <sceneView sceneViewID="SE3">
                        <description lang="en">room video</description>
                        <mediaCaptureIDs>
                            <mediaCaptureIDREF>VC4</mediaCaptureIDREF>
                        </mediaCaptureIDs>
                    </sceneView>
                </sceneViews>
            </captureScene>
        </ns2:captureScenes>
        <ns2:simultaneousSets>
            <simultaneousSet setID="SS1">
                <mediaCaptureIDREF>VC3</mediaCaptureIDREF>
                <mediaCaptureIDREF>VC7</mediaCaptureIDREF>
                <sceneViewIDREF>SE1</sceneViewIDREF>
            </simultaneousSet>
            <simultaneousSet setID="SS2">
                <mediaCaptureIDREF>VC0</mediaCaptureIDREF>
                <mediaCaptureIDREF>VC2</mediaCaptureIDREF>
                <mediaCaptureIDREF>VC4</mediaCaptureIDREF>
            </simultaneousSet>
        </ns2:simultaneousSets>
        <ns2:people>
            <person personID="bob">
                <personInfo>
                    <ns3:fn>
                        <ns3:text>Bob</ns3:text>
                    </ns3:fn>
                </personInfo>
                <personType>minute taker</personType>
            </person>
            <person personID="alice">
                <personInfo>
                    <ns3:fn>
                        <ns3:text>Alice</ns3:text>
                    </ns3:fn>
                </personInfo>
                <personType>presenter</personType>
            </person>
            <person personID="ciccio">
                <personInfo>
                    <ns3:fn>
                        <ns3:text>Ciccio</ns3:text>
                    </ns3:fn>
                </personInfo>
                <personType>chairman</personType>
                <personType>timekeeper</personType>
            </person>
        </ns2:people>
   </ns2:advertisement>

10.7.  CLUE message nr. Message No. 7: 'ack'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ack xmlns="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <clueId>CP2</clueId>
       <sequenceNr>23</sequenceNr>
       <responseCode>200</responseCode>
       <reasonString>Success</reasonString>
       <advSequenceNr>13</advSequenceNr>
   </ack>

10.8.  CLUE message nr. Message No. 8: 'configure'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:configure xmlns="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <ns2:clueId>CP2</ns2:clueId>
       <ns2:sequenceNr>24</ns2:sequenceNr>
       <ns2:advSequenceNr>13</ns2:advSequenceNr>
       <ns2:captureEncodings>
                  <captureEncoding ID="ce123">
                           <captureID>AC0</captureID>
                           <encodingID>ENC4</encodingID>
                   </captureEncoding>
                   <captureEncoding ID="ce456">
                           <captureID>VC7</captureID>
                           <encodingID>ENC1</encodingID>
                           <configuredContent>
                                   <sceneViewIDREF>SE5</sceneViewIDREF>
                           </configuredContent>
                   </captureEncoding>
        </ns2:captureEncodings>
   </ns2:configure>

10.9.  CLUE message nr. Message No. 9: 'confResponse'

   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:configureResponse xmlns="urn:ietf:params:xml:ns:clue-info"
    xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
    xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
    http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    protocol="CLUE" v="2.7">
       <ns2:clueId>CP1</ns2:clueId>
       <ns2:sequenceNr>14</ns2:sequenceNr>
       <ns2:responseCode>200</ns2:responseCode>
       <ns2:reasonString>Success</ns2:reasonString>
       <ns2:confSequenceNr>24</ns2:confSequenceNr>
   </ns2:configureResponse>

11.  Security Considerations

   As a general consideration, we remark would like to point out that the CLUE
   framework (and related protocol) has been conceived at from the outset
   by embracing the security-by-design paradigm.  This entails that  As a result, a number
   of requirements have been identified and properly standardized as
   mandatory within the entire set of documents associated with the CLUE
   architecture.  Requirements include: include (i) the use of cryptography and
   authentication;
   authentication, (ii) protection of all sensitive fields; fields, (iii) mutual
   authentication between CLUE endpoints; endpoints, (iv) the presence of
   authorization mechanisms; mechanisms, and (v) the presence of native defence defense
   mechanisms against malicious activities such as eavesdropping,
   selective modification, deletion, and replay (and related
   combinations thereof).  Hence, security of the single components of
   the CLUE solution cannot be evaluated independently of the integrated
   view of the final architecture.

   The CLUE protocol is an application-level protocol allowing a Media
   Producer and a Media Consumer to negotiate a variegated set of
   parameters associated with the establishment of a telepresence
   session.  This unavoidably exposes a CLUE-enabled telepresence system
   to a number of potential threats, most of which are extensively
   discussed in the CLUE framework document [I-D.ietf-clue-framework]. [RFC8845].  The
   security considerations Security
   Considerations section of the mentioned document [RFC8845] actually discusses issues
   associated with the setup and management of a telepresence session both in
   both (1) the basic case involving two CLUE endpoints acting, respectively, acting as the MP
   and the MC, respectively and in (2) the more advanced scenario
   envisaging the presence of an MCU.

   The CLUE framework document [RFC8845] also mentions that the
   information carried within CLUE protocol messages might contain
   sensitive data, which SHOULD hence be accessed only by authenticated
   endpoints.  Security issues associated with the CLUE data model
   schema are discussed in
   [I-D.ietf-clue-data-model-schema]. [RFC8846].

   There is extra information carried by the CLUE protocol that is not
   associated with the CLUE data model schema and which that exposes
   information that might be of concern.  This information is primarily
   exchanged during the negotiation phase via the 'options' and
   'optionsResponse' messages.  In the CLUE Participant state machine machine's
   OPTIONS state, both parties agree on the version and on the extensions to be
   used in the subsequent CLUE messages message exchange phase.  A malicious
   participant might either (1) try to retrieve a detailed footprint of
   a specific CLUE protocol implementation during this initial setup phase,
   phase or (2) force the communicating party to use a non-
   up-to-date version of the
   protocol which that is outdated and that they know how to break.  Indeed,
   exposing all of the supported versions and extensions could
   conceivably leak information about the specific implementation of the
   protocol.  In theory theory, an implementation could choose not to announce
   all of the versions it supports if it wants to avoid such leakage,
   though
   although this would come at the expenses expense of interoperability.  With
   respect to the above considerations, it is noted that the OPTIONS
   state is only reached after the CLUE data channel has been
   successfully set up.  This ensures that only authenticated parties
   can exchange 'options' messages and related 'optionsResponse' messages
   messages, and hence drastically reduces the attack surface that is
   exposed to malicious parties.

   The CLUE framework clearly states the requirement to protect CLUE
   protocol messages against threats deriving from the presence of a
   malicious agent capable to gain of gaining access to the CLUE data channel.
   Such a requirement is met by the CLUE data channel solution described
   in [I-D.ietf-clue-datachannel], [RFC8850], which ensures protection from both message recovery and
   message tampering.  With respect to this last point, any
   implementation of the CLUE protocol compliant with the CLUE
   specification MUST rely on the exchange of messages that flow on top
   of a reliable and ordered SCTP over DTLS SCTP-over-DTLS transport channel connecting
   two CLUE Participants.

12.  IANA Considerations

   This document registers a new XML namespace, a new XML schema schema, and
   the
   MIME media type for the schema.  This document also registers the
   "CLUE" Application Service tag and the "CLUE" Application Protocol
   tag and defines registries for the CLUE messages and response codes.

12.1.  URN Sub-Namespace Registration

   This section registers a new XML namespace,
   ""urn:ietf:params:xml:ns:clue-protocol"".
   "urn:ietf:params:xml:ns:clue-protocol".

   URI:  urn:ietf:params:xml:ns:clue-protocol

   Registrant Contact:  IESG (iesg@ietf.org).

   XML:

   BEGIN

   <CODE BEGINS>
    <?xml version="1.0"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns="https://www.w3.org/1999/xhtml" xml:lang="en">
      <head>
        <title>CLUE Messages</title>
      </head>
      <body>
        <h1>Namespace for CLUE Messages</h1>
        <h2>urn:ietf:params:xml:ns:clue-protocol</h2>
   [[NOTE TO IANA/RFC-EDITOR: Please update RFC URL and replace XXXX
       with the RFC number for this specification.]]
        <p>See <a href="[[RFC URL]]">
           RFCXXXX</a>.</p> href="https://www.rfc-editor.org/rfc/rfc8847.txt">
           RFC 8847</a>.</p>
      </body>
    </html>
   END
   <CODE ENDS>

12.2.  XML Schema registration Registration

   This section registers an XML schema per the guidelines in [RFC3688].

   URI:  urn:ietf:params:xml:schema:clue-protocol

   Registrant Contact:  IESG (iesg@ietf.org).

   Schema:  The XML for this schema can be found as the entirety of in Section 9 of this
      document.

12.3.  MIME  Media Type Registration for 'application/clue+xml' "application/clue+xml"

   This section registers the ""application/clue+xml"" MIME "application/clue+xml" media type.

   To:  ietf-types@iana.org

   Subject:  Registration of MIME media type application/clue+xml

   MIME media "application/clue+xml"

   Media type name:  application

   MIME subtype

   Subtype name:  clue+xml

   Required parameters:  (none)

   Optional parameters: charset  charset.  Same as the charset parameter of
      "application/xml" as specified in [RFC7303], Section 3.2.

   Encoding considerations:  Same as the encoding considerations of
      "application/xml" as specified in [RFC7303], Section 3.2.

   Security considerations:  This content type is designed to carry
      protocol data related to telepresence session control.  Some of
      the data could be considered private.  This media type does not
      provide any protection and thus protection; thus, other mechanisms mechanisms, such as those
      described in Section Security 11 of this document, are required to protect
      the data.  This media type does not contain executable content.

   Interoperability considerations:  None.

   Published specification:  RFC XXXX [[NOTE TO IANA/RFC-EDITOR: Please
   replace XXXX with the RFC number for this specification.]] 8847

   Applications that use this media type:  CLUE participants. Participants.

   Additional Information:

      Magic Number(s): (none),  (none)
      File extension(s): .xml,  .xml
      Macintosh File Type Code(s): TEXT.  TEXT

   Person & email address to contact for further information:  Simon
      Pietro Romano (spromano@unina.it).

   Intended usage:  LIMITED USE

   Author/Change controller:  The IETF

   Other information:  This media type is a specialization of
      application/xml [RFC7303], and many of the considerations
      described there also apply to application/clue+xml.

12.4.  CLUE Protocol Registry

   The document requests that the

   Per this document, IANA creates has created new registries for CLUE messages
   and response codes.

12.4.1.  CLUE Message Types

   The following summarizes the registry for CLUE messages:

   Related Registry:  CLUE Message Types Registry

   Defining RFC:  RFC XXXX [[NOTE TO IANA/RFC-EDITOR: Please replace XXXX
   with the RFC number for this specification.]] 8847

   Registration/Assignment Procedures:  Following the policies outlined
      in [RFC8126], the IANA policy for assigning new values for the
      CLUE message types for the CLUE protocol is Specification
      Required.

   Registrant Contact:  IESG (iesg@ietf.org).

   The initial Message table of CLUE messages is populated using the CLUE
   messages described in Section 5 and defined in the XML schema in
   Section 9.

   +-------------------+-----------------------------------+-----------+

   +===================+===================================+===========+
   | Message           | Description                       | Reference |
   +-------------------+-----------------------------------+-----------+
   +===================+===================================+===========+
   | options           | Sent by the CI to the CR in the   | RFCXXXX RFC 8847  |
   |                   | initiation phase to specify the   |           |
   |                   | roles played by the CI, the       |           |
   |                   | supported versions versions, and the       |           |
   |                   | supported extensions.             |           |
   +-------------------+-----------------------------------+-----------+
   | optionsResponse   | Sent by the CI to the CR in reply       | RFCXXXX RFC 8847  |
   |                   | reply to an 'options' message to     |           |
   |                   | to finally estabilsh establish the version and          |           |
   |                   | the version and extensions to be      |           |
   |                   | used in the following CLUE        |           |
   |                   | following CLUE messages exchange.                |           |
   +-------------------+-----------------------------------+-----------+
   | advertisement     | Sent by the MP to the MC to       | RFCXXXX RFC 8847  |
   |                   | specify the telepresence          |           |
   |                   | capabilities of the MP expressed            |           |
   |                   | expressed according to the CLUE   |           |
   |                   | framework.                        |           |
   +-------------------+-----------------------------------+-----------+
   | ack               | Sent by the MC to the MP to       | RFCXXXX RFC 8847  |
   |                   | acknowledge the reception of an   |           |
   |                   | 'advertisement' message.          |           |
   +-------------------+-----------------------------------+-----------+
   | configure         | Sent by the MC to the MP to       | RFCXXXX RFC 8847  |
   |                   | specify the desired media         |           |
   |                   | captures among those specified in    |           |
   |                   | in the 'advertisement'.           |           |
   +-------------------+-----------------------------------+-----------+
   | configureResponse | Sent by the MP to the MC in reply       | RFCXXXX RFC 8847  |
   |                   | reply to a CONFIGURE 'configure' message to    |           |
   |                   | to communicate if the configuration whether or not     |           |
   |                   | the configuration request has been successfully     |           |
   |                   | processed or not. been successfully processed.      |           |
   +-------------------+-----------------------------------+-----------+

                                 IANA-CLUE

                Table 2: Initial IANA Table of CLUE Messages

12.4.2.  CLUE Response Codes

   The following summarizes the requested registry for CLUE response
   codes:

   Related Registry:  CLUE Response Code Registry Codes

   Defining RFC:  RFC XXXX [[NOTE TO IANA/RFC-EDITOR: Please replace XXXX
   with the RFC number for this specification.]] 8847

   Registration/Assignment Procedures:  Following the policies outlined
      in [RFC8126], the IANA policy for assigning new values for the
   Response
      response codes for CLUE shall be is Specification Required.

   Registrant Contact:  IESG (iesg@ietf.org).

   The initial Response-code table of CLUE response codes is populated using the Response
   response codes defined in Section 5.7 as follows:

   +--------+---------------+------------------------------+-----------+

    +========+===============+===========================+===========+
    | Number | Default       | Description               | Reference |
    |        | Response      |                              |           |
   |        | Reason String |                           |           |
   +--------+---------------+------------------------------+-----------+
    +========+===============+===========================+===========+
    | 200    | Success       | The request has been      | RFCXXXX RFC 8847  |
    |        |               | successfully processed.   |           |
    +--------+---------------+---------------------------+-----------+
    | 300    | Low-level     | A generic low-level request       | RFCXXXX RFC 8847  |
    |        | request error | request error has occurred.         |           |
    |        | error.               | occurred.                 |           |
    +--------+---------------+---------------------------+-----------+
    | 301    | Bad syntax    | The XML syntax of the     | RFCXXXX RFC 8847  |
    |        |               | message is not correct.   |           |
    +--------+---------------+---------------------------+-----------+
    | 302    | Invalid value | The message contains an   | RFCXXXX RFC 8847  |
    |        |               | invalid parameter value.  |           |
    +--------+---------------+---------------------------+-----------+
    | 303    | Conficting Conflicting   | The message contains values      | RFCXXXX RFC 8847  |
    |        | values        | values that cannot be used     |           |
    |        |               | used together.            |           |
    +--------+---------------+---------------------------+-----------+
    | 400    | Semantic      | Semantic errors in the    | RFCXXXX RFC 8847  |
    |        | errors        | received CLUE protocol    |           |
    |        |               | message.                  |           |
    +--------+---------------+---------------------------+-----------+
    | 401    | Version not   | The protocol version used in | RFCXXXX RFC 8847  |
    |        | supported     | in the message is not     |           |
    |        |               | supported.                |           |
    +--------+---------------+---------------------------+-----------+
    | 402    | Invalid       | Sequence number gap;      | RFCXXXX RFC 8847  |
    |        | sequencing    | repeated sequence number; |           |
    |        |               | sequence number outdated. |           |
    +--------+---------------+---------------------------+-----------+
    | 403    | Invalid       | The clueId used in the    | RFCXXXX RFC 8847  |
    |        | identifier    | message is not valid invalid or     |           |
    |        |               | unknown.                  |           |
    +--------+---------------+---------------------------+-----------+
    | 404    | advertisement Advertisement | The sequence number of the    | RFCXXXX RFC 8847  |
    |        | Expired expired       | the advertisement the configure     |           |
    |        |               | 'configure' message       |           |
    |        |               | refers to is out of date. |           |
    +--------+---------------+---------------------------+-----------+
    | 405    | Subset choice | The subset choice is not  | RFCXXXX RFC 8847  |
    |        | not allowed   | allowed for the specified |           |
    |        |               | Multiple Content Capture. |           |
   +--------+---------------+------------------------------+-----------+
    +--------+---------------+---------------------------+-----------+

            Table 3: Initial IANA Table of CLUE Response Codes

13.  Acknowledgments

   The authors thank all the CLUErs for their precious feedbacks and
   support, in particular Paul Kyzivat, Christian Groves and Scarlett
   Liuyan.

14.  References

14.1.

13.1.  Normative References

   [I-D.ietf-clue-data-model-schema]
              Presta, R. and S. Romano, "An XML Schema for the CLUE data
              model", draft-ietf-clue-data-model-schema-17 (work in
              progress), August 2016.

   [I-D.ietf-clue-datachannel]
              Holmberg, C., "CLUE Protocol data channel", draft-ietf-
              clue-datachannel-18 (work in progress), April 2019.

   [I-D.ietf-clue-framework]
              Duckworth, M., Pepperell, A., and S. Wenger, "Framework
              for Telepresence Multi-Streams", draft-ietf-clue-
              framework-25 (work in progress), January 2016.

   [I-D.ietf-clue-signaling]
              Hansen, R., Kyzivat, P., Xiao, L., and C. Groves, "Session
              Signaling for Controlling Multiple Streams for
              Telepresence (CLUE)", draft-ietf-clue-signaling-14 (work
              in progress), October 2018.

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

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

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January 2004,
              <https://www.rfc-editor.org/info/rfc3688>.

   [RFC7303]  Thompson, H. and C. Lilley, "XML Media Types", RFC 7303,
              DOI 10.17487/RFC7303, July 2014,
              <https://www.rfc-editor.org/info/rfc7303>.

   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
              Writing an IANA Considerations Section in RFCs", BCP 26,
              RFC 8126, DOI 10.17487/RFC8126, June 2017,
              <https://www.rfc-editor.org/info/rfc8126>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

14.2.

   [RFC8845]  Duckworth, M., Ed., Pepperell, A., and S. Wenger,
              "Framework for Telepresence Multi-Streams", RFC 8845,
              DOI 10.17487/RFC8845, June 2020,
              <https://www.rfc-editor.org/info/rfc8845>.

   [RFC8846]  Presta, R. and S P. Romano, "An XML Schema for the
              ControLling mUltiple streams for tElepresence (CLUE) Data
              Model", RFC 8846, DOI 10.17487/RFC8846, June 2020,
              <https://www.rfc-editor.org/info/rfc8846>.

   [RFC8848]  Hanton, R., Kyzivat, P., Xiao, L., and C. Groves, "Session
              Signaling for Controlling Multiple Streams for
              Telepresence (CLUE)", RFC 8848, DOI 10.17487/RFC8848, June
              2020, <https://www.rfc-editor.org/info/rfc8848>.

   [RFC8850]  Holmberg, C., "Controlling Multiple Streams for
              Telepresence (CLUE) Protocol Data Channel", RFC 8850,
              DOI 10.17487/RFC8850, June 2020,
              <https://www.rfc-editor.org/info/rfc8850>.

   [W3C.REC-xml-20081126]
              Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
              F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
              Edition)", World Wide Web Consortium Recommendation REC-
              xml-20081126, November 2008,
              <https://www.w3.org/TR/2008/REC-xml-20081126>.

13.2.  Informative References

   [RFC1122]  Braden, R., Ed., "Requirements for Internet Hosts -
              Communication Layers", STD 3, RFC 1122,
              DOI 10.17487/RFC1122, October 1989,
              <https://www.rfc-editor.org/info/rfc1122>.

   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
              A., Peterson, J., Sparks, R., Handley, M., and E.
              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
              DOI 10.17487/RFC3261, June 2002,
              <https://www.rfc-editor.org/info/rfc3261>.

   [RFC4353]  Rosenberg, J., "A Framework for Conferencing with the
              Session Initiation Protocol (SIP)", RFC 4353,
              DOI 10.17487/RFC4353, February 2006,
              <https://www.rfc-editor.org/info/rfc4353>.

   [RFC6120]  Saint-Andre, P., "Extensible Messaging and Presence
              Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120,
              March 2011, <https://www.rfc-editor.org/info/rfc6120>.

   [RFC7262]  Romanow, A., Botzko, S., and M. Barnes, "Requirements for
              Telepresence Multistreams", RFC 7262,
              DOI 10.17487/RFC7262, June 2014,
              <https://www.rfc-editor.org/info/rfc7262>.

   [RFC7667]  Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667,
              DOI 10.17487/RFC7667, November 2015,
              <https://www.rfc-editor.org/info/rfc7667>.

Acknowledgements

   The authors thank all the CLUErs for their precious feedback and
   support -- in particular, Paul Kyzivat, Christian Groves, and
   Scarlett Liuyan.

Authors' Addresses

   Roberta Presta
   University of Napoli
   Via Claudio 21
   Napoli
   80125 Napoli
   Italy

   EMail:

   Email: roberta.presta@unina.it

   Simon Pietro Romano
   University of Napoli
   Via Claudio 21
   Napoli
   80125 Napoli
   Italy

   EMail:

   Email: spromano@unina.it