<?xmlversion="1.0"?>version='1.0' encoding='utf-8'?> <!DOCTYPE rfc SYSTEM"rfc2629.dtd"> <?rfc toc="yes" ?> <?rfc compact="yes" ?> <?rfc subcompact="no"?> <?rfc sortrefs="yes" ?> <?rfc symrefs="yes" ?> <?rfc rfcedstyle="yes" ?>"rfc2629-xhtml.ent"> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-clue-protocol-19" number="8847" submissionType="IETF"consensus="yes"consensus="true" category="exp"ipr="trust200902">ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3"> <!-- xml2rfc v2v3 conversion 2.38.1 --> <front> <titleabbrev="draft-ietf-clue-protocol-19">abbrev="CLUE"> Protocol for Controlling Multiple Streams for Telepresence (CLUE) </title> <seriesInfo name="RFC" value="8847"/> <author initials="R." surname="Presta" fullname="Roberta Presta"> <organization>University of Napoli</organization> <address> <postal> <street>Via Claudio 21</street> <code>80125</code> <city>Napoli</city> <country>Italy</country> </postal> <email>roberta.presta@unina.it</email> </address> </author> <authorinitials="S." surname="P. Romano"initials="S P." surname="Romano" fullname="Simon Pietro Romano"> <organization>University of Napoli</organization> <address> <postal> <street>Via Claudio 21</street> <code>80125</code> <city>Napoli</city> <country>Italy</country> </postal> <email>spromano@unina.it</email> </address> </author> <datemonth="July" year="2019"/> <area>ART</area> <workgroup>CLUE Working Group</workgroup> <!-- [rfced] Please insert any keywords (beyond those that appear in the title) for use on http://www.rfc-editor.org/rfcsearch.html. -->month="January" year="2021"/> <keyword>CLUE</keyword> <keyword>Telepresence</keyword> <keyword>Protocol</keyword> <keyword>Framework</keyword> <abstract> <t><!--TheCLUE protocol is an application protocol conceivedControlling Multiple Streams forthe description and negotiation of a CLUE telepresence session. The design of the CLUE protocol takes into account the requirements and the framework defined, respectively, in <xref target="I-D.ietf-clue-framework"/> and <xref target="RFC7262"/>. The companion document <xref target="I-D.ietf-clue-signaling"/> delves into CLUE signaling details, as well as on the SIP/SDP session establishment phase. CLUE messages flow upon the CLUE data channel, based on reliable and ordered SCTP over DTLS transport, as described in <xref target="I-D.ietf-clue-datachannel"/>. Message details, together with the behavior of CLUE Participants acting as Media Providers and/or Media Consumers, are herein discussed. --> The CLUETelepresence (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 CLUEworking group.Working Group. A companiondocumentdocument, RFC 8848, delves into CLUE signalingdetails,details as well asontheSIP/SDPSIP / Session Description Protocol (SDP) session establishment phase. CLUE messages flow over the CLUE data channel, based on reliable and orderedSCTP over DTLSSCTP-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. </t> </abstract> </front> <middle><!-- Introduction --><sectiontitle="Introduction" anchor="sec-intro">anchor="sec-intro" numbered="true" toc="default"> <name>Introduction</name> <t> TheCLUEControlling 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 protocolare: <list style="numbers"> <t>are as follows: </t> <ol spacing="normal" type="1"> <li> 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, simultaneityconstraintsconstraints, and other information defined in <xreftarget="I-D.ietf-clue-framework"/>; </t> <t>enablingtarget="RFC8845" format="default"/>. </li> <li>enabling an MC to request the desired multimedia streams from the offeringMP.</t> </list> </t>MP.</li> </ol> <t> CLUE-capable endpoints are connected by means of the CLUE datachannel,channel -- anSCTP over DTLSSCTP-over-DTLS channel that is opened and established as described in <xreftarget="I-D.ietf-clue-signaling"/>target="RFC8848" format="default"/> and <xreftarget="I-D.ietf-clue-datachannel"/>.target="RFC8850" format="default"/>. ("SCTP" stands for "Stream Control Transmission Protocol".) CLUE protocol messages flowing over such a channel are detailed in this document, both syntactically and semantically. </t> <t> In <xreftarget="sec-overview"/>target="sec-overview" format="default"/>, we provide a general overview of the CLUE protocol. CLUE protocol messages are detailed in <xreftarget="sec-messages"/>.target="sec-messages" format="default"/>. The CLUEProtocolprotocol state machines are introduced in <xreftarget="sec-sm"/>.target="sec-sm" format="default"/>. Versioning and extensions are discussed in<xref target="sec-versioning"/>Sections <xref target="sec-versioning" format="counter"/> and <xreftarget="sec-ext"/>,target="sec-ext" format="counter"/>, respectively. The XML schema <xref target="W3C.REC-xml-20081126"/> defining the CLUE messages isreportedprovided in <xreftarget="sec-schema"/>.target="sec-schema" format="default"/>. </t> </section><!-- Terminology --><sectiontitle="Terminology" anchor="sec-teminology"> <t> Thisanchor="sec-teminology" numbered="true" toc="default"> <name>Terminology</name> <t>This document refers tothe sameterminology that is also used in <xreftarget="I-D.ietf-clue-framework"/>target="RFC8845" format="default"/> andin<xreftarget="RFC7262"/>. We briefly recall herein some of the maintarget="RFC7262" format="default"/>. For convenience, we list those termsused in the document.below. The definition of "CLUEParticipant" herein proposed is not importedParticipant", as also listed below, originates fromany of the above documents. </t> <t> <list style="hanging"> <t hangText="Capture Encoding:">Athis document.</t> <dl newline="false" spacing="normal"> <dt>Capture Encoding:</dt> <dd>A specific encoding of a Media Capture, to be sent via RTP <xreftarget="RFC3550"/>.</t> <t hangText="CLUEtarget="RFC3550" format="default"/>.</dd> <dt>CLUE Participant(CP):">(CP):</dt> <dd> 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.</t> <t hangText="CLUE-capable device:"></dd> <dt>CLUE-capable device:</dt> <dd> A device that (1) supports the CLUE data channel <xreftarget="I-D.ietf-clue-datachannel"/>,target="RFC8850" format="default"/>, the CLUEprotocolprotocol, and the principles of CLUEnegotiation,negotiation andseeks(2) seeks CLUE-enabled calls.</t> <t hangText="Endpoint:">A</dd> <dt>Endpoint:</dt> <dd>A CLUE-capable device that is the logical point of final termination through receiving,decodingdecoding, 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 participant (as described in <xreftarget="RFC4353"/> Participant (which,target="RFC4353" format="default"/>) that, in turn, includes exactly one user agent <xref target="RFC3261"/> User Agent).format="default"/>. Endpoints can be anything from multiscreen/multicamera rooms to handheld devices.</t> <t hangText="Multipoint</dd> <dt>Multipoint Control Unit(MCU):">a(MCU):</dt> <dd>A CLUE-capable device that connects two or more endpoints together into one single multimedia conference <xreftarget="RFC7667"/>.target="RFC7667" format="default"/>. An MCU includesana mixer (as defined in <xreftarget="RFC4353"/>-like Mixer,target="RFC4353" format="default"/>), without the<xref target="RFC4353"/>requirement per <xref target="RFC4353" format="default"/> to send media to eachparticipant.</t> <t hangText="Media:"> Anyparticipant.</dd> <dt>Media:</dt> <dd>Any data that, after suitable encoding, can be conveyed over RTP, including audio,videovideo, or timedtext.</t> <t hangText="Media Capture:">atext.</dd> <dt>Media Capture:</dt> <dd>A source ofMedia, such asmedia -- for example, from one or more Capture Devices or constructed from other Mediastreams.</t> <t hangText="Mediastreams.</dd> <dt>Media Consumer(MC):">A CLUE Participant(MC):</dt> <dd>A CP (i.e., an Endpoint or an MCU) able to receive CaptureEncodings.</t> <t hangText="MediaEncodings.</dd> <dt>Media Provider(MP):">A CLUE Participant(MP):</dt> <dd>A CP (i.e., an Endpoint or an MCU) able to send CaptureEncodings.</t> <t hangText="Stream:">aEncodings.</dd> <dt>Stream:</dt> <dd>A Capture Encoding sent froma Media Provideran MP toa Media Consumeran MC via RTP <xreftarget="RFC3550"/>.</t> </list> </t>target="RFC3550" format="default"/>.</dd> </dl> </section> <sectiontitle="Conventions"> <t> Thenumbered="true" toc="default"> <name>Conventions</name> <t>The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xreftarget="RFC2119"></xref>target="RFC2119"/> <xreftarget="RFC8174"></xref>target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere. <!-- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 <xref target="RFC2119"></xref>. --> </t> </section> <!-- Overview of the protocol architecture --> <section title="Overview of the CLUE protocol" anchor="sec-overview"> <t>here.</t> </section> <section anchor="sec-overview" numbered="true" toc="default"> <name>Overview of the CLUE Protocol</name> <t> The CLUE protocol is conceived to enable CLUE telepresence sessions. It is designedin orderto addressSDPSession 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 usingSDPSDP, 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 <xreftarget="I-D.ietf-clue-framework"/>target="RFC8845" format="default"/> and formally defined and described in the CLUE data model document <xreftarget="I-D.ietf-clue-data-model-schema"/>.target="RFC8846" format="default"/>. The CLUE protocol represents the mechanism for the exchange of telepresence information betweenCLUE Participants.CPs. It mainly provides the messages to enablea Media Provideran MP to advertise its telepresence capabilities and to enablea Media Consumeran MC to select the desired telepresence options. </t> <t> The CLUE protocol, as defined inthe following,this document and further described below, is astateful, client-server,stateful client-server XML-based application protocol. CLUE protocol messages flow on a reliable and orderedSCTP over DTLSSCTP-over-DTLS transport channel connecting twoCLUE Participants.CPs. Messages carry information taken from the XML-based CLUE data model(<xref target="I-D.ietf-clue-data-model-schema"/>).<xref target="RFC8846" format="default"/>. Three main communication phases can be identified:<list style="numbers"> <t> Establishment</t> <dl newline="true" spacing="normal"> <dt>Establishment of the CLUE datachannel: inchannel:</dt> <dd>In this phase, the CLUE data channel setup takes place. If it completes successfully, the CPs are able to communicate and start the initiationphase. </t> <t> Negotiationphase.</dd> <dt>Negotiation of the CLUE protocol version and extensions (initiationphase): thephase):</dt> <dd>The CPs connected via the CLUE data channel agree on the protocol version andon theextensions 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 extensionsnegotiationcan 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 CLUEMC. </t> <t>MC.</dd> <dt>Description and negotiation of CLUE telepresencecapabilities description and negotiation: incapabilities:</dt> <dd>In this phase, the MP-MC dialogues take place on the data channel by means of the CLUE protocolmessages. </t> </list> </t>messages.</dd> </dl> <t> As soon as the channel is ready, theCLUE ParticipantsCPs 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 versionnumber (single digit),number, both unsigned integers, separated by a dot. While minor version numbers denotebackward compatiblebackward-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 <xreftarget="sec-versioning"/>target="sec-versioning" format="default"/> 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. </t> <t> After the negotiation phase is completed,CLUE ParticipantsCPs describe and agree on the media flows to be exchanged. In manycasescases, CPs will seek to both transmit and receive media.HenceHence, in a call between twoCPs,CPs (e.g., CPs A andB,B), there would be two separate message exchange sequences, as follows: </t><t> <list style="numbers"> <t>the<ol spacing="normal" type="1"> <li>the one needed to describe and set up the media streams sent from A to B, i.e., the dialogue between A'sMedia ProviderMP side and B'sMedia Consumer side</t> <t>theMC side.</li> <li>the one needed to describe and set up the media streams sent from B to A, i.e., the dialogue between B'sMedia ProviderMP side and A'sMedia Consumer side</t> </list> </t>MC side.</li> </ol> <t> CLUE messages for the media session description and negotiation are designed by considering the MP sideasto 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. </t> <t> 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 <xreftarget="I-D.ietf-clue-framework"/>.target="RFC8845" format="default"/>. The CLUE message conveying the MP's multimedia offer is the 'advertisement' message. Such a message leverages the XML data model definitions provided in <xreftarget="I-D.ietf-clue-data-model-schema"/>.target="RFC8846" format="default"/>. </t> <t> 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'. </t> <t> Besides 'advertisement' and 'configure', other messages have been conceived in order to provide alltheneeded mechanisms and operations. Such messages are detailed in the following sections. </t> </section> <sectiontitle="Protocol messages" anchor="sec-messages">anchor="sec-messages" numbered="true" toc="default"> <name>Protocol Messages</name> <t> CLUE protocol messages aretextual,textual XML-based messages that enable the configuration of the telepresence session. The formal definition of such messages is provided in the XMLSchema provided at the end of this document (<xref target="sec-schema"/>).schema in <xref target="sec-schema" format="default"/>. This section includes non-normative excerpts of the schema to aid in describing it. </t> <t> The XML definitions of the CLUE information provided in <xreftarget="I-D.ietf-clue-data-model-schema"/>target="RFC8846" format="default"/> are included within some CLUE protocol messages (namely the 'advertisement' andthe'configure' messages), in order to use the concepts defined in <xreftarget="I-D.ietf-clue-framework"/>.target="RFC8845" format="default"/>. </t> <t> The CLUE protocol messages arethe following: </t> <t> <list style="symbols"> <t>options</t> <t>optionsResponse</t> <t>advertisement</t> <t>ack</t> <t>configure</t> <t>configureResponse</t> </list>as follows: </t> <ul spacing="normal"> <li>options</li> <li>optionsResponse</li> <li>advertisement</li> <li>ack</li> <li>configure</li> <li>configureResponse</li> </ul> <t> 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 CLUEMedia ProviderMP and a ClueMedia Consumer.MC. </t> <t> Each CLUE message inherits a basicstructurestructure, as depicted in the following excerpt (<xreftarget="fig:message"/>):target="fig_message" format="default"/>): </t><t><figurealign="center" title = "Structureanchor="fig_message"> <name>Structure of a CLUEmessage" anchor="fig:message"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <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> ]]> </artwork></xs:simpleType>]]></sourcecode> </figure></t><t> The information contained in each CLUE messageis:is as follows: </t><t> <list style="symbols"> <t>clueId: an<dl spacing="normal"> <dt>clueId:</dt><dd>An optional XML element containing the identifier (in the form of a generic string) of the CP within the telepresencesystem;</t> <t>sequenceNr: ansystem.</dd> <dt>sequenceNr:</dt><dd>An XML element containing the local message sequence number. The senderMUST<bcp14>MUST</bcp14> increment the sequencenumbersnumber by one for each new message sent, and the receiverMUST<bcp14>MUST</bcp14> 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 eachparty;</t> <t>protocol: aparty.</dd> <dt>protocol:</dt><dd>A mandatory attribute set to "CLUE", identifying theprocotolprotocol the messages referto;</t> <t>v: ato.</dd> <dt>v:</dt><dd>A mandatory attribute carrying the version of the protocol. The content of the "v" attribute is composedbyof 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 valuesareof this kindare, e.g.,are "1.3", "2.0","20.44""20.44", etc. This document describes version1.0. </t> </list> </t>1.0.</dd> </dl> <t> 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(ii) one for the messages sent as an MP (if it is acting asaan MP), and (iii) one for the messages sent as an MC (if it is acting asaan MC). </t> <t> In particular, CLUE response messages ('optionsResponse', 'ack', 'configureResponse') derive from a base type, inheriting from the clueMessageType, which is defined as follows (<xreftarget="fig:clue_response"/>):target="fig_clue_response" format="default"/>): </t><t><figurealign="center" title = "Structureanchor="fig_clue_response"> <name>Structure of CLUEresponse messages" anchor="fig:clue_response"> <artwork> <![CDATA[Response Messages</name> <sourcecode name="" type="xml"><![CDATA[ <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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t><t> The elements <responseCode> and <reasonString>getare populated as detailed in <xreftarget="sec-resp-codes"/>target="sec-resp-codes" format="default"/>. </t> <sectiontitle="options" anchor="subsec-options">anchor="subsec-options" numbered="true" toc="default"> <name>'options'</name> <t> The 'options' message is sent by theCLUE ParticipantCP that is theChannel InitiatorCI to theCLUE ParticipantCP that is theChannel ReceiverCR as soon as the CLUE data channel is ready. Besides the information envisioned in the basic structure, it specifies: </t><t> <list style="symbols"> <t><mediaProvider>: a<dl spacing="normal"> <dt><mediaProvider>:</dt> <dd>A mandatory boolean field set to "true" if the CP is able to act asa MP</t> <t><mediaConsumer>: aan MP.</dd> <dt><mediaConsumer>:</dt> <dd>A mandatory boolean field set to "true" if the CP is able to act asa MC</t> <t><supportedVersions>: thean MC.</dd> <dt><supportedVersions>:</dt> <dd>The list ofthesupportedversions</t> <t><supportedExtensions>: theversions.</dd> <dt><supportedExtensions>:</dt> <dd>The list ofthesupportedextensions</t> </list> </t>extensions.</dd> </dl> <t> The XMLSchemaschema of such a message isreportedshown below (<xreftarget="fig:options"/>):target="fig_options" format="default"/>): </t><t><figurealign="center" title = "Structureanchor="fig_options"> <name>Structure of a CLUE 'options'message" anchor="fig:options"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <!-- 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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t><t> <supportedVersions> contains the list oftheversions that are supported by the CI, each one represented in a child <version> element. The content of each <version> element is a string madebyof 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> elementMUST<bcp14>MUST</bcp14> 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>tagelement in the 'options' message, it means the CI supports only major version 3 with alltheminor versionscomprised betweenfrom 3.0and 3.4, with version 3.4 included.through 3.4. Ifa <supportedVersion><supportedVersions> is provided, at least one <version>tag MUSTelement <bcp14>MUST</bcp14> be included. In this case, the "v" attributeSHOULD<bcp14>SHOULD</bcp14> 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 bothbackwardsbackward andforwards compatible, but itforward 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.</t> <t> 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 protocolwhichthat the extension refers to. </t> </section> <sectiontitle="optionsResponse" anchor="subsec-options-response">anchor="subsec-options-response" numbered="true" toc="default"> <name>'optionsResponse'</name> <t> The 'optionsResponse' (<xreftarget="fig:options_response"/>)target="fig_options_response" format="default"/>) 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 responseMUST<bcp14>MUST</bcp14> also include <mediaProvider>, <mediaConsumer>,<version><version>, and <commonExtensions> elements; itMAY<bcp14>MAY</bcp14> include them for any other response code.<mediaProvider> <mediaProvider> and <mediaConsumer> elements (which are of a boolean nature) are associated with the supported roles (in termsof, respectivelyof the MP andMC),the MC, respectively), similarly to what the CI does in the 'options' message. The <version>fieldelement indicates the highest commonly supported version number. The content of the <version> elementMUST<bcp14>MUST</bcp14> 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.element. </t><t><figurealign="center" title = "Structureanchor="fig_options_response"> <name>Structure of a CLUE 'optionsResponse'message" anchor="fig:options_response"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <!-- 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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t><t> Upon reception of the'optionsResponse''optionsResponse', the version to be used is the one provided in the <version>tagelement of the message. Thefollowingsubsequent CLUE messagesMUST<bcp14>MUST</bcp14> 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. </t> </section> <sectiontitle="advertisement" anchor="subsec-adv">anchor="subsec-adv" numbered="true" toc="default"> <name>'advertisement'</name> <t> 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 andtheextensions of the CLUEprotocol are agreed between the CPs.protocol. During a single CLUE session, an MP may send new 'advertisement' messages to replace the previousadvertisement,advertisement if, for instance, its CLUE telepresence media capabilities changemid-call.mid&nbhy;call. A new 'advertisement' completely replaces the previous 'advertisement'. </t> <t> The 'advertisement' structure is defined in the schema excerpt below (<xreftarget="fig:adv"/>).target="fig_adv" format="default"/>). The 'advertisement' contains elements compliant with the CLUE data model that characterize the MP's telepresence offer. Namely, such elementsare:are the listof the mediaof</t> <ul spacing="normal"> <li>media captures(<mediaCaptures>), of the encoding(<mediaCaptures>),</li> <li>encoding groups(<encodingGroups>), of the capture(<encodingGroups>),</li> <li>capture scenes(<captureScenes>), of the simultaneous(<captureScenes>),</li> <li>simultaneous sets(<simultaneousSets>), of the global(<simultaneousSets>),</li> <li>global views (<globalViews>),and of the representedand</li> <li>represented participants(<people>). Each(<people>).</li> </ul> <t>Each of them is fully described in the CLUE framework document <xref target="RFC8845" format="default"/> and formally defined in the CLUE data modeldocument.document <xref target="RFC8846" format="default"/>. </t><t><figurealign="center" title = "Structureanchor="fig_adv"> <name>Structure of a CLUE 'advertisement'message" anchor="fig:adv"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <!-- 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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t></section> <sectiontitle="ack" anchor="sec-adv-ack">anchor="sec-adv-ack" numbered="true" toc="default"> <name>'ack'</name> <t> The 'ack' message is sent byaan MC toaan MP to acknowledge an 'advertisement' message. Asitcan be seen from the message schema provided in the following excerpt (<xreftarget="fig:adv_ack"/>),target="fig_adv_ack" format="default"/>), 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. </t><t><figurealign="center" title = "Structureanchor="fig_adv_ack"> <name>Structure of a CLUE 'ack'message" anchor="fig:adv_ack"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <!-- '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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t></section> <sectiontitle="configure" anchor="sec-conf">anchor="sec-conf" numbered="true" toc="default"> <name>'configure'</name> <t> The 'configure' message is sent fromaan MC toaan MP to list the advertised captures the MC wants to receive. The MCMUST<bcp14>MUST</bcp14> 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 (<xreftarget="fig:conf"/>).target="fig_conf" format="default"/>). </t><t><figurealign="center" title = "Structureanchor="fig_conf"> <name>Structure of a CLUE 'configure'message" anchor="fig:conf"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <!-- 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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t><t> The <advSequenceNr> element contains the sequence number of the 'advertisement' message the 'configure' refers to. </t> <t> The optional <ack> element, when present, contains a success response code, as defined in <xreftarget="sec-resp-codes"/>.target="sec-resp-codes" format="default"/>. It indicates that the 'configure' message also acknowledges with success the referred advertisement('configure' + 'ack'('configure+ack' message). The <ack> elementMUST NOT<bcp14>MUST NOT</bcp14> be present if an 'ack' message (associated with the advertisement carrying that specific sequence number) hasbeenalready been sent back to the MP. </t> <t> The most important content of the 'configure' message is the list ofthecapture encodings provided in the <captureEncodings> element (see <xreftarget="I-D.ietf-clue-data-model-schema"/>target="RFC8846" format="default"/> for the definition of <captureEncodings>). Such an element contains a sequence of capture encodings, representing the streams to be instantiated. </t> </section> <sectiontitle="configureResponse" anchor="sec-conf-resp">anchor="sec-conf-resp" numbered="true" toc="default"> <name>'configureResponse'</name> <t> 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.ItAs shown in <xref target="fig_conf_resp" format="default"/>, it contains(<xref target="fig:conf_resp"/>)a response code(and optionally(and, optionally, a reason string) indicating either the success orthefailure (along with failure details) ofathe 'configure' request processing.Following, theThe <confSequenceNr>fieldelement that follows contains the sequence number of the 'configure' message the response refers to. There is no partial execution of commands. As an example, ifaan MP is able to understand all the selected capture encodings except one, then the whole command fails and nothing is instantiated. </t><t><figurealign="center" title = "Structureanchor="fig_conf_resp"> <name>Structure of a CLUE 'configureResponse'message" anchor="fig:conf_resp"> <artwork> <![CDATA[Message</name> <sourcecode name="" type="xml"><![CDATA[ <!-- '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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t></section> <sectiontitle="Response codesanchor="sec-resp-codes" numbered="true" toc="default"> <name>Response Codes andreason strings" anchor="sec-resp-codes">Reason Strings</name> <t> 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,300300, and 400 codes are the most genericonescodes in their respective categories. Further response codes can beeitherdefined either in future versions of theprotocol,protocol ordefinedby leveraging the extension mechanism. In both cases, the new response codesMUST<bcp14>MUST</bcp14> be registered with IANA. Such new response codesMUST NOT<bcp14>MUST NOT</bcp14> override theones herecodes defined in this document, and theyMUST<bcp14>MUST</bcp14> respect the semantics of the first code digit. </t> <t> 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 incompleteoperationsoperations, if necessary. Response codes starting with "5" through "9" are reserved for future major versions of the protocol to define new classes ofresponse,responses and are not allowed in major version 1 of the CLUE protocol. Response codes starting with "0" are not allowed. </t> <t> The response codes and reason strings defined for use with version 1 of the CLUE protocol are listed in <xreftarget="fig:codes"/>.target="clue-resp-codes-table" format="default"/>. The "Description" text contained in the table can be sent in the <reasonString> element of a response message. Implementations can (and are encouraged to) includemore specificdescriptions of the errorcondition,condition that are more specific, if possible. </t><t> <figure align="center" title = "CLUE response codes" anchor="fig:codes"> <artwork> <![CDATA[ +-----------------+----------------------+--------------------------+ | | | | |<table anchor="clue-resp-codes-table"> <name>CLUE Responsecode | Reason string | Description | | | | | +-----------------+----------------------+--------------------------+ | | | | | 200 | Success | TheCodes</name> <thead> <tr> <th>Response Code</th> <th>Reason String</th> <th align="center">Description</th> </tr> </thead> <tbody> <tr> <td>200</td> <td>Success</td> <td>The request has been| | | |successfullyprocessed. | | | | | +-----------------+----------------------+--------------------------+ | | | | | 300 | Low-levelprocessed.</td> </tr> <tr> <td>300</td> <td>Low-level request| Aerror</td> <td>A generic low-level| | | error. |request error has| | | | occurred. | | | | | +-----------------+----------------------+--------------------------+ | | | | | 301 | Bad syntax | Theoccurred.</td> </tr> <tr> <td>301</td> <td>Bad syntax</td> <td>The XML syntax of the| | | |message is notcorrect. | +-----------------+----------------------+--------------------------+ | | | | | 302 | Invalid value | Thecorrect.</td> </tr> <tr> <td>302</td> <td>Invalid value</td> <td>The message| | | |contains an invalid| | | |parametervalue. | +-----------------+----------------------+--------------------------+ | | | | | 303 | Conflicting values | The message | | | | containsvalue.</td> </tr> <tr> <td>303</td> <td>Conflicting values</td> <td>The message contains values that| | | |cannot be usedtogether.| +-----------------+----------------------+--------------------------+ | | | | | 400 | Semantic errors | Semantic errors in the | | | |together.</td> </tr> <tr> <td>400</td> <td>Semantic errors</td> <td>The received CLUE protocol| | | | message. | | | | | +-----------------+----------------------+--------------------------+ | | | | | 401 | Versionmessage contains semantic errors.</td> </tr> <tr> <td>401</td> <td>Version notsupported| Thesupported</td> <td>The protocol version| | | |used in the message| | | |is notsupported. | | | | | +-----------------+----------------------+--------------------------+ | | | | | 402 | Invalid sequencing | Sequencesupported.</td> </tr> <tr> <td>402</td> <td>Invalid sequencing</td> <td>The received message contains an unexpected sequence numbergap; | | | |(e.g., sequence number gap, repeated sequencenumber;| | | |number, or sequence numberoutdated.| +-----------------+----------------------+--------------------------+ | | | | | 403 | Invalid identifier | Theoutdated).</td> </tr> <tr> <td>403</td> <td>Invalid identifier</td> <td>The clueId used in| | | |the message is| | | | not validinvalid orunknown. | +-----------------+----------------------+--------------------------+ | | | Theunknown.</td> </tr> <tr> <td>404</td> <td>Advertisement expired</td> <td>The sequence number of| | 404 | advertisement |the advertisement the| | | Expired | configure'configure' message refers to is| | | |out ofdate. | +-----------------+----------------------+--------------------------+ | | | | | 405 | Subsetdate.</td> </tr> <tr> <td>405</td> <td>Subset choice not| Theallowed</td> <td>The subset choice is not| | | allowed |allowed for thespecified| | | |specified Multiple ContentCapture | +-----------------+----------------------+--------------------------+ ]]> </artwork> </figure> </t>Capture.</td> </tr> </tbody> </table> </section> </section></section><!-- protocol messages --><sectiontitle="Protocol state machines" anchor="sec-sm">anchor="sec-sm" numbered="true" toc="default"> <name>Protocol State Machines</name> <t> 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 CLUEData Channel, a DTLS/SCTPdata channel, an SCTP-over-DTLS channel established as depicted in <xreftarget="I-D.ietf-clue-datachannel"/>.target="RFC8850" format="default"/>. We herein discuss the state machinesassociated, respectively,associated with theCLUE ParticipantCP (<xreftarget="fig:protocol_participant"/>), withtarget="fig_protocol_participant" format="default"/>), theMCMP role (<xreftarget="fig:protocol_provider"/>)target="fig_protocol_provider" format="default"/> in <xref target="sec-mp"/>), andwiththeMPMC role (<xreftarget="fig:protocol_consumer"/>).target="fig_protocol_consumer" format="default"/> in <xref target="sec-mc"/>), respectively. Endpoints often wish to both send and receive media, i.e., act as both an MP and an MC. Assuchsuch, 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 istreateddiscussed in <xreftarget="I-D.ietf-clue-signaling"/>.target="RFC8848" format="default"/>. </t> <figure anchor="fig_protocol_participant"> <name>CLUE Participant State Machine</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +----+ +---------------------->|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 | | send/receive | | +----+ | CLUE messages | | |<-----------------+ | +----+ | | | MC | | | +----+ | | | +---------+]]></artwork> </figure> <t> The main state machines focus on the behavior of theCLUE Participant (CP)CP acting as a CLUEChannel Initiator/Receiver (CI/CR).CI/CR. </t> <t> The initial state is the IDLEone.state. When in the IDLE state, the CLUE data channel is not established and no CLUE-controlled media are exchanged between the twoconsideredCLUE-capable devices in question (if there is an ongoing exchange of media streams, such media streams are not currentlyCLUE-controlled).CLUE controlled). </t> <t> When the CLUE data channelsetsis set up ("start channel"), the CP moves from the IDLE state to the CHANNEL SETUP state. </t> <t> If the CLUE data channel is successfully set up ("channel established"), the CP moves from the CHANNEL SETUP state to the OPTIONS state.OtherwiseOtherwise, if a "channelerror",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. </t> <t> When in the OPTIONS state, the CP addresses the initiation phase where both parts agree on the version andon theextensions to be used in the subsequent CLUEmessagesmessage exchange phase. If the CP is theChannel Initiator (CI),CI, it sends an 'options' message and waits for the 'optionsResponse' message. If the CP is theChannel 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 failbecause offor one of the following reasons:<list style="numbers"> <t> the</t> <ol spacing="normal" type="1"> <li>The CI receives an 'optionsResponse' with an error responsecode</t> <t> thecode.</li> <li>The CI does not receive any'optionsResponse''optionsResponse', and a timeout error israised</t> <t> theraised.</li> <li>The CR does not receive any'options''options', and a timeout error israised </t> </list> </t>raised.</li> </ol> <t> 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 (seeOPTIONS sections <xref target="subsec-options"/>Sections <xref target="subsec-options" format="counter"/> and <xreftarget="subsec-options-response"/>target="subsec-options-response" format="counter"/> forthedetails). When in the ACTIVE state, the CP delegates the sending andtheprocessing of the CLUE messages to the appropriate MP/MC sub-state machines. If the CP receives a further 'options'/'optionsResponse' message, itMUST<bcp14>MUST</bcp14> ignore the message and stay in the ACTIVE state. </t><!--<section anchor="sec-mp" numbered="true" toc="default"> <name>Media Provider's State Machine</name> <t>The CP moves from the ACTIVE state to the IDLE one whenAs soon as the sub-statemachines that had been activated aremachine of the MP (<xref target="fig_protocol_provider" format="default"/>) is activated, it is in therelative TERMINATED state (see sections <xref target="sec-mp"/> and <xref target="sec-mc"/>).ADV state. In the ADV state, the MP prepares the 'advertisement' message reflecting its actual telepresence capabilities. </t>--> <t><figurealign="center" title = "CLUE Participant state machine" anchor="fig:protocol_participant"> <artwork> <![CDATA[ +----+ +---------------------->|IDLE|<----------------------------+ | +-+--+ | | |anchor="fig_protocol_provider"> <name>Media Provider's State Machine</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +-----+ +------------>| ADV |<-------------------+ | +-+---+ | |start |advertisement| NACK received | |channelsent| | | v || channel error/changed| +--------+ || session ends | CHANNEL| | +----------------------+ SETUPtelepresence+-------------+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| |successful |send/receive| |configureResponse |+----+|CLUE messages|sent | ||<-----------------+|+----+| | |MC| |configure | |+----+|received v | | +-----------+ |+---------+ ]]> </artwork>+----------+ESTABLISHED| +-------------+-----------+]]></artwork> </figure></t> <section title="Media Provider's state machine" anchor="sec-mp"> <t> As soon as the sub-state machine of the MP (<xref target="fig:protocol_provider"/>) is activated, it is in the ADV state. In the ADV state, the MP prepares the 'advertisement' message reflecting its actual telepresence capabilities. </t><t> 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 forpreparingpreparation of a new 'advertisement'. When in the WAIT FOR ACK state, if a 'configure' message with the <ack> element set toTRUE"200" arrives ("configure+ack received"), the MP goes directly to the CONF RESPONSE state. 'configure+ack' messages referring to out-of-date (i.e., having a sequence number less than the highest generated so far) advertisementsMUST<bcp14>MUST</bcp14> 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'. </t> <t> 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 themeanwhilemeantime ("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 theMC.</t><t>MC.</t> <t> 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 anditgoes 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. </t> <t> 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. </t> <t>Messages not shown for a state do not cause the state to change.</t><t> <figure align="center" title = "Media Provider's state machine" anchor="fig:protocol_provider"> <artwork> <![CDATA[ +-----+ +------------>| 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| +-------------+-----------+ ]]> </artwork> </figure> </t></section> <sectiontitle="Mediaanchor="sec-mc" numbered="true" toc="default"> <name>Media Consumer'sstate machine" anchor="sec-mc">State Machine</name> <t> As soon as the sub-state machine of the MC (<xreftarget="fig:protocol_consumer"/>)target="fig_protocol_consumer" format="default"/>) 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 MCreachesmoves to the ADV PROCESSING state. Otherwise, the MC stays in the WAIT FORADV state. </t>ADV state. </t> <figure anchor="fig_protocol_consumer"> <name>Media Consumer's State Machine</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +----------+ | 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+-----------------------+ +-----------+]]></artwork> </figure> <t> In the ADV PROCESSING state, the 'advertisement' is parsed by the MC. If the 'advertisement' is successfully processed,there aretwopossibilities.scenarios are possible. In theformerfirst case, the MC issues a successful 'ack' message to the MP("ACK("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>fieldelement set to "200" ("configure+ack sent") and will allow the MC to move directly to the WAIT FOR CONF RESPONSE state. </t> <t> If theADVprocessing of the 'advertisement' 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 MPand optionallyand, optionally, further describes the problem via a proper reason phrase. In thiswayscenario ("NACK sent"), the MC switches back to the WAIT FOR ADVstate, waitingstate and waits for a new 'advertisement'. </t> <t> When in the CONF state, the MC prepares the 'configure' request to be issued to the MP on the basis of the previouslyack-edacked '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 themeanwhilemeantime ("advertisement received"), the MC goes back to the ADV PROCESSING state. </t> <t> 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. </t> <t> 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 thatthe MCdecidesmight decide to change something in the callsettings. Thesettings; in this case, the MC then issues a new 'configure' ("configure sent") andgoesmoves towait for the new 'configureResponse' inthe WAIT FOR CONF RESPONSEstate.state to wait for the new 'configureResponse'. On the other hand, if the MC is in the ESTABLISHEDstate, ifstate and a new 'advertisement' ("advertisement received") arrives from theMP ("advertisement received"),MP, it means that something has changed on the MP'sside. Theside; the MC then moves to the ADV PROCESSING state. </t> <t>Messages not shown for a state do not cause the state to change.</t><t> <figure align="center" title = "Media Consumer's state machine" anchor="fig:protocol_consumer"> <artwork> <![CDATA[ +----------+ | 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+-----------------------+ +-----------+ ]]> </artwork> </figure> </t></section> </section> <sectiontitle="Versioning" anchor="sec-versioning">anchor="sec-versioning" numbered="true" toc="default"> <name>Versioning</name> <t> CLUE protocol messages are XML messages compliant to the CLUE protocol XML schema <xreftarget="I-D.ietf-clue-data-model-schema"/>.target="RFC8846" format="default"/>. 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. </t> <t>ClientThe 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 thatschemaschema, there will be no interoperability problems due to schema issues. </t> <t>This document defines version 1.0 of the CLUE protocol schema, using XML schema version1.0.1.0 <xref target="W3C.REC-xml-20081126"/>. The version usage is similar in philosophy toXMPP (<xref target="RFC6120"/>).the Extensible Messaging and Presence Protocol (XMPP) <xref target="RFC6120" format="default"/>. A version number has major and minor components, each a non-negative integer.MajorChanges to the major versionchangesdenote non-interoperable changes.MinorChanges to the minor versionchangesdenote schema changes that are backward compatible by ignoring unknown XMLelements,elements or otherbackward compatiblebackward-compatible changes.</t><t></t> <t> The minor versions of the XML schemaMUST<bcp14>MUST</bcp14> be backward compatible, not only in terms of the schema butalsosemantically 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, ifaan MP is able tospeak, 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 MPMUST<bcp14>MUST</bcp14> use version 1.4.ThisThat said, andcoherentlyin keeping with the general IETF"protocol robustnessprotocol "robustness principle" stating that"anan implementation must be conservative in its sendingbehavior,behavior and liberal in its receivingbehavior"behavior <xreftarget="RFC1122"/>, CLUE Participants MUSTtarget="RFC1122" format="default"/>, CPs <bcp14>MUST</bcp14> ignore unknown elements or attributes that are not envisioned in the negotiated protocol version and related extensions. </t> </section> <sectiontitle="Extensions" anchor="sec-ext">anchor="sec-ext" numbered="true" toc="default"> <name>Extensions</name> <t> 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 mightarisearise, 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 andMUST<bcp14>MUST</bcp14> be negotiated in the CLUE initiation phase. They can relate to: </t><t> <list style="numbers"> <t><ol spacing="normal" type="1"> <li> new information, to be carried in the existing messages. For example, more fields may be added within an existingmessage; </t> <t>message. </li> <li> 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.</t> </list> </t></li> </ol> <t> As to the firsttypecategory of extensions, it is possible to distinguish between protocol-specific and data model information. Indeed, CLUE messages are envelopes carryingboth:both of the following: </t><t> <list style="symbols"> <t> (i) XML<ol spacing="normal"> <li>XML elements defined within the CLUE protocol XML schema itself (protocol-specificinformation)</t> <t> (ii) otherinformation).</li> <li>other XML elements compliant to the CLUE data model schema (data modelinformation)</t> </list> </t>information).</li> </ol> <t> 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> elementsis: </t> <t> <list style="symbols"> <t> elementFormDefault="qualified"</t> <t> attributeFormDefault="unqualified"</t> </list>is as follows: </t> <ul spacing="normal"> <li> elementFormDefault="qualified"</li> <li> attributeFormDefault="unqualified"</li> </ul> <t> 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 namespacesMUST<bcp14>MUST</bcp14> be ignored. </t> <t> 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".AlsoNote that there are also extensibility issues for the XML elements defined in such aschema 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. </t> <t>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,canmight 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. </t> <t> Asreportedshown in <xreftarget="fig:extension"/>,target="fig_extension" format="default"/>, the fields of the <extension> element (either new information or new messages) take the following values: </t><t> <list style="symbols"> <t>a name;</t> <t>an<ul spacing="normal"> <li>a name.</li> <li>an external XMLSchemaschema defining the XML information and/or the XML messages representing theextension;</t> <t>theextension.</li> <li>the major standard version of the protocol that the extension refersto.</t> </list> </t> <t>to.</li> </ul> <figurealign="center" title = "Theanchor="fig_extension"> <name>The <extension>element" anchor="fig:extension"> <artwork> <![CDATA[Element</name> <sourcecode name="" type="xml"><![CDATA[ <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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure></t><t> Theabove describedabove-described <extension> element is carried within the 'options' and 'optionsResponse' messages to represent the extensions supportedbothby both the CI and the CR. </t> <t> ExtensionsMUST<bcp14>MUST</bcp14> be defined in a separate XML schema file andMUST<bcp14>MUST</bcp14> be provided with a companion document describing their semantics and use. </t> <sectiontitle="Extension example" anchor="sec-extension-example">anchor="sec-extension-example" numbered="true" toc="default"> <name>Extension Example</name> <t> 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 <xreftarget="I-D.ietf-clue-data-model-schema"/>)target="RFC8846" format="default"/>) needed to further describe a video capture. </t> <t> The CLUE data model document(<xref target="I-D.ietf-clue-data-model-schema"/>)<xref target="RFC8846" format="default"/> envisions the possibility of adding this kind of "extra" information in the description of a video capture. Forthe sake ofconvenience, the XML definition of a video capture taken from <xreftarget="I-D.ietf-clue-data-model-schema"/>target="RFC8846" format="default"/> isreportedshown in <xreftarget="fig:video_capture"/>target="fig_video_capture" format="default"/> below. </t> <figurealign="center" title = "XML definitionanchor="fig_video_capture"> <name>XML Definition of a CLUEvideo capture" anchor="fig:video_capture"> <artwork> <![CDATA[Video Capture</name> <sourcecode name="" type="xml"><![CDATA[ <!-- 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> ]]> </artwork></xs:complexType>]]></sourcecode> </figure> <t> According to such a definition, a video capture might have, after the set ofthegeneric 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 (<xreftarget="fig:xml_extension"/>):target="fig_xml_extension" format="default"/>): </t> <figurealign="center" title = "XML schema defininganchor="fig_xml_extension"> <name>XML Schema Defining anextension" anchor="fig:xml_extension"> <artwork> <![CDATA[Extension</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork></xs:schema>]]></sourcecode> </figure> <t> 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. </t> </section> </section> <sectiontitle="XML Schema" anchor="sec-schema"> <t> 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. </t>anchor="sec-schema" numbered="true" toc="default"> <name>XML Schema</name> <t>In this section, theThe XML schema defining the CLUE messages is provided below (<xreftarget="fig:clue_schema"/>).target="fig_clue_schema" format="default"/>). </t><t><figurealign="center" title = "Schema defininganchor="fig_clue_schema"> <name>Schema Defining CLUEmessages" anchor="fig:clue_schema"> <artwork> <![CDATA[Messages</name> <sourcecode name="" type="xml"><![CDATA[ <?xml version="1.0" encoding="UTF-8"?> <xs:schemaxmlns: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:importnamespace="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> ]]> </artwork></xs:schema>]]></sourcecode> </figure></t></section> <sectiontitle="Call flow example">numbered="true" toc="default"> <name>Call Flow Example</name> <t>In thisThis section describes the CLUE protocol messages exchanged in the following callflow are detailed. Onlyflow. For simplicity, only one direction of media isshown for simplicity,shown, as the other direction is precisely symmetric. </t><t> <figure> <artwork> <![CDATA[<artwork name="" type="" align="left" alt=""><![CDATA[ +-----+ +-----+ | | | | | CP1 | | CP2 | | | | | +--+--+ +--+--+ | | |1.options1. options |+----------------->|+-------------------->| | | | ||2.optionsResponse | |<-----------------+ | ||2. optionsResponse | |<--------------------+ | |3.advertisement|+----------------->|| |3. advertisement | +-------------------->| | ||4.configure+ack||<-----------------+| |4. configure+ack | |<--------------------+ | ||5.confResponse|+----------------->|| |5. configureResponse | +-------------------->| | ||6.advertisement|+----------------->|| |6. advertisement | +-------------------->| | | |7.ack||<-----------------+| 7. ack | |<--------------------+ | | |8.configure||<-----------------+|8. configure | |<--------------------+ | | | |9.confResponse|9. configureResponse |+----------------->|+-------------------->| | | | | . . . . .. ]]> </artwork> </figure> </t>.]]></artwork> <t> TwoCLUE Participants,CPs, CP1 and CP2, have successfully set up the CLUE channel according todocument<xreftarget="I-D.ietf-clue-datachannel"/>.target="RFC8850" format="default"/>. CP1 is theChannel Initiator (CI)CI, and CP2 is theChannel Receiver (CR).CR. </t><t> The<ul spacing="normal"> <li>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 (<xreftarget="opt-example"/>).target="opt-example" format="default"/>). CP1supports:supports (i) version 1.4 with extensions E1,E2E2, andE3, (ii) versionE3 and (ii) version 2.7 with extensions E4 and E5. Because of such capabilities, CP1 sends an 'options' message with the'v'"v" attribute set to1.4"1.4" andspecifiesexplicitly specifies all the supported versions and extensions in the corresponding fields of the 'options' message. In the 'options' message, CP1specifiesalso specifies that it intends to actbothasaboth an MP andas a MC. </t> <t> CP2an MC.</li> <li>CP2 supportsversionversions 3.0,version 2.92.9, andversion1.9 of the CLUE protocol, each version without anyextension.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 theagreedagreed-upon version of the CLUE protocol to be used, leaving blank the extensions part of the message to say that noextensionextensions will be used in the CLUE session (<xreftarget="optRes-example"/>).target="optRes-example" format="default"/>). In the 'optionsResponse' message, CP2specifiesalso specifies that it intends to actbothasaboth an MP andas a MC. </t>an MC.</li> </ul> <t> After the initiation phase is completed, CP1 and CP2 start their activity as the MP andas MC.the MC, respectively. For the sake of simplicity, thefollowingrest of the call flow focuses only on the dialogue between MP CP1 and MC CP2. </t><t> CP1<ul spacing="normal"> <li>CP1 advertises a telepresence configuration like the one described in <xreftarget="I-D.ietf-clue-data-model-schema"/>, Sec. Sample XML File,target="RFC8846" sectionFormat="comma" section="27"/>, where there are (i) three main video streams captured by three cameras, with the centralonecamera capable of capturing a zoomed-out view of the overall telepresence room,(ii) a multi-content(ii) a multicontent capture of the loudest segment of the room, and(iii) one(iii) one audio capture for the audio of the whole room (<xreftarget="adv-example"/>). </t> <t> CP2target="adv-example" format="default"/>). </li> <li>CP2 receives CP1's 'advertisement' message and, after processing it, sends back to CP1 a'configure + ack''configure+ack' messagewherein which it declaresto be interested onlyits interest in themulti-contentmulticontent capture andinthe audio capture only (<xreftarget="confAck-example"/>). </t> <t> CP1target="confAck-example" format="default"/>).</li> <li>CP1 answerstoCP2's'configure + ack''configure+ack' message with a 'configureResponse' messageincludingthat includes a 200 (Success) response code'200 - Success'to accept all of CP2's requests (<xreftarget="confRes-example"/>). </t> <t> Totarget="confRes-example" format="default"/>).</li> <li>To reflect the changes in its telepresence offer, CP1 issues a new 'advertisement' message to CP2 (<xreftarget="adv2-example"/>),target="adv2-example" format="default"/>), this timeaddingalso adding a composed capture madebyof a big picture representing the current speaker and two picture-in-picture boxes representing the previous speakers (see <xref target="RFC8846" sectionFormat="comma" section="28"/> for more detailsaboutregarding the telepresencedescription in <xref target="I-D.ietf-clue-data-model-schema"/>, Sec. MCC example). </t> <t> CP2description).</li> <li>CP2 acknowledges the second 'advertisement' message with an 'ack' message (<xreftarget="ack-example"/>). </t> <t> In a second moment,target="ack-example" format="default"/>).</li> <li>Later in the session, 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 (<xreftarget="conf-example"/>).target="conf-example" format="default"/>). Media streams from the previous configuration continue to flow during the reconfigurationprocess. </t> <t> Finally,process.</li> <li>Finally, CP1accept the last requests of CP2accepts CP2's latest request with a'confResponse''configureResponse' message (<xreftarget="confRes2-example"/>)</t> <t> Wetarget="confRes2-example" format="default"/>).</li> </ul> <t>We would alsoremarklike to point out that in the depicted flow three distinct sequence number spaces per sender are involved (two of which appear in thesnippetssnippets, since we only show one direction of media). The discontinuity between the sequence number values in<xref target="optRes-example"/>Sections <xref target="optRes-example" format="counter"/> and <xreftarget="adv-example"/>target="adv-example" format="counter"/> is hence correct. </t> <sectiontitle="CLUE message nr.anchor="opt-example" numbered="true" toc="default"> <name>CLUE Message No. 1:'options'" anchor="opt-example"> <t> <figure> <artwork> <![CDATA['options'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></options>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="optRes-example" numbered="true" toc="default"> <name>CLUE Message No. 2:'optionsResponse'" anchor="optRes-example"> <t> <figure> <artwork> <![CDATA['optionsResponse'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></optionsResponse>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="adv-example" numbered="true" toc="default"> <name>CLUE Message No. 3:'advertisement'" anchor="adv-example"> <t> <figure> <artwork> <![CDATA['advertisement'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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 roomsegment</description>segment </description> <priority>2</priority> <lang>it</lang> <mobility>static</mobility> <view>individual</view> </mediaCapture> <mediaCapturexmlns: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> <descriptionlang="en">zoomed outlang="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> ]]> </artwork> </figure> </t></ns2:advertisement>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="confAck-example" numbered="true" toc="default"> <name>CLUE Message No. 4:'configure + ack'" anchor="confAck-example"> <t> <figure> <artwork> <![CDATA['configure+ack'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></ns2:configure>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="confRes-example" numbered="true" toc="default"> <name>CLUE Message No. 5:'confResponse'" anchor="confRes-example"> <t> <figure> <artwork> <![CDATA['configureResponse'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></ns2:configureResponse>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="adv2-example" numbered="true" toc="default"> <name>CLUE Message No. 6:'advertisement' " anchor="adv2-example"> <t> <figure> <artwork> <![CDATA['advertisement'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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 roomsegment</description>segment </description> <priority>2</priority> <lang>it</lang> <mobility>static</mobility> <view>individual</view> </mediaCapture> <mediaCapturexmlns: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 outzoomed-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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> <mediaCapturexmlns: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> ]]> </artwork> </figure> </t></ns2:advertisement>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="ack-example" numbered="true" toc="default"> <name>CLUE Message No. 7:'ack' " anchor="ack-example"> <t> <figure> <artwork> <![CDATA['ack'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></ack>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="conf-example" numbered="true" toc="default"> <name>CLUE Message No. 8:'configure'" anchor="conf-example"> <t> <figure> <artwork> <![CDATA['configure'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></ns2:configure>]]></sourcecode> </section> <sectiontitle="CLUE message nr.anchor="confRes2-example" numbered="true" toc="default"> <name>CLUE Message No. 9:'confResponse'" anchor="confRes2-example"> <t> <figure> <artwork> <![CDATA['configureResponse'</name> <sourcecode name="" type="xml"><![CDATA[ <?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> ]]> </artwork> </figure> </t></ns2:configureResponse>]]></sourcecode> </section> </section> <sectiontitle="Security Considerations">anchor="sec-cons" numbered="true" toc="default"> <name>Security Considerations</name> <t> As a general consideration, weremarkwould like to point out that the CLUE framework (and related protocol) has been conceivedatfrom the outset by embracing the security-by-design paradigm.This entails thatAs 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. Requirementsinclude:include (i) the use of cryptography andauthentication;authentication, (ii) protection of all sensitivefields; (iii) mutualfields, (iii) mutual authentication between CLUEendpoints;endpoints, (iv) the presence of authorizationmechanisms;mechanisms, and (v) the presence of nativedefencedefense 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. </t> <t> The CLUE protocol is an application-level protocol allowing a Media Producer anda Media Consumeran MC 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 <xreftarget="I-D.ietf-clue-framework" />.target="RFC8845" format="default"/>. Thesecurity considerationsSecurity Considerations section ofthe mentioned document<xref target="RFC8845" format="default"/> actually discusses issues associated with the setup and management of a telepresence sessionbothintheboth (1) the basic case involving two CLUE endpointsacting, respectively,acting as the MP and the MC, respectively andin the(2) the more advanced scenario envisaging the presence of an MCU. </t> <t> The CLUE framework document <xref target="RFC8845" format="default"/> also mentions that the information carried within CLUE protocol messages might contain sensitive data, whichSHOULD<bcp14>SHOULD</bcp14> hence be accessed only by authenticated endpoints. Security issues associated with the CLUE data model schema are discussed in <xreftarget="I-D.ietf-clue-data-model-schema" />.target="RFC8846" format="default"/>. </t> <t> There is extra information carried by the CLUE protocol that is not associated with the CLUE data model schema andwhichthat exposes information that might be of concern. This information is primarily exchanged during the negotiation phase via the 'options' and 'optionsResponse' messages. In theCLUE ParticipantCP statemachinemachine's OPTIONS state, both parties agree on the version andon theextensions to be used in the subsequent CLUEmessagesmessage exchange phase. A malicious participant might eithertry(1) try to retrieve a detailed footprint of a specific CLUE protocol implementation during this initial setupphase,phase orforce(2) force the communicating party to use anon-up-to-dateversion of the protocolwhichthat 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. Intheorytheory, an implementation could choose not to announce all of the versions it supports if it wants to avoid such leakage,thoughalthough this would come at theexpensesexpense 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'messagesmessages, and hence drastically reduces the attack surface that is exposed to malicious parties. </t> <t> The CLUE framework clearly states the requirement to protect CLUE protocol messages against threats deriving from the presence of a malicious agent capableto gainof gaining access to the CLUE data channel. Such a requirement is met by the CLUE data channel solution described in <xreftarget="I-D.ietf-clue-datachannel"/>,target="RFC8850" format="default"/>, 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 specificationMUST<bcp14>MUST</bcp14> rely on the exchange of messages that flow on top of a reliable and orderedSCTP over DTLSSCTP-over-DTLS transport channel connecting twoCLUE Participants.CPs. </t> </section> <sectiontitle="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t> This document registers a new XML namespace, a new XMLschemaschema, and theMIMEmedia 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. </t> <sectiontitle="URNnumbered="true" toc="default"> <name>URN Sub-NamespaceRegistration">Registration</name> <t> This section registers a new XML namespace,<spanx style="verb">"urn:ietf:params:xml:ns:clue-protocol"</spanx>. </t> <t> URI: urn:ietf:params:xml:ns:clue-protocol<tt>urn:ietf:params:xml:ns:clue-protocol</tt>. </t><t> Registrant Contact: IESG (iesg@ietf.org). </t> <t> XML: </t> <t> <figure> <artwork> <![CDATA[ BEGIN<dl newline="false" spacing="normal"> <dt>URI:</dt> <dd>urn:ietf:params:xml:ns:clue-protocol</dd> <dt>Registrant Contact:</dt> <dd>IESG (iesg@ietf.org).</dd> </dl> <t>XML: </t> <sourcecode markers="true" type="xml"><![CDATA[ <?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"> <htmlxmlns="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 <ahref="[[RFC URL]]"> RFCXXXX</a>.</p>href="https://www.rfc-editor.org/rfc/rfc8847.txt"> RFC 8847</a>.</p> </body> </html>END ]]> </artwork> </figure> </t>]]></sourcecode> </section> <sectiontitle="XMLnumbered="true" toc="default"> <name>XML Schemaregistration">Registration</name> <t> This section registers an XML schema per the guidelines in <xreftarget="RFC3688"/>. </t> <t> URI: urn:ietf:params:xml:schema:clue-protocoltarget="RFC3688" format="default"/>. </t><t> Registrant Contact: IESG (iesg@ietf.org). </t> <t> Schema: The<dl newline="false" spacing="normal"><dt>URI:</dt> <dd>urn:ietf:params:xml:schema:clue-protocol</dd> <dt>Registrant Contact:</dt> <dd>IESG (iesg@ietf.org).</dd> <dt>Schema:</dt> <dd>The XML for this schema can be foundas the entirety ofin <xreftarget="sec-schema"/>target="sec-schema" format="default"/> of thisdocument. </t>document.</dd> </dl> </section> <sectiontitle="MIME Medianumbered="true" toc="default"> <name>Media Type Registration for'application/clue+xml'">"application/clue+xml"</name> <t>This section registers the<spanx style="verb"> "application/clue+xml"</spanx> MIME<tt> application/clue+xml</tt> media type. </t><t>To: ietf-types@iana.org</t> <t>Subject: Registration<dl newline="false" spacing="normal"> <dt>To:</dt> <dd>ietf-types@iana.org</dd> <dt>Subject:</dt> <dd>Registration ofMIMEmedia typeapplication/clue+xml </t> <t>MIME media"application/clue+xml"</dd> <dt>Media typename: application</t> <t>MIME subtype name: clue+xml</t> <t>Required parameters: (none)</t> <t>Optional parameters: charset <vspace/>name:</dt> <dd>application</dd> <dt>Subtype name:</dt> <dd>clue+xml</dd> <dt>Required parameters:</dt> <dd>(none)</dd> <dt>Optional parameters:</dt> <dd>charset. Same as the charset parameter of"application/xml""application&wj;/xml" as specified in <xreftarget="RFC7303"/>, Section 3.2. </t> <t>Encoding considerations: Sametarget="RFC7303" sectionFormat="comma" section="4.2"/>.</dd> <dt>Encoding considerations:</dt> <dd>Same as the encoding considerations of "application/xml" as specified in <xreftarget="RFC7303"/>, Section 3.2. </t> <t>Security considerations: Thistarget="RFC7303" sectionFormat="comma" section="4.2"/>.</dd> <dt>Security considerations:</dt> <dd>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 anyprotection and thusprotection; thus, othermechanismsmechanisms, such as those described inSection Security<xref target="sec-cons"/> of this document, are required to protect the data. This media type does not contain executablecontent. </t> <t>Interoperability considerations: None. </t> <t>Published specification: RFC XXXX [[NOTE TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number for this specification.]] </t> <t>Applicationscontent.</dd> <dt>Interoperability considerations:</dt> <dd>None.</dd> <dt>Published specification:</dt> <dd>RFC 8847 </dd> <dt>Applications that use this mediatype: CLUE participants. </t> <t>Additional Information: Magic Number(s): (none), <vspace/> File extension(s): .xml, <vspace/> Macintoshtype:</dt> <dd>CLUE Participants.</dd> <dt>Additional Information:</dt> <dd><t><br/></t> <dl newline="false" spacing="compact"> <dt>Magic Number(s):</dt><dd>(none)</dd> <dt>File extension(s):</dt><dd>.xml</dd> <dt>Macintosh File TypeCode(s): TEXT. <vspace/> </t> <t>PersonCode(s):</dt><dd>TEXT</dd> </dl> </dd> <dt>Person & email address to contact for furtherinformation: Simoninformation:</dt> <dd>Simon Pietro Romano(spromano@unina.it). </t> <t>Intended usage: LIMITED USE </t> <t>Author/Change controller: The IETF </t> <t>Other information: This(spromano@unina.it).</dd> <dt>Intended usage:</dt> <dd>LIMITED USE</dd> <dt>Author/Change controller:</dt> <dd>The IETF</dd> <dt>Other information:</dt> <dd>This media type is a specialization of application/xml <xreftarget="RFC7303"/>,target="RFC7303" format="default"/>, and many of the considerations described there also apply toapplication/clue+xml. </t>application/clue+xml.</dd> </dl> </section> <sectiontitle="CLUEnumbered="true" toc="default"> <name>CLUE ProtocolRegistry">Registry</name> <t>The document requests that thePer this document, IANAcreateshas created new registries for CLUE messages and response codes. </t> <sectiontitle="CLUEnumbered="true" toc="default"> <name>CLUE MessageTypes">Types</name> <t> The following summarizes the registry for CLUE messages: </t><t> Related Registry: CLUE<dl newline="false" spacing="normal"> <dt>Related Registry:</dt> <dd>CLUE MessageTypes Registry </t> <t> Defining RFC: RFC XXXX [[NOTE TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number for this specification.]] </t> <t> Registration/Assignment Procedures: FollowingTypes</dd> <dt>Defining RFC:</dt> <dd>RFC 8847</dd> <dt>Registration/Assignment Procedures:</dt> <dd>Following the policies outlined in <xreftarget="RFC8126"/>,target="RFC8126" format="default"/>, the IANA policy for assigning new values for the CLUE message types for the CLUE protocol is SpecificationRequired. </t> <t> Registrant Contact: IESG (iesg@ietf.org). </t>Required.</dd> <dt>Registrant Contact:</dt> <dd>IESG (iesg@ietf.org).</dd> </dl> <t> The initialMessagetable of CLUE messages is populated using the CLUE messages described in <xreftarget="sec-messages"/>target="sec-messages" format="default"/> and defined in the XML schema in <xreftarget="sec-schema"/>.target="sec-schema" format="default"/>. </t><texttable title="IANA-CLUE"> <ttcol>Message</ttcol> <ttcol>Description</ttcol> <ttcol>Reference</ttcol> <c>options</c> <c>Sent<table align="center"> <name>Initial IANA Table of CLUE Messages</name> <thead> <tr> <th align="left">Message</th> <th align="left">Description</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">options</td> <td align="left">Sent by the CI to the CR in the initiation phase to specify the roles played by the CI, the supportedversionsversions, and the supportedextensions.</c> <c>RFCXXXX</c> <c>optionsResponse</c> <c>Sentextensions.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">optionsResponse</td> <td align="left">Sent by the CI to the CR in reply to an 'options'messagemessage, tofinally estabilshestablish the version andtheextensions to be used in thefollowingsubsequent exchange of CLUEmessages exchange.</c> <c>RFCXXXX</c> <c>advertisement</c> <c>Sentmessages.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">advertisement</td> <td align="left">Sent by the MP to the MC to specify the telepresence capabilities of the MP expressed according to the CLUEframework.</c> <c>RFCXXXX</c> <c>ack</c> <c>Sentframework.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">ack</td> <td align="left">Sent by the MC to the MP to acknowledge the reception of an 'advertisement'message.</c> <c>RFCXXXX</c> <c>configure</c> <c>Sentmessage.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">configure</td> <td align="left">Sent by the MC to the MP to specify the desired media captures among those specified in the'advertisement'.</c> <c>RFCXXXX</c> <c>configureResponse</c> <c>Sent'advertisement'.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">configureResponse</td> <td align="left">Sent by the MP to the MC in reply to aCONFIGURE'configure' message to communicateifwhether or not the configuration request has been successfullyprocessed or not.</c> <c>RFCXXXX</c> </texttable>processed.</td> <td align="left">RFC 8847</td> </tr> </tbody> </table> </section> <sectiontitle="CLUEnumbered="true" toc="default"> <name>CLUE ResponseCodes">Codes</name> <t> The following summarizes therequestedregistry for CLUE response codes: </t><t> Related Registry: CLUE<dl newline="false" spacing="normal"> <dt>Related Registry:</dt> <dd>CLUE ResponseCode Registry </t> <t> Defining RFC: RFC XXXX [[NOTE TO IANA/RFC-EDITOR: Please replace XXXX with the RFC number for this specification.]] </t> <t> Registration/Assignment Procedures: FollowingCodes</dd> <dt>Defining RFC:</dt> <dd>RFC 8847</dd> <dt>Registration/Assignment Procedures:</dt> <dd>Following the policies outlined in <xreftarget="RFC8126"/>,target="RFC8126" format="default"/>, the IANA policy for assigning new values for theResponseresponse codes for CLUEshall beis SpecificationRequired. </t> <t> Registrant Contact: IESG (iesg@ietf.org). </t>Required.</dd> <dt>Registrant Contact:</dt> <dd>IESG (iesg@ietf.org).</dd> </dl> <t> The initialResponse-codetable of CLUE response codes is populated using theResponseresponse codes defined in <xreftarget="sec-resp-codes"/>target="sec-resp-codes" format="default"/> as follows: </t><texttable> <ttcol>Number</ttcol> <ttcol>Default<table align="center"> <name>Initial IANA Table of CLUE ResponseString</ttcol> <ttcol>Description</ttcol> <ttcol>Reference</ttcol> <c>200</c> <c>Success</c> <c>TheCodes</name> <thead> <tr> <th align="left">Number</th> <th align="left">Default Reason String</th> <th align="left">Description</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">200</td> <td align="left">Success</td> <td align="left">The request has been successfullyprocessed.</c> <c>RFCXXXX</c> <c>300</c> <c>Low-levelprocessed.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">300</td> <td align="left">Low-level requesterror.</c> <c>Aerror</td> <td align="left">A generic low-level request error hasoccurred.</c> <c>RFCXXXX</c> <c>301</c> <c>Bad syntax</c> <c>Theoccurred.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">301</td> <td align="left">Bad syntax</td> <td align="left">The XML syntax of the message is notcorrect.</c> <c>RFCXXXX</c> <c>302</c> <c>Invalid value</c> <c>Thecorrect.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">302</td> <td align="left">Invalid value</td> <td align="left">The message contains an invalid parametervalue.</c> <c>RFCXXXX</c> <c>303</c> <c>Conficting values</c> <c>Thevalue.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">303</td> <td align="left">Conflicting values</td> <td align="left">The message contains values that cannot be usedtogether.</c> <c>RFCXXXX</c> <c>400</c> <c>Semantic errors</c> <c>Semantic errors in thetogether.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">400</td> <td align="left">Semantic errors</td> <td align="left">The received CLUE protocolmessage.</c> <c>RFCXXXX</c> <c>401</c> <c>Version not supported</c> <c>Themessage contains semantic errors.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">401</td> <td align="left">Version not supported</td> <td align="left">The protocol version used in the message is notsupported.</c> <c>RFCXXXX</c> <c>402</c> <c>Invalid sequencing</c> <c> Sequencesupported.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">402</td> <td align="left">Invalid sequencing</td> <td align="left"> The received message contains an unexpected sequence number (e.g., sequence numbergap;gap, repeated sequencenumber;number, or sequence numberoutdated. </c> <c>RFCXXXX</c> <c>403</c> <c>Invalid identifier</c> <c>Theoutdated). </td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">403</td> <td align="left">Invalid identifier</td> <td align="left">The clueId used in the message isnot validinvalid orunknown.</c> <c>RFCXXXX</c> <c>404</c> <c>advertisement Expired</c> <c>Theunknown.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">404</td> <td align="left">Advertisement expired</td> <td align="left">The sequence number of the advertisement theconfigure'configure' message refers to is out ofdate.</c> <c>RFCXXXX</c> <c>405</c> <c>Subsetdate.</td> <td align="left">RFC 8847</td> </tr> <tr> <td align="left">405</td> <td align="left">Subset choice notallowed</c> <c>Theallowed</td> <td align="left">The subset choice is not allowed for the specified Multiple ContentCapture.</c> <c>RFCXXXX</c> </texttable>Capture.</td> <td align="left">RFC 8847</td> </tr> </tbody> </table> </section> </section> </section> </middle> <back> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <!-- draft-ietf-clue-framework (RFC 8845) --> <reference anchor="RFC8845" target="https://www.rfc-editor.org/info/rfc8845"> <front> <title>Framework for Telepresence Multi-Streams</title> <author initials="M" surname="Duckworth" fullname="Mark Duckworth" role="editor"> <organization/> </author> <author initials="A" surname="Pepperell" fullname="Andrew Pepperell"> <organization/> </author> <author initials="S" surname="Wenger" fullname="Stephan Wenger"> <organization/> </author> <date month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8845"/> <seriesInfo name="DOI" value="10.17487/RFC8845"/> </reference> <!-- draft-ietf-clue-signaling (RFC 8848) --> <reference anchor="RFC8848" target="https://www.rfc-editor.org/info/rfc8848"> <front> <title>Session Signaling for Controlling Multiple Streams for Telepresence (CLUE)</title> <author initials="R" surname="Hanton" fullname="Robert Hanton"> <organization/> </author> <author initials="P" surname="Kyzivat" fullname="Paul Kyzivat"> <organization/> </author> <author initials="L" surname="Xiao" fullname="Lennard Xiao"> <organization/> </author> <author initials="C" surname="Groves" fullname="Christian Groves"> <organization/> </author> <date month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8848"/> <seriesInfo name="DOI" value="10.17487/RFC8848"/> </reference> <!-- draft-ietf-clue-datachannel (RFC 8850) --> <reference anchor="RFC8850" target="https://www.rfc-editor.org/info/rfc8850"> <front> <title>Controlling Multiple Streams for Telepresence (CLUE) Protocol Data Channel</title> <author initials="C." surname="Holmberg" fullname="Christer Holmberg"> <organization/> </author> <date month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8850"/> <seriesInfo name="DOI" value="10.17487/RFC8850"/> </reference> <!-- draft-ietf-clue-data-model-schema (RFC 8846) --> <reference anchor="RFC8846" target="https://www.rfc-editor.org/info/rfc8846"> <front> <title>An XML Schema for the Controlling Multiple Streams for Telepresence (CLUE) Data Model</title> <author initials="R" surname="Presta" fullname="Roberta Presta"> <organization/> </author> <author initials="S P." surname="Romano" fullname="Simon Romano"> <organization/> </author> <date month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8846"/> <seriesInfo name="DOI" value="10.17487/RFC8846"/> </reference> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3550.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7303.xml"/> <reference anchor='W3C.REC-xml-20081126' target='https://www.w3.org/TR/2008/REC-xml-20081126'> <front> <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title> <author initials='T.' surname='Bray' fullname='Tim Bray'> <organization /> </author> <author initials='J.' surname='Paoli' fullname='Jean Paoli'> <organization /> </author> <author initials='M.' surname='Sperberg-McQueen' fullname='Michael Sperberg-McQueen'> <organization /> </author> <author initials='E.' surname='Maler' fullname='Eve Maler'> <organization /> </author> <author initials='F.' surname='Yergeau' fullname='Francois Yergeau'> <organization /> </author> <date month='November' year='2008' /> </front> <refcontent>World Wide Web Consortium Recommendation REC-xml-20081126</refcontent> </reference> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7262.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4353.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7667.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6120.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3261.xml"/> </references> </references> <sectiontitle="Acknowledgments">numbered="false" toc="default"> <name>Acknowledgements</name> <t> The authors thank all the CLUErs for their preciousfeedbacksfeedback andsupport,support -- inparticular Paul Kyzivat, Christian Groves and Scarlett Liuyan.particular, <contact fullname="Paul Kyzivat"/>, <contact fullname="Christian Groves"/>, and <contact fullname="Scarlett Liuyan"/>. </t> </section></middle> <back> <references title="Normative References"> <!-- RFC2119, boilerplate text --> <?rfc include="reference.RFC.2119"?> <!-- RFC8174, boilerplate text --> <?rfc include="reference.RFC.8174"?> <!-- clue framework --> <?rfc include="reference.I-D.ietf-clue-framework"?> <!-- clue signaling WG doc--> <?rfc include="reference.I-D.ietf-clue-signaling"?> <!-- clue data channel --> <?rfc include="reference.I-D.ietf-clue-datachannel"?> <!-- clue data model --> <?rfc include="reference.I-D.ietf-clue-data-model-schema"?> <!-- RFC3550, rtp --> <?rfc include="reference.RFC.3550"?> <!-- RFC3688 --> <?rfc include="reference.RFC.3688"?> <!-- RFC8126 --> <?rfc include="reference.RFC.8126"?> <!-- RFC7303 --> <?rfc include="reference.RFC.7303"?> </references> <references title="Informative References"> <!-- clue requirements --> <?rfc include="reference.RFC.7262"?> <!-- RFC4353, sip conferencing framework --> <?rfc include="reference.RFC.4353"?> <!-- <?rfc include="reference.RFC.5117"?> --> <!-- RFC7667, rtp topologies --> <?rfc include="reference.RFC.7667"?> <!-- RFC6120, XMPP --> <?rfc include="reference.RFC.6120"?> <!-- RFC1122, XMPP --> <?rfc include="reference.RFC.1122"?> <!-- RFC3261, SIP --> <?rfc include="reference.RFC.3261"?> </references></back> </rfc>