rfc8847xml2.original.xml   rfc8847.xml 
<?xml version="1.0"?> <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes" ?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude"
<?rfc compact="yes" ?> docName="draft-ietf-clue-protocol-19" number="8847" submissionType="IETF" c
<?rfc subcompact="no"?> onsensus="true" category="exp" ipr="trust200902" obsoletes="" updates="" xml:lan
<?rfc sortrefs="yes" ?> g="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
<?rfc symrefs="yes" ?> <!-- xml2rfc v2v3 conversion 2.38.1 -->
<?rfc rfcedstyle="yes" ?> <front>
<rfc docName="draft-ietf-clue-protocol-19" submissionType="IETF" <title abbrev="CLUE">
consensus="yes" category="exp" ipr="trust200902">
<front>
<title abbrev="draft-ietf-clue-protocol-19">
Protocol for Controlling Multiple Streams for Telepresence (CLUE) Protocol for Controlling Multiple Streams for Telepresence (CLUE)
</title> </title>
<author initials="R." surname="Presta" fullname="Roberta Presta"> <seriesInfo name="RFC" value="8847"/>
<organization>University of Napoli</organization> <author initials="R." surname="Presta" fullname="Roberta Presta">
<address> <organization>University of Napoli</organization>
<postal> <address>
<street>Via Claudio 21</street> <postal>
<code>80125</code> <street>Via Claudio 21</street>
<city>Napoli</city> <code>80125</code>
<country>Italy</country> <city>Napoli</city>
</postal> <country>Italy</country>
<email>roberta.presta@unina.it</email> </postal>
</address> <email>roberta.presta@unina.it</email>
</author> </address>
<author initials="S." surname="P. Romano" fullname="Simon Pietro Romano"> </author>
<organization>University of Napoli</organization> <author initials="S P." surname="Romano" fullname="Simon Pietro Romano">
<address> <organization>University of Napoli</organization>
<postal> <address>
<street>Via Claudio 21</street> <postal>
<code>80125</code> <street>Via Claudio 21</street>
<city>Napoli</city> <code>80125</code>
<country>Italy</country> <city>Napoli</city>
</postal> <country>Italy</country>
<email>spromano@unina.it</email> </postal>
</address> <email>spromano@unina.it</email>
</author> </address>
<date month="July" year="2019"/> </author>
<area>ART</area> <date month="January" year="2021"/>
<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. -->
<keyword>CLUE</keyword>
<keyword>Telepresence</keyword>
<keyword>Protocol</keyword>
<keyword>Framework</keyword>
<abstract>
<t>
<!--
The CLUE protocol is an application protocol conceived for the
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 CLUE protocol is an application protocol conceived for the <keyword>CLUE</keyword>
description and negotiation of a telepresence session. <keyword>Telepresence</keyword>
The design of the CLUE protocol takes into account the <keyword>Protocol</keyword>
requirements and the framework defined within the IETF CLUE working <keyword>Framework</keyword>
group. <abstract>
A companion document delves into CLUE signaling details, as well as on <t>
the SIP/SDP session establishment phase. The Controlling Multiple Streams for Telepresence (CLUE) protocol is an
application protocol conceived for the description and negotiation of a
telepresence session. The design of the CLUE protocol takes into account the
requirements and the framework defined within the IETF CLUE Working Group. A
companion document, RFC 8848, delves into CLUE signaling details as well as
the SIP / Session Description Protocol (SDP) session establishment phase.
CLUE messages flow over the CLUE data channel, based on reliable and CLUE messages flow over the CLUE data channel, based on reliable and
ordered SCTP over DTLS transport. ordered SCTP-over-DTLS transport. ("SCTP" stands for "Stream Control
Transmission Protocol".)
Message details, together with the behavior of CLUE Participants Message details, together with the behavior of CLUE Participants
acting as Media Providers and/or Media Consumers, are herein discussed. acting as Media Providers and/or Media Consumers, are herein discussed.
</t> </t>
</abstract> </abstract>
</front> </front>
<middle>
<middle> <section anchor="sec-intro" numbered="true" toc="default">
<!-- Introduction --> <name>Introduction</name>
<section title="Introduction" anchor="sec-intro"> <t>
<t> The Controlling Multiple Streams for Telepresence (CLUE) protocol is an applicat
The CLUE protocol is an application protocol used ion protocol used
by two CLUE Participants to enhance the experience of a multimedia by two CLUE Participants to enhance the experience of a multimedia
telepresence session. telepresence session.
The main goals of the CLUE protocol are: The main goals of the CLUE protocol are as follows:
<list style="numbers"> </t>
<t> <ol spacing="normal" type="1">
<li>
enabling a Media Provider (MP) to properly announce its current enabling a Media Provider (MP) to properly announce its current
telepresence capabilities to a Media Consumer (MC) in terms of available telepresence capabilities to a Media Consumer (MC) in terms of available
media captures, groups of encodings, simultaneity constraints and other media captures, groups of encodings, simultaneity constraints, and other
information defined in <xref target="I-D.ietf-clue-framework"/>; information defined in <xref target="RFC8845" format="default"/>.
</t> </li>
<t>enabling an MC to request the desired multimedia streams from the <li>enabling an MC to request the desired multimedia streams from the
offering MP.</t> offering MP.</li>
</list> </ol>
</t> <t>
<t> CLUE-capable endpoints are connected by means of the CLUE data channel --
CLUE-capable endpoints are connected by means of the CLUE data channel, an SCTP-over-DTLS channel that is opened and established as described
an SCTP over DTLS channel that is opened and established as described in <xref target="RFC8848" format="default"/> and
in <xref target="I-D.ietf-clue-signaling"/> and <xref target="RFC8850" format="default"/>. ("SCTP" stands for "Stream Control
<xref target="I-D.ietf-clue-datachannel"/>. Transmission Protocol".)
CLUE protocol messages flowing over such a channel are detailed in this CLUE protocol messages flowing over such a channel are detailed in this
document, both syntactically and semantically. document, both syntactically and semantically.
</t> </t>
<t> <t>
In <xref target="sec-overview"/> we provide a general overview of the In <xref target="sec-overview" format="default"/>, we provide a general overview
of the
CLUE protocol. CLUE protocol.
CLUE protocol messages are detailed in <xref target="sec-messages"/>. CLUE protocol messages are detailed in <xref target="sec-messages" format="defau
The CLUE Protocol state machines are introduced in lt"/>.
<xref target="sec-sm"/>. The CLUE protocol state machines are introduced in
<xref target="sec-sm" format="default"/>.
Versioning and extensions are discussed Versioning and extensions are discussed
in <xref target="sec-versioning"/> and <xref target="sec-ext"/>, in Sections&nbsp;<xref target="sec-versioning" format="counter"/> and <xref targ
respectively. The XML schema defining the CLUE messages is reported in et="sec-ext" format="counter"/>,
<xref target="sec-schema"/>. respectively. The XML schema <xref target="W3C.REC-xml-20081126"/>
</t> defining the CLUE messages is provided in
</section> <xref target="sec-schema" format="default"/>.
<!-- Terminology -->
<section title="Terminology" anchor="sec-teminology">
<t> This document refers to the same terminology used in
<xref target="I-D.ietf-clue-framework"/> and in
<xref target="RFC7262"/>.
We briefly recall herein some of the main terms used in the document.
The definition of "CLUE Participant" herein proposed is not imported
from any of the above documents.
</t> </t>
<t> </section>
<list style="hanging"> <section anchor="sec-teminology" numbered="true" toc="default">
<t hangText="Capture Encoding:">A specific encoding of a Media Capture, <name>Terminology</name>
to be sent via RTP <xref target="RFC3550"/>.</t> <t>This document refers to terminology that is also used in
<t hangText="CLUE Participant (CP):"> An entity able to use the CLUE <xref target="RFC8845" format="default"/> and
<xref target="RFC7262" format="default"/>.
For convenience, we list those terms below. The definition of "CLUE
Participant", as also listed below, originates from this document.</t>
<dl newline="false" spacing="normal">
<dt>Capture Encoding:</dt>
<dd>A specific encoding of a Media Capture,
to be sent via RTP <xref target="RFC3550" format="default"/>.</dd>
<dt>CLUE Participant (CP):</dt>
<dd> An entity able to use the CLUE
protocol within a telepresence session. protocol within a telepresence session.
It can be an endpoint or an MCU (Multipoint Control Unit) able to use the It can be an endpoint or an MCU (Multipoint Control Unit) able to use the
CLUE protocol. CLUE protocol.
</t> </dd>
<dt>CLUE-capable device:</dt>
<t hangText="CLUE-capable device:"> <dd>
A device that supports the CLUE data channel A device that (1) supports the CLUE data channel
<xref target="I-D.ietf-clue-datachannel"/>, the CLUE protocol <xref target="RFC8850" format="default"/>, the CLUE protocol,
and the principles of CLUE negotiation, and seeks CLUE-enabled calls. and the principles of CLUE negotiation and (2)&nbsp;seeks CLUE-enabled calls.
</t> </dd>
<dt>Endpoint:</dt>
<t hangText="Endpoint:">A CLUE-capable device that is the logical point <dd>A CLUE-capable device that is the logical point
of final termination through receiving, decoding and rendering, and/or of final termination through receiving, decoding, and rendering, and/or
initiation through capturing, encoding, and sending of media initiation through the capturing, encoding, and sending of media
streams. An endpoint consists of one or more physical devices streams. An endpoint consists of one or more physical devices
that source and sink media streams, and exactly one that source and sink media streams, and exactly one
<xref target="RFC4353"/> participant (as described in <xref target="RFC4353" format="default"/>)
Participant (which, in turn, includes exactly one <xref target="RFC3261" /> User that, in turn, includes exactly one user agent <xref target="RFC3261"
Agent). format="default"/>. Endpoints can be anything from multiscreen/multicamera
Endpoints can be anything from multiscreen/multicamera rooms to rooms to handheld devices.
handheld devices. </dd>
</t> <dt>Multipoint Control Unit (MCU):</dt>
<dd>A CLUE-capable device that connects
<t hangText="Multipoint Control Unit (MCU):">a CLUE-capable device that connects
two or more endpoints together into one single multimedia two or more endpoints together into one single multimedia
conference <xref target="RFC7667"/>. conference <xref target="RFC7667" format="default"/>.
An MCU includes an <xref target="RFC4353"/>-like Mixer, An MCU includes a mixer (as defined in <xref target="RFC4353" format="default"/>
without the <xref target="RFC4353"/> requirement to send media to each ),
participant.</t> without the requirement per <xref target="RFC4353" format="default"/> to send me
dia to each
<t hangText="Media:"> Any data that, after suitable encoding, can be participant.</dd>
conveyed over RTP, including audio, video or timed text.</t> <dt>Media:</dt>
<t hangText="Media Capture:">a source of Media, such as from one or more <dd>Any data that, after suitable encoding, can be
Capture Devices or constructed from other Media streams.</t> conveyed over RTP, including audio, video, or timed text.</dd>
<t hangText="Media Consumer (MC):">A CLUE Participant (i.e., an Endpoint <dt>Media Capture:</dt>
or an MCU) able to receive Capture Encodings.</t> <dd>A source of media -- for example, from one or more
<t hangText="Media Provider (MP):">A CLUE Participant (i.e., an Endpoint Capture Devices or constructed from other Media streams.</dd>
or an MCU) able to send Capture Encodings.</t> <dt>Media Consumer (MC):</dt>
<t hangText="Stream:">a Capture Encoding sent from a Media Provider to <dd>A CP (i.e., an Endpoint
a Media Consumer via RTP <xref target="RFC3550"/>.</t> or an MCU) able to receive Capture Encodings.</dd>
</list> <dt>Media Provider (MP):</dt>
</t> <dd>A CP (i.e., an Endpoint
</section> or an MCU) able to send Capture Encodings.</dd>
<dt>Stream:</dt>
<section title="Conventions"> <dd>A Capture Encoding sent from an MP to
an MC via RTP <xref target="RFC3550" format="default"/>.</dd>
<t> </dl>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL </section>
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", <section numbered="true" toc="default">
"MAY", and "OPTIONAL" in this document are to be interpreted as <name>Conventions</name>
described in BCP 14 <xref target="RFC2119"></xref> <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
<xref target="RFC8174"></xref> when, and only when, they "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
appear in all capitals, as shown here. "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>",
"<bcp14>SHOULD NOT</bcp14>",
<!-- "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this to be interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/>
document are to be interpreted as described in BCP 14, RFC 2119 <xref target="RFC8174"/> when, and only when, they appear in all capitals,
<xref target="RFC2119"></xref>. as shown here.</t>
</section>
</t> <section anchor="sec-overview" numbered="true" toc="default">
</section> <name>Overview of the CLUE Protocol</name>
<t>
<!-- Overview of the protocol architecture -->
<section
title="Overview of the CLUE protocol"
anchor="sec-overview">
<t>
The CLUE protocol is conceived to enable CLUE telepresence sessions. The CLUE protocol is conceived to enable CLUE telepresence sessions.
It is designed in order to address SDP limitations in terms of the It is designed to address Session Description Protocol (SDP) limitations in term s of the
description of some information about the multimedia streams that are description of some information about the multimedia streams that are
involved in a real-time multimedia conference. involved in a real-time multimedia conference.
Indeed, by simply using SDP it is not possible to convey information Indeed, by simply using SDP, it is not possible to convey information
about the features of the flowing multimedia streams that are needed about the features of the flowing multimedia streams that are needed
to enable a "being there" rendering experience. to enable a "being there" rendering experience.
Such information is contained in the CLUE framework document Such information is contained in the CLUE framework document
<xref target="I-D.ietf-clue-framework"/> <xref target="RFC8845" format="default"/>
and formally defined and described in the CLUE data model document and formally defined and described in the CLUE data model document
<xref target="I-D.ietf-clue-data-model-schema"/>. <xref target="RFC8846" format="default"/>.
The CLUE protocol represents the mechanism for the exchange of The CLUE protocol represents the mechanism for the exchange of
telepresence information between CLUE Participants. telepresence information between CPs.
It mainly provides the messages to enable a Media Provider to advertise It mainly provides the messages to enable an MP to advertise
its telepresence capabilities and to enable a Media Consumer to select its telepresence capabilities and to enable an MC to select
the desired telepresence options. the desired telepresence options.
</t> </t>
<t> <t>
The CLUE protocol, as defined in the following, is a stateful, The CLUE protocol, as defined in this document and further described below,
client-server, XML-based application protocol. is a stateful client-server XML-based application protocol.
CLUE protocol messages flow on a reliable and ordered SCTP over DTLS CLUE protocol messages flow on a reliable and ordered SCTP-over-DTLS
transport channel connecting two CLUE Participants. transport channel connecting two CPs.
Messages carry information taken from the XML-based CLUE data model 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: Three main communication phases can be identified:
<list style="numbers">
<t>
Establishment of the CLUE data channel: in this phase, the CLUE data
channel setup takes place. If it completes successfully, the CPs are
able to communicate and start the initiation phase.
</t> </t>
<t> <dl newline="true" spacing="normal">
Negotiation of the CLUE protocol version and extensions (initiation phase): <dt>Establishment of the CLUE data channel:</dt>
the CPs connected via the CLUE data channel agree on the version and on <dd>In this phase, the CLUE data
the extensions to be used during the telepresence session. Special CLUE channel setup takes place. If it completes successfully, the CPs are
able to communicate and start the initiation phase.</dd>
<dt>Negotiation of the CLUE protocol version and extensions (initiation phase):<
/dt>
<dd>The CPs connected via the CLUE data channel agree on the protocol version an
d extensions to be used during the telepresence session. Special CLUE
messages are used for such a task ('options' and 'optionsResponse'). messages are used for such a task ('options' and 'optionsResponse').
The version and extensions negotiation can be performed once during the The negotiation of the version and extensions can be performed once during the
CLUE session and only at this stage. CLUE session and only at this stage.
At the end of that basic negotiation, each CP starts its activity as a At the end of that basic negotiation, each CP starts its activity as a
CLUE MP and/or CLUE MC. CLUE MP and/or CLUE MC.</dd>
</t> <dt>Description and negotiation of CLUE telepresence capabilities:</dt>
<t> <dd>In this
CLUE telepresence capabilities description and negotiation: in this
phase, the MP-MC dialogues take place on the data channel by means of phase, the MP-MC dialogues take place on the data channel by means of
the CLUE protocol messages. the CLUE protocol messages.</dd>
</t> </dl>
</list> <t>
</t> As soon as the channel is ready, the CPs must agree on the
<t>
As soon as the channel is ready, the CLUE Participants must agree on the
protocol version and extensions to be used within the telepresence session. protocol version and extensions to be used within the telepresence session.
CLUE protocol version numbers are characterized by a major version CLUE protocol version numbers are characterized by a major version
number (single digit) and a minor version number (single digit), both number and a minor version number, both unsigned integers, separated by a dot.
unsigned integers, separated by a dot. While minor version numbers denote backward-compatible changes in the
While minor version numbers denote backward compatible changes in the
context of a given major version, different major version numbers context of a given major version, different major version numbers
generally indicate a lack of interoperability between the protocol generally indicate a lack of interoperability between the protocol
implementations. implementations.
In order to correctly establish a CLUE dialogue, the involved CPs must In order to correctly establish a CLUE dialogue, the involved CPs must
have in common a major version number (see <xref target="sec-versioning"/> have in common a major version number (see <xref target="sec-versioning" format= "default"/>
for further details). for further details).
The subset of the extensions that are allowed The subset of the extensions that are allowed
within the CLUE session is also determined in the initiation phase. within the CLUE session is also determined in the initiation phase.
It includes only the extensions that are supported by It includes only the extensions that are supported by
both parties. both parties.
A mechanism for the negotiation of the CLUE protocol version and A mechanism for the negotiation of the CLUE protocol version and
extensions is part of the initiation phase. extensions is part of the initiation phase.
According to such a solution, the CP that is the CLUE Channel According to such a solution, the CP that is the CLUE Channel
Initiator (CI) issues a proper CLUE message ('options') Initiator (CI) issues a proper CLUE message ('options')
to the CP that is the Channel Receiver (CR) specifying the supported to the CP that is the Channel Receiver (CR), specifying the supported
version and extensions. version and extensions.
The CR then answers by selecting the subset of the CI 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 that it is able to support and determines the protocol version to
be used. be used.
</t> </t>
<t> <t>
After the negotiation phase is completed, CLUE Participants describe After the negotiation phase is completed, CPs describe
and agree on the media flows to be exchanged. and agree on the media flows to be exchanged.
In many cases CPs will seek to both transmit and receive media. Hence In many cases, CPs will seek to both transmit and receive media. Hence,
in a call between two CPs, A and B, there would be two separate message in a call between two CPs (e.g., CPs A and B), there would be two separate messa
ge
exchange sequences, as follows: exchange sequences, as follows:
</t> </t>
<t> <ol spacing="normal" type="1">
<list style="numbers"> <li>the one needed to describe and set up the media streams sent from
<t>the one needed to describe and set up the media streams sent from A to B, i.e., the dialogue between A's MP side and B's MC side.</li>
A to B, i.e., the dialogue between A's Media Provider side and B's Media <li>the one needed to describe and set up the media streams sent from B
Consumer side</t> to A, i.e., the dialogue between B's MP side and A's MC side.</li>
<t>the one needed to describe and set up the media streams sent from B </ol>
to A, i.e., the dialogue between B's Media Provider side and A's Media <t>
Consumer side</t>
</list>
</t>
<t>
CLUE messages for the media session description and negotiation are CLUE messages for the media session description and negotiation are
designed by considering the MP side as the server side of the designed by considering the MP side to be the server side of the
protocol, since it produces and provides media streams, and the MC protocol, since it produces and provides media streams, and the MC
side as the client side of the protocol, since it requests and receives side as the client side of the protocol, since it requests and receives
media streams. media streams.
The messages that are exchanged to set up the telepresence media The messages that are exchanged to set up the telepresence media
session are described by focusing on a single MP-MC dialogue. session are described by focusing on a single MP-MC dialogue.
</t> </t>
<t> <t>
The MP first advertises its available media captures and encoding The MP first advertises its available media captures and encoding
capabilities to the MC, as well as its simultaneity constraints, capabilities to the MC, as well as its simultaneity constraints,
according to the information model defined in according to the information model defined in
<xref target="I-D.ietf-clue-framework"/>. <xref target="RFC8845" format="default"/>.
The CLUE message conveying the MP's multimedia offer is the The CLUE message conveying the MP's multimedia offer is the
'advertisement' message. 'advertisement' message.
Such message leverages the XML data model definitions provided in Such a message leverages the XML data model definitions provided in
<xref target="I-D.ietf-clue-data-model-schema"/>. <xref target="RFC8846" format="default"/>.
</t> </t>
<t> <t>
The MC selects the desired streams of the MP by using the 'configure' The MC selects the desired streams of the MP by using the 'configure'
message, which makes reference to the information carried in the message, which makes reference to the information carried in the
previously received 'advertisement'. previously received 'advertisement'.
</t> </t>
<t> <t>
Besides 'advertisement' and 'configure', Besides 'advertisement' and 'configure',
other messages have been conceived in order to provide all the needed other messages have been conceived in order to provide all needed
mechanisms and operations. Such messages are detailed in the mechanisms and operations. Such messages are detailed in the
following sections. following sections.
</t> </t>
</section> </section>
<section anchor="sec-messages" numbered="true" toc="default">
<section title="Protocol messages" anchor="sec-messages"> <name>Protocol Messages</name>
<t> <t>
CLUE protocol messages are textual, XML-based messages that enable the CLUE protocol messages are textual XML-based messages that enable the
configuration of the telepresence session. configuration of the telepresence session.
The formal definition of such messages is provided in the XML Schema The formal definition of such messages is provided in the XML schema
provided at the end of this document (<xref target="sec-schema"/>). in <xref target="sec-schema" format="default"/>.
This section includes non-normative excerpts of the schema to aid in This section includes non-normative excerpts of the schema to aid in
describing it. describing it.
</t> </t>
<t> <t>
The XML definitions of the CLUE information provided in The XML definitions of the CLUE information provided in
<xref target="I-D.ietf-clue-data-model-schema"/> are included <xref target="RFC8846" format="default"/> are included
within some CLUE protocol messages within some CLUE protocol messages
(namely the 'advertisement' and the 'configure' messages), in (namely the 'advertisement' and 'configure' messages), in
order to use the concepts defined in <xref target="I-D.ietf-clue-framework"/>. order to use the concepts defined in <xref target="RFC8845" format="default"/>.
</t>
<t>
The CLUE protocol messages are the following:
</t> </t>
<t> <t>
<list style="symbols"> The CLUE protocol messages are as follows:
<t>options</t>
<t>optionsResponse</t>
<t>advertisement</t>
<t>ack</t>
<t>configure</t>
<t>configureResponse</t>
</list>
</t> </t>
<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 While the 'options' and 'optionsResponse' messages are exchanged in the
initiation phase between the CPs, the other messages are involved in initiation phase between the CPs, the other messages are involved in
MP-MC dialogues. Please note that the word "dialog" in this document is MP-MC dialogues. Please note that the word "dialogue" as used in this document i s
not related to SIP's usage of the same term. It refers to message exchange not related to SIP's usage of the same term. It refers to message exchange
sequences between a CLUE Media Provider and a Clue Media Consumer. sequences between a CLUE MP and a Clue MC.
</t> </t>
<t> <t>
Each CLUE message inherits a basic structure depicted in the following Each CLUE message inherits a basic structure, as depicted in the following
excerpt (<xref target="fig:message"/>): excerpt (<xref target="fig_message" format="default"/>):
</t> </t>
<t> <figure anchor="fig_message">
<figure align="center" <name>Structure of a CLUE Message</name>
title = "Structure of a CLUE message" anchor="fig:message"> <sourcecode name="" type="xml"><![CDATA[
<artwork>
<![CDATA[
<xs:complexType name="clueMessageType" abstract="true"> <xs:complexType name="clueMessageType" abstract="true">
<xs:sequence> <xs:sequence>
<xs:element name="clueId" type="xs:string" minOccurs="0"/> <xs:element name="clueId" type="xs:string" minOccurs="0"/>
<xs:element name="sequenceNr" type="xs:positiveInteger"/> <xs:element name="sequenceNr" type="xs:positiveInteger"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="protocol" type="xs:string" fixed="CLUE" <xs:attribute name="protocol" type="xs:string" fixed="CLUE"
use="required"/> use="required"/>
<xs:attribute name="v" type="versionType" use="required"/> <xs:attribute name="v" type="versionType" use="required"/>
</xs:complexType> </xs:complexType>
<!-- VERSION TYPE --> <!-- VERSION TYPE -->
<xs:simpleType name="versionType"> <xs:simpleType name="versionType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:pattern value="[1-9][0-9]*\.[0-9]+" /> <xs:pattern value="[1-9][0-9]*\.[0-9]+" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>]]></sourcecode> </figure>
]]> <t>
</artwork> The information contained in each CLUE message is as follows:
</figure>
</t>
<t>
The information contained in each CLUE message is:
</t> </t>
<t> <dl spacing="normal">
<list style="symbols"> <dt>clueId:</dt><dd>An optional XML element containing the identifier (i
<t>clueId: an optional XML element containing the identifier (in the form of a n the form of a
generic string) of the CP within the telepresence system;</t> generic string) of the CP within the telepresence system.</dd>
<t>sequenceNr: an XML element containing the local message sequence <dt>sequenceNr:</dt><dd>An XML element containing the local message sequ
ence
number. number.
The sender MUST increment the sequence numbers by one for each new The sender <bcp14>MUST</bcp14> increment the sequence number by one for each new
message sent, message sent, and
the receiver MUST remember the most recent sequence number received and the receiver <bcp14>MUST</bcp14> remember the most recent sequence number receiv
ed and
send back send back
a 402 error if it receives a message with an unexpected sequence number a 402 error if it receives a message with an unexpected sequence number
(e.g., sequence number gap, repeated sequence number, sequence number (e.g., sequence number gap, repeated sequence number, sequence number
too small). too small).
The initial sequence number can be chosen randomly by each party;</t> The initial sequence number can be chosen randomly by each party.</dd>
<t>protocol: a mandatory attribute set to "CLUE", identifying the <dt>protocol:</dt><dd>A mandatory attribute set to "CLUE", identifying t
procotol the messages refer to;</t> he
<t>v: a mandatory attribute carrying the version of the protocol. protocol the messages refer to.</dd>
The content of the "v" attribute is composed by the major version number <dt>v:</dt><dd>A mandatory attribute carrying the version of the protoco
l.
The content of the "v" attribute is composed of the major version number
followed by a dot and then by the minor version number of the CLUE followed by a dot and then by the minor version number of the CLUE
protocol in use. The major number cannot be "0" and, if it is more than protocol in use. The major number cannot be "0", and if it is more than
one digit, it cannot start with a "0". one digit, it cannot start with a "0".
Allowed values are of this kind are, e.g., "1.3", "2.0", "20.44" etc. Allowed values of this kind are "1.3", "2.0", "20.44", etc.
This document describes version 1.0. This document describes version 1.0.</dd>
</t> </dl>
</list> <t>
</t>
<t>
Each CP is responsible for creating and updating up to three independent Each CP is responsible for creating and updating up to three independent
streams of sequence numbers in messages it sends: (i) one for the streams of sequence numbers in messages it sends: (i) one for the
messages sent in the initiation phase, (ii) one for the messages sent as messages sent in the initiation phase, (ii)&nbsp;one for the messages sent as
MP (if it is acting as a MP), and (iii) one for the messages sent as MC an MP (if it is acting as an MP), and (iii) one for the messages sent as an MC
(if it is acting as a MC). (if it is acting as an MC).
</t> </t>
<t> <t>
In particular, CLUE response messages ('optionsResponse', 'ack', 'configureRespo nse') In particular, CLUE response messages ('optionsResponse', 'ack', 'configureRespo nse')
derive from a base type, inheriting from the clueMessageType, which is defined a s follows derive from a base type, inheriting from the clueMessageType, which is defined a s follows
(<xref target="fig:clue_response"/>): (<xref target="fig_clue_response" format="default"/>):
</t> </t>
<figure anchor="fig_clue_response">
<t> <name>Structure of CLUE Response Messages</name>
<figure align="center" <sourcecode name="" type="xml"><![CDATA[
title = "Structure of CLUE response messages"
anchor="fig:clue_response">
<artwork>
<![CDATA[
<xs:complexType name="clueResponseType"> <xs:complexType name="clueResponseType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<xs:element name="responseCode" type="responseCodeType"/> <xs:element name="responseCode" type="responseCodeType"/>
<xs:element name="reasonString" type="xs:string" minOccurs="0"/> <xs:element name="reasonString" type="xs:string" minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> <t>
</artwork> The elements &lt;responseCode&gt; and &lt;reasonString&gt; are populated as deta
</figure> iled in
</t> <xref target="sec-resp-codes" format="default"/>.
</t>
<t> <section anchor="subsec-options" numbered="true" toc="default">
The elements &lt;responseCode&gt; and &lt;reasonString&gt; get populated as deta <name>&apos;options&apos;</name>
iled in <t>
<xref target="sec-resp-codes"/> The 'options' message is sent by the CP that is the CI
to the CP that is the CR as soon as the CLUE data channel is ready.
</t>
<section title="options" anchor="subsec-options">
<t>
The 'options' message is sent by the CLUE Participant that is the
Channel Initiator to the CLUE Participant that is
the Channel Receiver as soon as the CLUE data channel is ready.
Besides the information envisioned in the basic structure, it specifies: Besides the information envisioned in the basic structure, it specifies:
</t> </t>
<t> <dl spacing="normal">
<list style="symbols"> <dt>&lt;mediaProvider&gt;:</dt>
<t>&lt;mediaProvider&gt;: a mandatory boolean field set to "true" if the CP is <dd>A mandatory boolean field set to "true" if the CP is
able to act as a MP</t> able to act as an MP.</dd>
<t>&lt;mediaConsumer&gt;: a mandatory boolean field set to "true" if the CP is <dt>&lt;mediaConsumer&gt;:</dt>
able to act as a MC</t> <dd>A mandatory boolean field set to "true" if the CP is
<t>&lt;supportedVersions&gt;: the list of the supported versions</t> able to act as an MC.</dd>
<t>&lt;supportedExtensions&gt;: the list of the supported extensions</t> <dt>&lt;supportedVersions&gt;:</dt>
</list> <dd>The list of supported versions.</dd>
</t> <dt>&lt;supportedExtensions&gt;:</dt>
<t> <dd>The list of supported extensions.</dd>
The XML Schema of such a message is reported below </dl>
(<xref target="fig:options"/>): <t>
The XML schema of such a message is shown below
(<xref target="fig_options" format="default"/>):
</t> </t>
<t> <figure anchor="fig_options">
<figure align="center" <name>Structure of a CLUE 'options' Message</name>
title = "Structure of CLUE 'options' message" anchor="fig:options"> <sourcecode name="" type="xml"><![CDATA[
<artwork>
<![CDATA[
<!-- CLUE OPTIONS --> <!-- CLUE OPTIONS -->
<xs:complexType name="optionsMessageType"> <xs:complexType name="optionsMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<xs:element name="mediaProvider" type="xs:boolean" /> <xs:element name="mediaProvider" type="xs:boolean" />
<xs:element name="mediaConsumer" type="xs:boolean" /> <xs:element name="mediaConsumer" type="xs:boolean" />
<xs:element name="supportedVersions" type="versionsListType" <xs:element name="supportedVersions" type="versionsListType"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="supportedExtensions" type="extensionsListType" <xs:element name="supportedExtensions"
minOccurs="0"/> type="extensionsListType"
minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- VERSIONS LIST TYPE --> <!-- VERSIONS LIST TYPE -->
<xs:complexType name="versionsListType"> <xs:complexType name="versionsListType">
<xs:sequence> <xs:sequence>
<xs:element name="version" type="versionType" minOccurs="1" <xs:element name="version" type="versionType" minOccurs="1"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> </xs:complexType>
<!-- EXTENSIONS LIST TYPE --> <!-- EXTENSIONS LIST TYPE -->
<xs:complexType name="extensionsListType"> <xs:complexType name="extensionsListType">
<xs:sequence> <xs:sequence>
<xs:element name="extension" type="extensionType" minOccurs="1" <xs:element name="extension" type="extensionType" minOccurs="1"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> </xs:complexType>
<!-- EXTENSION TYPE --> <!-- EXTENSION TYPE -->
<xs:complexType name="extensionType"> <xs:complexType name="extensionType">
<xs:sequence> <xs:sequence>
<xs:element name="name" type="xs:string" /> <xs:element name="name" type="xs:string" />
<xs:element name="schemaRef" type="xs:anyURI" /> <xs:element name="schemaRef" type="xs:anyURI" />
<xs:element name="version" type="versionType" /> <xs:element name="version" type="versionType" />
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> <t>
</artwork> &lt;supportedVersions&gt; contains the list of versions that are
</figure>
</t>
<t>
&lt;supportedVersions&gt; contains the list of the versions that are
supported by the CI, supported by the CI,
each one represented in a child &lt;version&gt; element. each one represented in a child &lt;version&gt; element.
The content of each &lt;version&gt; element is a string made by the The content of each &lt;version&gt; element is a string made of the
major version number major version number
followed by a dot and then by the minor version number (e.g., 1.3 or followed by a dot and then by the minor version number (e.g., 1.3 or
2.4). 2.4).
Exactly one &lt;version&gt; element MUST be provided Exactly one &lt;version&gt; element <bcp14>MUST</bcp14> be provided
for each major version supported, containing the maximum minor version for each major version supported, containing the maximum minor version
number of such a version, since all minor versions are backward number of such a version, since all minor versions are backward
compatible. compatible.
If no &lt;supportedVersions&gt; is carried within the 'options' message, If no &lt;supportedVersions&gt; is carried within the 'options' message,
the CI supports only the version declared in the "v" attribute the CI supports only the version declared in the "v" attribute
and all the versions having the same major version number and lower and all the versions having the same major version number and lower
minor version number. minor version number.
For example, if the "v" attribute has a value of "3.4" and there is no For example, if the "v" attribute has a value of "3.4" and there is no
&lt;supportedVersions&gt; tag in the 'options' message, &lt;supportedVersions&gt; element in the 'options' message,
it means the CI supports only major version 3 with it means the CI supports only major version 3 with
all the minor versions comprised between 3.0 and 3.4, with version 3.4 all minor versions from 3.0 through 3.4. If &lt;supportedVersions&gt; is provide
included. d,
If a &lt;supportedVersion&gt; is provided, at least one &lt;version&gt; element <bcp14>MUST</bcp14> be included.
at least one &lt;version&gt; tag MUST be included. In this case, the "v" attribute <bcp14>SHOULD</bcp14> be set to the largest mino
In this case, the "v" attribute SHOULD be set to the largest minor r
version of the smallest major version advertised in the version of the smallest major version advertised in the
&lt;supportedVersions&gt; list. &lt;supportedVersions&gt; list.
Indeed, the intention behind the "v" attribute is that some Indeed, the intention behind the "v" attribute is that some
implementation that receives a version number in the "v" field implementation that receives a version number in the "v" field
with a major number higher than it understands is supposed to with a major number higher than it understands is supposed to
close the connection, since it runs a risk of misinterpreting close the connection, since it runs a risk of misinterpreting
the contents of messages. the contents of messages.
The minor version is less useful in this context, The minor version is less useful in this context,
since minor versions are defined to be both backwards and since minor versions are defined to be both backward and
forwards compatible, but it is more useful to know the highest forward compatible and the value can in any case be parsed out of the
&lt;version&gt; list. It is more useful to know the highest
minor version supported than some random minor version, as it minor version supported than some random minor version, as it
indicates the full feature set that is supported. 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 &lt;version&gt; list.
</t> </t>
<t>
<t>
The &lt;supportedExtensions&gt; element specifies the list of extensions The &lt;supportedExtensions&gt; element specifies the list of extensions
supported by the CI. supported by the CI.
If there is no &lt;supportedExtensions&gt; in the 'options' message, the CI If there is no &lt;supportedExtensions&gt; in the 'options' message, the CI
does not support anything other than what is envisioned in the versions does not support anything other than what is envisioned in the versions
it supports. it supports.
For each extension, an &lt;extension&gt; element is provided. For each extension, an &lt;extension&gt; element is provided.
An extension is characterized by a name, an XML schema of reference where An extension is characterized by a name, an XML schema of reference where
the extension is defined, and the version of the protocol which the extension the extension is defined, and the version of the protocol that the extension
refers to. refers to.
</t> </t>
</section> </section>
<section anchor="subsec-options-response" numbered="true" toc="default">
<section title="optionsResponse" anchor="subsec-options-response"> <name>&apos;optionsResponse&apos;</name>
<t>
<t> The 'optionsResponse' (<xref target="fig_options_response" format="default"/>)
The 'optionsResponse' (<xref target="fig:options_response"/>)
is sent by a CR to a CI as a reply to the 'options' is sent by a CR to a CI as a reply to the 'options'
message. message.
The 'optionsResponse' contains The 'optionsResponse' contains
a mandatory response code and a reason string indicating a mandatory response code and a reason string indicating
the processing result of the 'options' message. the processing result of the 'options' message.
If the responseCode is between 200 and 299 inclusive, If the responseCode is between 200 and 299 inclusive,
the response MUST also include &lt;mediaProvider&gt;, the response <bcp14>MUST</bcp14> also include &lt;mediaProvider&gt;,
&lt;mediaConsumer&gt;, &lt;version&gt; and &lt;commonExtensions&gt; &lt;mediaConsumer&gt;, &lt;version&gt;, and &lt;commonExtensions&gt;
elements; it MAY include them for any other response code. elements; it <bcp14>MAY</bcp14> include them for any other response
&lt;mediaProvider&gt; and &lt;mediaConsumer&gt; code. &nbsp;&lt;mediaProvider&gt; and &lt;mediaConsumer&gt;
elements (which are of a boolean nature) are associated with the elements (which are of a boolean nature) are associated with the
supported roles (in terms of, respectively MP and MC), supported roles (in terms of the MP and the MC, respectively),
similarly to what the CI does in the 'options' message. similarly to what the CI does in the 'options' message.
The &lt;version&gt; field indicates the highest commonly supported The &lt;version&gt; element indicates the highest commonly supported
version number. version number.
The content of the &lt;version&gt; The content of the &lt;version&gt;
element MUST be a string made of the major version number element <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 followed by a dot and then by the minor version number (e.g., 1.3 or
2.4). 2.4).
Finally, the commonly supported extensions are copied in the Finally, the commonly supported extensions are copied in the
&lt;commonExtensions&gt; field. &lt;commonExtensions&gt; element.
</t> </t>
<t> <figure anchor="fig_options_response">
<figure align="center" <name>Structure of a CLUE 'optionsResponse' Message</name>
title = "Structure of CLUE 'optionsResponse' message" <sourcecode name="" type="xml"><![CDATA[
anchor="fig:options_response">
<artwork>
<![CDATA[
<!-- CLUE 'optionsResponse' --> <!-- CLUE 'optionsResponse' -->
<xs:complexType name="optionsResponseMessageType"> <xs:complexType name="optionsResponseMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueResponseType"> <xs:extension base="clueResponseType">
<xs:sequence> <xs:sequence>
<xs:element name="mediaProvider" type="xs:boolean" <xs:element name="mediaProvider" type="xs:boolean"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="mediaConsumer" type="xs:boolean" <xs:element name="mediaConsumer" type="xs:boolean"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="version" type="versionType" minOccurs="0"/> <xs:element name="version" type="versionType" minOccurs="0"/>
<xs:element name="commonExtensions" type="extensionsListType" <xs:element name="commonExtensions" type="extensionsListType"
minOccurs="0"/> minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> <t>
</artwork> Upon reception of the 'optionsResponse', the version to be used is the one
</figure> provided in the &lt;version&gt; element of the message.
</t> The subsequent CLUE messages <bcp14>MUST</bcp14> use such a version number in th
<t> e "v"
Upon reception of the 'optionsResponse' the version to be used is the one attribute. The allowed extensions in the CLUE dialogue are those
provided in the &lt;version&gt; tag of the message. indicated in the &lt;commonExtensions&gt; element of the 'optionsResponse' messa
The following CLUE messages MUST use such a version number in the "v" ge.
attribute.
The allowed extensions in the CLUE dialogue are those
indicated in the &lt;commonExtensions&gt; of the 'optionsResponse' message.
</t> </t>
</section> </section>
<section anchor="subsec-adv" numbered="true" toc="default">
<section title="advertisement" anchor="subsec-adv"> <name>&apos;advertisement&apos;</name>
<t> <t>
The 'advertisement' message is used by each MP to advertise the The 'advertisement' message is used by each MP to advertise the
available media captures and related information to the corresponding MC. 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 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 successful completion of the initiation phase, i.e., as soon as the
version and the extensions of the CLUE protocol are agreed between the CPs. CPs have agreed on the version and extensions of the CLUE protocol.
During a single CLUE session, an MP may send new 'advertisement' messages to rep lace During a single CLUE session, an MP may send new 'advertisement' messages to rep lace
the previous advertisement, if, for instance, its CLUE the previous advertisement if, for instance, its CLUE
telepresence media capabilities change mid-call. A new 'advertisement' completel telepresence media capabilities change mid&nbhy;call. A new 'advertisement' comp
y letely
replaces the previous 'advertisement'. replaces the previous 'advertisement'.
</t> </t>
<t> <t>
The 'advertisement' structure is defined in the schema excerpt below The 'advertisement' structure is defined in the schema excerpt below
(<xref target="fig:adv"/>). (<xref target="fig_adv" format="default"/>).
The 'advertisement' contains elements compliant with the CLUE data model that The 'advertisement' contains elements compliant with the CLUE data model that
characterize the MP's telepresence offer. characterize the MP's telepresence offer.
Namely, such elements are: Namely, such elements are the list of</t>
the list of the media captures (&lt;mediaCaptures&gt;), <ul spacing="normal">
of the encoding groups (&lt;encodingGroups&gt;), <li>media captures (&lt;mediaCaptures&gt;),</li>
of the capture scenes (&lt;captureScenes&gt;), <li>encoding groups (&lt;encodingGroups&gt;),</li>
of the simultaneous sets (&lt;simultaneousSets&gt;), <li>capture scenes (&lt;captureScenes&gt;),</li>
of the global views (&lt;globalViews&gt;), <li>simultaneous sets (&lt;simultaneousSets&gt;),</li>
and of the represented participants (&lt;people&gt;). <li>global views (&lt;globalViews&gt;), and</li>
Each of them is fully described in the CLUE framework document <li>represented participants (&lt;people&gt;).</li>
and formally defined in the CLUE data model document. </ul>
</t>
<t> <t>Each of them is fully described in the CLUE framework document
<figure align="center" <xref target="RFC8845" format="default"/> and formally defined in the CLUE
title = "Structure of CLUE 'advertisement' message" data model document <xref target="RFC8846" format="default"/>.
anchor="fig:adv"> </t>
<artwork> <figure anchor="fig_adv">
<![CDATA[ <name>Structure of a CLUE 'advertisement' Message</name>
<sourcecode name="" type="xml"><![CDATA[
<!-- CLUE ADVERTISEMENT MESSAGE TYPE --> <!-- CLUE ADVERTISEMENT MESSAGE TYPE -->
<xs:complexType name="advertisementMessageType"> <xs:complexType name="advertisementMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<!-- mandatory --> <!-- mandatory -->
<xs:element name="mediaCaptures" type="dm:mediaCapturesType"/> <xs:element name="mediaCaptures"
<xs:element name="encodingGroups" type="dm:encodingGroupsType"/> type="dm:mediaCapturesType"/>
<xs:element name="captureScenes" type="dm:captureScenesType"/> <xs:element name="encodingGroups"
type="dm:encodingGroupsType"/>
<xs:element name="captureScenes"
type="dm:captureScenesType"/>
<!-- optional --> <!-- optional -->
<xs:element name="simultaneousSets" <xs:element name="simultaneousSets"
type="dm:simultaneousSetsType" minOccurs="0"/> type="dm:simultaneousSetsType" minOccurs="0"/>
<xs:element name="globalViews" type="dm:globalViewsType" <xs:element name="globalViews" type="dm:globalViewsType"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="people" type="dm:peopleType" minOccurs="0"/> <xs:element name="people"
type="dm:peopleType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> </section>
</artwork> <section anchor="sec-adv-ack" numbered="true" toc="default">
</figure> <name>&apos;ack&apos;</name>
</t> <t>
</section>
<section title="ack" anchor="sec-adv-ack">
<t>
The 'ack' message The 'ack' message
is sent by a MC to a MP to acknowledge an 'advertisement' message. is sent by an MC to an MP to acknowledge an 'advertisement' message.
As it can be seen from the message schema provided in the following As can be seen from the message schema provided in the following
excerpt (<xref target="fig:adv_ack"/>), excerpt (<xref target="fig_adv_ack" format="default"/>),
the 'ack' contains a response code and may contain a reason string the 'ack' contains a response code and may contain a reason string
for describing the processing result of the 'advertisement'. for describing the processing result of the 'advertisement'.
The &lt;advSequenceNr&gt; carries the sequence number of The &lt;advSequenceNr&gt; element carries the sequence number of the
'advertisement' message the 'ack' refers to. 'advertisement' message the 'ack' refers to.
</t> </t>
<t> <figure anchor="fig_adv_ack">
<figure align="center" <name>Structure of a CLUE 'ack' Message</name>
title = "Structure of CLUE 'ack' message" <sourcecode name="" type="xml"><![CDATA[
anchor="fig:adv_ack">
<artwork>
<![CDATA[
<!-- 'ack' MESSAGE TYPE --> <!-- 'ack' MESSAGE TYPE -->
<xs:complexType name="advAcknowledgementMessageType"> <xs:complexType name="advAcknowledgementMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueResponseType"> <xs:extension base="clueResponseType">
<xs:sequence> <xs:sequence>
<xs:element name="advSequenceNr" type="xs:positiveInteger"/> <xs:element name="advSequenceNr" type="xs:positiveInteger"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> </section>
</artwork> <section anchor="sec-conf" numbered="true" toc="default">
</figure> <name>&apos;configure&apos;</name>
</t> <t>
</section> The 'configure' message is sent from an MC to an MP
<section title="configure" anchor="sec-conf">
<t>
The 'configure' message is sent from a MC to a MP
to list the advertised captures the MC wants to receive. to list the advertised captures the MC wants to receive.
The MC MUST send a 'configure' after the reception of an 'advertisement', as wel l as each The MC <bcp14>MUST</bcp14> send a 'configure' after the reception of an 'adverti sement', as well as each
time it wants to request other captures that have been previously advertised by time it wants to request other captures that have been previously advertised by
the MP. the MP.
The content of the 'configure' message is shown below (<xref target="fig:conf"/> ). The content of the 'configure' message is shown below (<xref target="fig_conf" f ormat="default"/>).
</t> </t>
<t> <figure anchor="fig_conf">
<figure align="center" <name>Structure of a CLUE 'configure' Message</name>
title = "Structure of CLUE 'configure' message" <sourcecode name="" type="xml"><![CDATA[
anchor="fig:conf">
<artwork>
<![CDATA[
<!-- CLUE 'configure' MESSAGE TYPE --> <!-- CLUE 'configure' MESSAGE TYPE -->
<xs:complexType name="configureMessageType"> <xs:complexType name="configureMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<!-- mandatory fields --> <!-- mandatory fields -->
<xs:element name="advSequenceNr" type="xs:positiveInteger"/> <xs:element name="advSequenceNr" type="xs:positiveInteger"/>
<xs:element name="ack" type="successResponseCodeType" <xs:element name="ack" type="successResponseCodeType"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="captureEncodings" <xs:element name="captureEncodings"
type="dm:captureEncodingsType" minOccurs="0"/> type="dm:captureEncodingsType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> <t>
</artwork>
</figure>
</t>
<t>
The &lt;advSequenceNr&gt; element contains the sequence number of The &lt;advSequenceNr&gt; element contains the sequence number of
the 'advertisement' message the 'configure' refers to. the 'advertisement' message the 'configure' refers to.
</t> </t>
<t> <t>
The optional &lt;ack&gt; element, when present, contains a success The optional &lt;ack&gt; element, when present, contains a success
response code, as defined in <xref target="sec-resp-codes"/>. response code, as defined in <xref target="sec-resp-codes" format="default"/>.
It indicates that the 'configure' message also acknowledges It indicates that the 'configure' message also acknowledges
with success the referred advertisement ('configure' + 'ack' message). with success the referred advertisement ('configure+ack' message).
The &lt;ack&gt; element MUST NOT be present if an 'ack' message The &lt;ack&gt; element <bcp14>MUST NOT</bcp14> be present if an 'ack' message
(associated with the advertisement carrying that specific sequence (associated with the advertisement carrying that specific sequence
number) has been already sent back to the MP. number) has already been sent back to the MP.
</t> </t>
<t> <t>
The most important content of the 'configure' message is the list of the The most important content of the 'configure' message is the list of
capture encodings provided in the &lt;captureEncodings&gt; element capture encodings provided in the &lt;captureEncodings&gt; element
(see <xref target="I-D.ietf-clue-data-model-schema"/> for the (see <xref target="RFC8846" format="default"/> for the
definition of &lt;captureEncodings&gt;). definition of &lt;captureEncodings&gt;).
Such an element contains a sequence of capture encodings, Such an element contains a sequence of capture encodings,
representing the streams to be instantiated. representing the streams to be instantiated.
</t> </t>
</section>
</section> <section anchor="sec-conf-resp" numbered="true" toc="default">
<section title="configureResponse" anchor="sec-conf-resp"> <name>&apos;configureResponse&apos;</name>
<t> <t>
The 'configureResponse' message is sent from the MP to The 'configureResponse' message is sent from the MP to
the MC to communicate the MC to communicate
the processing result of requests carried in the previously received the processing result of requests carried in the previously received
'configure' message. 'configure' message.
It contains (<xref target="fig:conf_resp"/>) a response code (and As shown in <xref target="fig_conf_resp" format="default"/>, it contains a
optionally a reason string) indicating either the response code (and, optionally, a reason string) indicating either the
success or the failure (along with failure details) of a 'configure' request success or failure (along with failure details) of the 'configure' request
processing. processing.
Following, the &lt;confSequenceNr&gt; field contains The &lt;confSequenceNr&gt; element that follows contains
the sequence number of the 'configure' message the response refers to. the sequence number of the 'configure' message the response refers to.
There is no partial execution of commands. As an example, There is no partial execution of commands. As an example,
if a MP is able to understand all the selected capture encodings except if an MP is able to understand all the selected capture encodings except
one, then the whole command fails and nothing is instantiated. one, then the whole command fails and nothing is instantiated.
</t> </t>
<figure anchor="fig_conf_resp">
<t> <name>Structure of a CLUE 'configureResponse' Message</name>
<sourcecode name="" type="xml"><![CDATA[
<figure align="center"
title = "Structure of CLUE 'configureResponse' message"
anchor="fig:conf_resp">
<artwork>
<![CDATA[
<!-- 'configureResponse' MESSAGE TYPE --> <!-- 'configureResponse' MESSAGE TYPE -->
<xs:complexType name="configureResponseMessageType"> <xs:complexType name="configureResponseMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueResponseType"> <xs:extension base="clueResponseType">
<xs:sequence> <xs:sequence>
<xs:element name="confSequenceNr" type="xs:positiveInteger" /> <xs:element name="confSequenceNr"
type="xs:positiveInteger" />
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" /> <xs:anyAttribute namespace="##other" processContents="lax" />
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> </section>
</artwork> <section anchor="sec-resp-codes" numbered="true" toc="default">
</figure> <name>Response Codes and Reason Strings</name>
</t> <t>
</section>
<section title="Response codes and reason strings" anchor="sec-resp-codes">
<t>
Response codes are defined as a sequence of three digits. Response codes are defined as a sequence of three digits.
A well-defined meaning is associated with the first digit. A well-defined meaning is associated with the first digit.
Response codes beginning with "2" are associated with successful Response codes beginning with "2" are associated with successful
responses. responses.
Response codes that do not begin with either "2" or "1" indicate an 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 error response, i.e., that an error occurred while processing a CLUE
request. request.
In particular, response codes beginning with "3" indicate problems In particular, response codes beginning with "3" indicate problems
with the XML content of the message ("Bad syntax", "Invalid value", with the XML content of the message ("Bad syntax", "Invalid value",
etc.), while response codes beginning with "4" refer to problems etc.), while response codes beginning with "4" refer to problems
related to CLUE protocol semantics ("Invalid sequencing", "Version not related to CLUE protocol semantics ("Invalid sequencing", "Version not
supported", etc.). supported", etc.).
200, 300 and 400 codes are the most generic ones in their respective categories 200, 300, and 400 codes are the most generic codes in their respective categori
. es.
Further response codes can be either defined in future versions of the Further response codes can be defined either in future versions of the
protocol, or defined by leveraging the extension mechanism. protocol or by leveraging the extension mechanism.
In both cases, the new response codes MUST be registered with IANA. In both cases, the new response codes <bcp14>MUST</bcp14> be registered with IA
NA.
Such new response Such new response
codes MUST NOT override the ones here defined and they MUST codes <bcp14>MUST NOT</bcp14> override the codes defined in this document, and they <bcp14>MUST</bcp14>
respect the semantics of the first code digit. respect the semantics of the first code digit.
</t> </t>
<t>
<t>
This document does not define response codes starting with "1", and such 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 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 protocol. The range from 100 to 199 inclusive is reserved for future
major versions of the protocol to define response codes for delayed or major versions of the protocol to define response codes for delayed or
incomplete operations if necessary. Response codes starting with "5" incomplete operations, if necessary. Response codes starting with "5"
through "9" are reserved for future major versions of the protocol to through "9" are reserved for future major versions of the protocol to
define new classes of response, and are not allowed in major version 1 define new classes of responses and are not allowed in major version 1
of the CLUE protocol. of the CLUE protocol.
Response codes starting with "0" are not allowed. Response codes starting with "0" are not allowed.
</t> </t>
<t>
<t> The response codes and reason strings defined for use with version 1 of the
The response codes and strings defined for use with version 1 of the CLUE protocol are listed in <xref target="clue-resp-codes-table" format="default
CLUE protocol are listed in <xref target="fig:codes"/>. "/>.
The "Description" text contained in the table can be sent in the The "Description" text contained in the table can be sent in the
&lt;reasonString&gt; element of a response message. Implementations can &lt;reasonString&gt; element of a response message. Implementations can
(and are encouraged to) include more specific descriptions of the error (and are encouraged to) include descriptions of the error
condition, if possible. condition that are more specific, if possible.
</t> </t>
<t> <table anchor="clue-resp-codes-table">
<figure align="center" <name>CLUE Response Codes</name>
title = "CLUE response codes" <thead>
anchor="fig:codes"> <tr>
<artwork> <th>Response Code</th>
<![CDATA[ <th>Reason String</th>
<th align="center">Description</th>
+-----------------+----------------------+--------------------------+ </tr>
| | | | </thead>
| Response code | Reason string | Description | <tbody>
| | | | <tr>
+-----------------+----------------------+--------------------------+ <td>200</td>
| | | | <td>Success</td>
| 200 | Success | The request has been | <td>The request has been successfully processed.</td>
| | | successfully processed. | </tr>
| | | | <tr>
+-----------------+----------------------+--------------------------+ <td>300</td>
| | | | <td>Low-level request error</td>
| 300 | Low-level request | A generic low-level | <td>A generic low-level request error has occurred.</td>
| | error. | request error has | </tr>
| | | occurred. | <tr>
| | | | <td>301</td>
+-----------------+----------------------+--------------------------+ <td>Bad syntax</td>
| | | | <td>The XML syntax of the message is not correct.</td>
| 301 | Bad syntax | The XML syntax of the | </tr>
| | | message is not correct. | <tr>
+-----------------+----------------------+--------------------------+ <td>302</td>
| | | | <td>Invalid value</td>
| 302 | Invalid value | The message | <td>The message contains an invalid parameter value.</td>
| | | contains an invalid | </tr>
| | | parameter value. | <tr>
+-----------------+----------------------+--------------------------+ <td>303</td>
| | | | <td>Conflicting values</td>
| 303 | Conflicting values | The message | <td>The message contains values that cannot be used together.</td>
| | | contains values that | </tr>
| | | cannot be used together.| <tr>
+-----------------+----------------------+--------------------------+ <td>400</td>
| | | | <td>Semantic errors</td>
| 400 | Semantic errors | Semantic errors in the | <td>The received CLUE protocol message contains semantic errors.</td>
| | | received CLUE protocol | </tr>
| | | message. | <tr>
| | | | <td>401</td>
+-----------------+----------------------+--------------------------+ <td>Version not supported</td>
| | | | <td>The protocol version used in the message is not supported.</td>
| 401 | Version not supported| The protocol version | </tr>
| | | used in the message | <tr>
| | | is not supported. | <td>402</td>
| | | | <td>Invalid sequencing</td>
+-----------------+----------------------+--------------------------+ <td>The received message contains an unexpected sequence number (e.g.,
| | | | sequence number gap, repeated sequence number, or sequence number
| 402 | Invalid sequencing | Sequence number gap; | outdated).</td>
| | | repeated sequence number;| </tr>
| | | sequence number outdated.| <tr>
+-----------------+----------------------+--------------------------+ <td>403</td>
| | | | <td>Invalid identifier</td>
| 403 | Invalid identifier | The clueId used in | <td>The clueId used in the message is invalid or unknown.</td>
| | | the message is | </tr>
| | | not valid or unknown. | <tr>
+-----------------+----------------------+--------------------------+ <td>404</td>
| | | The sequence number of | <td>Advertisement expired</td>
| 404 | advertisement | the advertisement the | <td>The sequence number of the advertisement the 'configure' message refer
| | Expired | configure refers to is | s to is out of date.</td>
| | | out of date. | </tr>
+-----------------+----------------------+--------------------------+ <tr>
| | | | <td>405</td>
| 405 | Subset choice not | The subset choice is not | <td>Subset choice not allowed</td>
| | allowed | allowed for the specified| <td>The subset choice is not allowed for the specified Multiple Content Ca
| | | Multiple Content Capture | pture.</td>
+-----------------+----------------------+--------------------------+ </tr>
</tbody>
]]> </table>
</artwork> </section>
</figure> </section>
</t>
</section>
</section><!-- protocol messages -->
<section title="Protocol state machines" anchor="sec-sm">
<t>
<section anchor="sec-sm" numbered="true" toc="default">
<name>Protocol State Machines</name>
<t>
The CLUE protocol is an application protocol used between two CPs The CLUE protocol is an application protocol used between two CPs
in order to properly configure a multimedia telepresence session. in order to properly configure a multimedia telepresence session.
CLUE protocol messages flow over the CLUE Data Channel, CLUE protocol messages flow over the CLUE data channel,
a DTLS/SCTP channel established as depicted in an SCTP-over-DTLS channel established as depicted in
<xref target="I-D.ietf-clue-datachannel"/>. <xref target="RFC8850" format="default"/>.
We herein discuss the state machines associated with the
We herein discuss the state machines associated, respectively, with the CP (<xref target="fig_protocol_participant" format="default"/>),
CLUE Participant (<xref target="fig:protocol_participant"/>), with the MP role (<xref target="fig_protocol_provider" format="default"/> in <xref ta
the MC role (<xref target="fig:protocol_provider"/>) and with the rget="sec-mp"/>), and the
MP role (<xref target="fig:protocol_consumer"/>). MC role (<xref 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 Endpoints often wish to both send and receive media, i.e., act as both an
MP and MC. MP and an MC.
As such there will often be two sets of messages flowing in opposite As such, there will often be two sets of messages flowing in opposite
directions; the state machines of these two flows do not interact with directions; the state machines of these two flows do not interact with
each other. each other.
Only the CLUE application logic is considered. Only the CLUE application logic is considered.
The interaction of CLUE protocol and SDP negotiations for the media The interaction of CLUE protocol and SDP negotiations for the media
streams exchanged is treated in <xref target="I-D.ietf-clue-signaling"/>. streams exchanged is discussed in <xref target="RFC8848" format="default"/>.
</t> </t>
<t> <figure anchor="fig_protocol_participant">
The main state machines focus on the behavior of the CLUE Participant <name>CLUE Participant State Machine</name>
(CP) acting as a CLUE Channel Initiator/Receiver (CI/CR). <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 the CP acting as a CLUE CI/CR.
</t> </t>
<t> <t>
The initial state is the IDLE one. The initial state is the IDLE state.
When in the IDLE state, the CLUE data channel is not established and When in the IDLE state, the CLUE data channel is not established and
no CLUE-controlled media are exchanged between the two considered no CLUE-controlled media are exchanged between the two
CLUE-capable devices (if there is an ongoing exchange of media streams, CLUE-capable devices in question (if there is an ongoing exchange of media strea
such media streams are not currently CLUE-controlled). ms,
such media streams are not currently CLUE controlled).
</t> </t>
<t> <t>
When the CLUE data channel sets up ("start channel"), When the CLUE data channel is set up ("start channel"),
the CP moves from the IDLE state to the CHANNEL SETUP state. the CP moves from the IDLE state to the CHANNEL SETUP state.
</t> </t>
<t> <t>
If the CLUE data channel is successfully set up ("channel established"), If the CLUE data channel is successfully set up ("channel established"),
the CP moves from the CHANNEL SETUP state to the OPTIONS state. the CP moves from the CHANNEL SETUP state to the OPTIONS state.
Otherwise if "channel error", it moves back to the IDLE state. Otherwise, if a "channel error" occurs, it moves back to the IDLE state.
The same transition happens if the CLUE-enabled The same transition happens if the CLUE-enabled
telepresence session ends ("session ends"), i.e., when an telepresence session ends ("session ends"), i.e., when an
SDP negotiation for removing the CLUE data channel is performed. SDP negotiation for removing the CLUE data channel is performed.
</t> </t>
<t> <t>
When in the OPTIONS state, the CP addresses the initiation phase where When in the OPTIONS state, the CP addresses the initiation phase where
both parts agree on the version and on the extensions to be used in the both parts agree on the version and extensions to be used in the
subsequent CLUE messages exchange phase. subsequent CLUE message exchange phase.
If the CP is the Channel Initiator (CI), it sends an 'options' message and If the CP is the CI, it sends an 'options' message and
waits for the 'optionsResponse' message. waits for the 'optionsResponse' message.
If the CP is the Channel Receiver (CR), it waits for the 'options' message If the CP is the CR, it waits for the 'options' message
and, as soon as it arrives, replies with the 'optionsResponse' message. and, as soon as it arrives, replies with the 'optionsResponse' message.
If the negotiation is successfully completed ("OPTIONS phase success"), If the negotiation is successfully completed ("OPTIONS phase success"),
the CP moves from the OPTIONS state to the ACTIVE state. the CP moves from the OPTIONS state to the ACTIVE state.
If the initiation phase fails ("OPTIONS phase failure"), the CP moves If the initiation phase fails ("OPTIONS phase failure"), the CP moves
from the OPTIONS state to the IDLE state. from the OPTIONS state to the IDLE state.
The initiation phase might fail because of one of the following reasons: The initiation phase might fail for one of the following reasons:
<list style="numbers">
<t> the CI receives an 'optionsResponse' with an error response code</t>
<t> the CI does not receive any 'optionsResponse' and a timeout error
is raised</t>
<t> the CR does not receive any 'options' and a timeout error is raised </t>
</list>
</t> </t>
<t> <ol spacing="normal" type="1">
<li>The CI receives an 'optionsResponse' with an error response code.</l
i>
<li>The CI does not receive any 'optionsResponse', and a timeout error
is raised.</li>
<li>The CR does not receive any 'options', and a timeout error is raised
.</li>
</ol>
<t>
When in the ACTIVE state, the CP starts the envisioned sub-state When in the ACTIVE state, the CP starts the envisioned sub-state
machines (i.e., the MP state machine and the MC state machine) machines (i.e., the MP state machine and the MC state machine)
according to the roles it plays in the telepresence sessions. according to the roles it plays in the telepresence sessions.
Such roles have been previously declared in the 'options' and Such roles have been previously declared in the 'options' and
'optionsResponse' messages involved in the initiation phase 'optionsResponse' messages involved in the initiation phase
(see OPTIONS sections <xref target="subsec-options"/> and (see Sections&nbsp;<xref target="subsec-options" format="counter"/> and
<xref target="subsec-options-response"/> for the details). <xref target="subsec-options-response" format="counter"/> for details).
When in the ACTIVE state, the CP delegates the sending and When in the ACTIVE state, the CP delegates the sending and
the processing of the CLUE messages to the appropriate MP/MC processing of the CLUE messages to the appropriate MP/MC
sub-state machines. sub-state machines.
If the CP receives a further 'options'/'optionsResponse' message, If the CP receives a further 'options'/'optionsResponse' message,
it MUST ignore the message and stay in the ACTIVE state. it <bcp14>MUST</bcp14> ignore the message and stay in the ACTIVE state.
</t>
<!--
<t>
The CP moves from the ACTIVE state to the IDLE one when the
sub-state machines that had been activated are in the relative
TERMINATED state (see sections <xref target="sec-mp"/>
and <xref target="sec-mc"/>).
</t>
-->
<t>
<figure
align="center"
title = "CLUE Participant state machine"
anchor="fig:protocol_participant">
<artwork>
<![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> </t>
<section anchor="sec-mp" numbered="true" toc="default">
<section title="Media Provider's state machine" anchor="sec-mp"> <name>Media Provider's State Machine</name>
<t> <t>
As soon as the sub-state machine of the MP As soon as the sub-state machine of the MP
(<xref target="fig:protocol_provider"/>) is activated, it is in (<xref target="fig_protocol_provider" format="default"/>) is activated, it is in
the ADV state. the ADV state.
In the ADV state, the MP prepares the 'advertisement' message In the ADV state, the MP prepares the 'advertisement' message
reflecting its actual telepresence capabilities. reflecting its actual telepresence capabilities.
</t> </t>
<t> <figure anchor="fig_protocol_provider">
<name>Media Provider's State Machine</name>
<artwork name="" type="" align="left" alt=""><![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 +
| | +---------+
| | |
| | |successful
| | |configureResponse
| | |sent
| | |
| | |
| |configure |
| |received v
| | +-----------+
| +----------+ESTABLISHED|
+-------------+-----------+]]></artwork> </figure>
<t>
After the 'advertisement' has been sent ("advertisement sent"), After the 'advertisement' has been sent ("advertisement sent"),
the MP moves from the ADV state to the WAIT FOR ACK state. If an the MP moves from the ADV state to the WAIT FOR ACK state. If an
'ack' message with a successful response code arrives 'ack' message with a successful response code arrives
("ack received"), the MP moves to the WAIT FOR CONF state. ("ack received"), the MP moves to the WAIT FOR CONF state.
If a NACK arrives (i.e., an 'ack' message with an error response If a NACK arrives (i.e., an 'ack' message with an error response
code), the MP moves back to the ADV state for preparing a new code), the MP moves back to the ADV state for preparation of a new
'advertisement'. 'advertisement'.
When in the WAIT FOR ACK state, if a 'configure' message with the When in the WAIT FOR ACK state, if a 'configure' message with the
&lt;ack&gt; element set to TRUE arrives ("configure+ack received"), &lt;ack&gt; element set to "200" arrives ("configure+ack received"),
the MP goes directly to the CONF RESPONSE state. the MP goes directly to the CONF RESPONSE state.
'configure+ack' messages referring to out-of-date (i.e., having 'configure+ack' messages referring to out-of-date (i.e., having
a sequence number less than the highest generated so far) a sequence number less than the highest generated so far)
advertisements MUST be ignored, i.e., they do not trigger any advertisements <bcp14>MUST</bcp14> be ignored, i.e., they do not trigger any
state transition. If the telepresence settings of the MP change state transition. If the telepresence settings of the MP change
while in the WAIT FOR ACK state ("changed telepresence settings"), while in the WAIT FOR ACK state ("changed telepresence settings"),
the MP switches from the WAIT FOR ACK state to the ADV state to the MP switches from the WAIT FOR ACK state to the ADV state to
create a new 'advertisement'. create a new 'advertisement'.
</t> </t>
<t>
<t>
When in the WAIT FOR CONF state, the MP listens to the channel for a 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' request coming from the MC. When a 'configure' arrives
("configure received"), the MP switches to the CONF RESPONSE state. ("configure received"), the MP switches to the CONF RESPONSE state.
If the telepresence settings change in the If the telepresence settings change in the
meanwhile ("changed telepresence settings"), the MP moves from the meantime ("changed telepresence settings"), the MP moves from the
WAIT FOR CONF back to the ADV state to create the new 'advertisement' WAIT FOR CONF state back to the ADV state to create the new 'advertisement'
to be sent to the MC.</t><t> to be sent to the MC.</t>
<t>
The MP in the CONF RESPONSE state processes the received 'configure' The MP in the CONF RESPONSE state processes the received 'configure'
in order to produce a 'configureResponse' message. If the MP in order to produce a 'configureResponse' message. If the MP
successfully processes the MC's configuration, then it sends a 200 successfully processes the MC's configuration, then it sends a 200
'configureResponse' ("success configureResponse sent") and moves to 'configureResponse' ("successful configureResponse sent") and moves to
the ESTABLISHED state. If there are errors in the 'configure' the ESTABLISHED state. If there are errors in the 'configure'
processing, then the MP issues a 'configureResponse' carrying an processing, then the MP issues a 'configureResponse' carrying an
error response code and it goes back to the error response code and goes back to the
WAIT FOR CONF state to wait for a new configuration request. WAIT FOR CONF state to wait for a new configuration request.
Finally, if there are changes in the MP's telepresence Finally, if there are changes in the MP's telepresence
settings ("changed telepresence settings"), the MP switches to the settings ("changed telepresence settings"), the MP switches to the
ADV state. ADV state.
</t> </t>
<t>
<t>
The MP in the ESTABLISHED state has successfully negotiated the media The MP in the ESTABLISHED state has successfully negotiated the media
streams with the MC by means of the CLUE messages. If there are streams with the MC by means of the CLUE messages. If there are
changes in the MP's telepresence settings ("changed telepresence changes in the MP's telepresence settings ("changed telepresence
settings"), the MP moves back to the ADV state. In the ESTABLISHED settings"), the MP moves back to the ADV state. In the ESTABLISHED
state, the CLUE-controlled media streams of the session are those state, the CLUE-controlled media streams of the session are those
described in the last successfully processed 'configure' message. described in the last successfully processed 'configure' message.
</t> </t>
<t>Messages not shown for a state do not cause the state to change.</t> <t>Messages not shown for a state do not cause the state to change.</t>
<t> </section>
<figure <section anchor="sec-mc" numbered="true" toc="default">
align="center" <name>Media Consumer's State Machine</name>
title = "Media Provider's state machine" <t>
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>
<section title="Media Consumer's state machine" anchor="sec-mc">
<t>
As soon as the sub-state machine of the MC As soon as the sub-state machine of the MC
(<xref target="fig:protocol_consumer"/>) is activated, it is in the (<xref target="fig_protocol_consumer" format="default"/>) is activated, it is in the
WAIT FOR ADV state. WAIT FOR ADV state.
An MC in the WAIT FOR ADV state is waiting for an 'advertisement' coming from th e An MC in the WAIT FOR ADV state is waiting for an 'advertisement' coming from th e
MP. If the 'advertisement' arrives ("ADV received"), the MC reaches the ADV MP. If the 'advertisement' arrives ("ADV received"), the MC moves to the ADV
PROCESSING state. PROCESSING state.
Otherwise, the MC stays in the WAIT FOR ADV state. Otherwise, the MC stays in the WAIT FOR ADV state.
</t> </t>
<t> <figure anchor="fig_protocol_consumer">
In the ADV PROCESSING state, the 'advertisement' is parsed by the MC. <name>Media Consumer's State Machine</name>
If the 'advertisement' is successfully processed, there are two <artwork name="" type="" align="left" alt=""><![CDATA[
possibilities. In the former case, the MC issues a successful 'ack'
message to the MP ("ACK sent") and moves to the CONF state. This
typically happens when the MC needs some more time to produce the
'configure' message associated with the received 'advertisement'. In
the latter case, the MC is able to immediately prepare and send back
to the MP a 'configure' message. Such a message will have the &lt;ack&gt;
field set to "200" ("configure+ack sent") and will allow the MC to
move directly to the WAIT FOR CONF RESPONSE state.
</t>
<t>
If the ADV processing is unsuccessful (bad syntax, missing XML
elements, etc.), the MC sends a NACK message (i.e., an 'ack' with
an error response code) to the MP and optionally further describes
the problem via a proper reason phrase. In this way ("NACK sent"),
the MC switches back to the WAIT FOR ADV
state, waiting 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 previously ack-ed
'advertisement'. When the 'configure' has been sent ("configure
sent"), the MC moves to the WAIT FOR CONF RESPONSE state. If a new
'advertisement' arrives in the meanwhile ("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
that the MC decides to change something in the call settings. The MC
then issues a new 'configure' ("configure sent") and goes to wait for
the new 'configureResponse' in the WAIT FOR CONF RESPONSE state. On
the other hand, in the ESTABLISHED state, if a new 'advertisement'
arrives from the MP ("advertisement received"), it means that
something has changed on the MP's side. The MC then moves to the ADV
PROCESSING state.
</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 | | WAIT FOR |
| ADV | | ADV |
+----+-----+<--------+ +----+-----+<--------+
| | | |
advertisement| NACK sent| advertisement| NACK sent|
received| | received| |
v | v |
+-----------+--------+ +-----------+--------+
| ADV + | ADV +
skipping to change at line 1352 skipping to change at line 1146
| | CONF RESPONSE+ | | | CONF RESPONSE+ |
| +-------+-------+ | | +-------+-------+ |
| | | | | |
| | | | | |
| |successful | | |successful |
| |configureResponse | | |configureResponse |
| |received | | |received |
|configure v | |configure v |
|sent +-----------+ advertisement received| |sent +-----------+ advertisement received|
+------------+ESTABLISHED+-----------------------+ +------------+ESTABLISHED+-----------------------+
+-----------+ +-----------+]]></artwork> </figure>
]]> <t>
</artwork> In the ADV PROCESSING state, the 'advertisement' is parsed by the MC.
</figure> If the 'advertisement' is successfully processed, two scenarios are
possible. In the first case, the MC issues a successful 'ack'
</t> message to the MP ("ack sent") and moves to the CONF state. This
</section> typically happens when the MC needs some more time to produce the
'configure' message associated with the received 'advertisement'. In
</section> 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 &lt;ack&gt;
<section title="Versioning" element set to "200" ("configure+ack sent") and will allow the MC to
anchor="sec-versioning"> move directly to the WAIT FOR CONF RESPONSE state.
<t> </t>
<t>
If the processing of the 'advertisement' is unsuccessful (bad syntax, missing XM
L
elements, etc.), the MC sends a NACK message (i.e., an 'ack' with
an error response code) to the MP and, optionally, further describes
the problem via a proper reason phrase. In this scenario ("NACK sent"),
the MC switches back to the WAIT FOR ADV
state 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 previously acked
'advertisement'. When the 'configure' has been sent ("configure
sent"), the MC moves to the WAIT FOR CONF RESPONSE state. If a new
'advertisement' arrives in the meantime ("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, the MC might
decide to change something in the call settings; in this case, the MC
then issues a new 'configure' ("configure sent") and moves to the
WAIT FOR CONF RESPONSE state to wait for the new 'configureResponse'.
On the other hand, if the MC is in the ESTABLISHED state and
a new 'advertisement' ("advertisement received") arrives from the MP,
it means that something has changed on the MP's side; the MC then moves
to the ADV PROCESSING state.
</t>
<t>Messages not shown for a state do not cause the state to change.</t>
</section>
</section>
<section anchor="sec-versioning" numbered="true" toc="default">
<name>Versioning</name>
<t>
CLUE protocol messages are XML messages compliant to the CLUE protocol XML schem a CLUE protocol messages are XML messages compliant to the CLUE protocol XML schem a
<xref target="I-D.ietf-clue-data-model-schema"/>. <xref target="RFC8846" format="default"/>.
The version of the protocol corresponds to the version of the schema. The version of the protocol corresponds to the version of the schema.
Both client and server have to test the compliance of the received messages with Both the client and the server have to test the compliance of the received messa ges with
the XML schema of the CLUE protocol. the XML schema of the CLUE protocol.
If the compliance is not verified, the message cannot be processed further. If the compliance is not verified, the message cannot be processed further.
</t> </t>
<t> <t>
Client and server cannot communicate if they do not share exactly The client and server cannot communicate if they do not share exactly
the same XML schema. the same XML schema.
Such a schema is associated with the CLUE URN Such a schema is associated with the CLUE URN
"urn:ietf:params:xml:ns:clue-protocol". "urn:ietf:params:xml:ns:clue-protocol".
If all CLUE-enabled devices use that schema If all CLUE-enabled devices use that schema,
there will be no interoperability problems due to schema issues. there will be no interoperability problems due to schema issues.
</t> </t>
<t>This document defines XML schema version 1.0. The version usage is <t>This document defines version 1.0 of the CLUE protocol schema, using XM
similar in philosophy to XMPP (<xref target="RFC6120"/>). L schema version 1.0 <xref target="W3C.REC-xml-20081126"/>. The version usage is
similar in philosophy to 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. A version number has major and minor components, each a non-negative integer.
Major version changes denote non-interoperable changes. Changes to the major version denote non-interoperable changes.
Minor version changes denote schema changes that are backward compatible Changes to the minor version denote schema changes that are backward compatible
by ignoring unknown XML elements, or other backward compatible changes. by ignoring unknown XML elements or other backward-compatible changes.
</t><t> </t>
The minor versions of the XML schema MUST be backward compatible, <t>
not only in terms of schema but also semantically and procedurally as well. The minor versions of the XML schema <bcp14>MUST</bcp14> be backward compatible,
not only in terms of the schema but semantically and procedurally as well.
This means that they should define further features and functionality besides This means that they should define further features and functionality besides
those defined in the previous versions, in an incremental way, without impacting those defined in the previous versions, in an incremental way, without impacting
the basic rules defined in the previous version of the schema. the basic rules defined in the previous version of the schema.
In this way, if a MP is able to speak, e.g., version 1.5 of the protocol while t he In this way, if an MP is able to "speak", for example, version 1.5 of the protoc ol while the
MC only understands version 1.4, MC only understands version 1.4,
the MP should have no problem in reverting the dialogue back to 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. without exploiting 1.5 features and functionality.
Version 1.4 is Version 1.4 is
the one to be spoken and has to appear in the "v" the one to be spoken and has to appear in the "v"
attribute of the subsequent CLUE messages. attribute of the subsequent CLUE messages.
In other words, in this example, the MP In other words, in this example, the MP
MUST use version 1.4. <bcp14>MUST</bcp14> use version 1.4.
This said, and coherently with the general IETF That said, and in keeping with the general IETF
"protocol robustness principle" stating that protocol "robustness principle" stating that
"an implementation must be conservative in its sending behavior, an implementation must be conservative in its sending behavior
and liberal in its receiving behavior" <xref target="RFC1122"/>, and liberal in its receiving behavior <xref target="RFC1122" format="default"/>,
CLUE Participants CPs
MUST ignore unknown elements or attributes that are not envisioned <bcp14>MUST</bcp14> ignore unknown elements or attributes that are not envisione
d
in the negotiated protocol version and related extensions. in the negotiated protocol version and related extensions.
</t> </t>
</section>
</section> <section anchor="sec-ext" numbered="true" toc="default">
<name>Extensions</name>
<section title="Extensions" <t>
anchor="sec-ext">
<t>
Although the standard version of the CLUE protocol XML schema is designed Although the standard version of the CLUE protocol XML schema is designed
to thoroughly cope with the requirements emerging from the application domain, to thoroughly cope with the requirements emerging from the application domain,
new needs might arise and extensions can be designed. new needs might arise, and new extensions can then be designed.
Extensions specify information and behaviors Extensions specify information and behaviors
that are not described in a certain version of the protocol and specified 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 in the related RFC document. Such information and behaviors can be optionally
used in a CLUE dialogue and MUST be negotiated in the CLUE initiation phase. used in a CLUE dialogue and <bcp14>MUST</bcp14> be negotiated in the CLUE initia tion phase.
They can relate to: They can relate to:
</t> </t>
<ol spacing="normal" type="1">
<t> <li>
<list style="numbers">
<t>
new information, to be carried in the existing messages. new information, to be carried in the existing messages.
For example, more fields may be added within an existing message; For example, more fields may be added within an existing message.
</t> </li>
<t> <li>
new messages. new messages.
This is the case if there is no proper message for a certain task, This is the case if there is no proper message for a certain task,
so a brand new CLUE message needs to be defined. so a brand new CLUE message needs to be defined.
</t> </li>
</list> </ol>
</t> <t>
As to the first category of extensions, it is possible to distinguish between
<t>
As to the first type of extensions, it is possible to distinguish between
protocol-specific and data model information. protocol-specific and data model information.
Indeed, CLUE messages are envelopes carrying both: Indeed, CLUE messages are envelopes carrying both of the following:
</t>
<t>
<list style="symbols">
<t> (i) XML elements defined within the CLUE protocol XML schema itself
(protocol-specific information)</t>
<t> (ii) other XML elements compliant to the CLUE data model schema
(data model information)</t>
</list>
</t> </t>
<ol spacing="normal">
<t> <li>XML elements defined within the CLUE protocol XML schema itself
(protocol-specific information).</li>
<li>other XML elements compliant to the CLUE data model schema
(data model information).</li>
</ol>
<t>
When new protocol-specific information is needed somewhere in the protocol When new protocol-specific information is needed somewhere in the protocol
messages, it can be added in place of the &lt;any&gt; elements and messages, it can be added in place of the &lt;any&gt; elements and
&lt;anyAttribute&gt; elements envisioned by the protocol schema. &lt;anyAttribute&gt; elements envisioned by the protocol schema.
The policy currently defined in the protocol schema for handling The policy currently defined in the protocol schema for handling
&lt;any&gt; and &lt;anyAttribute&gt; elements is: &lt;any&gt; and &lt;anyAttribute&gt; elements is as follows:
</t>
<t>
<list style="symbols">
<t> elementFormDefault="qualified"</t>
<t> attributeFormDefault="unqualified"</t>
</list>
</t> </t>
<ul spacing="normal">
<t> <li> elementFormDefault="qualified"</li>
<li> attributeFormDefault="unqualified"</li>
</ul>
<t>
The new information must be qualified by namespaces The new information must be qualified by namespaces
other than "urn:ietf:params:xml:ns:clue-protocol" (the protocol URN) other than "urn:ietf:params:xml:ns:clue-protocol" (the protocol URN)
and "urn:ietf:params:xml:ns:clue-info" (the data model URN). and "urn:ietf:params:xml:ns:clue-info" (the data model URN).
Elements or attributes from unknown namespaces MUST be ignored. Elements or attributes from unknown namespaces <bcp14>MUST</bcp14> be ignored.
</t> </t>
<t>
<t>
The other matter concerns data model information. The other matter concerns data model information.
Data model information is defined by the XML schema associated Data model information is defined by the XML schema associated
with the URN "urn:ietf:params:xml:ns:clue-info". with the URN "urn:ietf:params:xml:ns:clue-info".
Also for the XML elements defined in such a schema there are extensibility issue s. Note that there are also extensibility issues for the XML elements defined in su ch a schema.
Those issues are overcome by using &lt;any&gt; and &lt;anyAttribute&gt; Those issues are overcome by using &lt;any&gt; and &lt;anyAttribute&gt;
placeholders. placeholders.
New information within data model elements can be added in place New information within data model elements can be added in place
of &lt;any&gt; and &lt;anyAttribute&gt; schema elements, as long as they are pro perly namespace qualified. of &lt;any&gt; and &lt;anyAttribute&gt; schema elements, as long as they are pro perly namespace qualified.
</t> </t>
<t>On the other hand (second type of extensions), "extra" CLUE protocol messages <t>On the other hand (the second category of extensions), "extra" CLUE pro
, tocol messages,
i.e., messages not envisioned in the latest standard version of the schema, can i.e., messages not envisioned in the latest standard version of the schema, migh
be needed. t be needed.
In that case, the messages and the associated behavior should be defined in In that case, the messages and the associated behavior should be defined in
external documents that both communication parties must be aware of. external documents that both communication parties must be aware of.
</t> </t>
<t> <t>
As reported in <xref target="fig:extension"/>, the As shown in <xref target="fig_extension" format="default"/>, the
fields of the &lt;extension&gt; element (either new information fields of the &lt;extension&gt; element (either new information
or new messages) take the following values: or new messages) take the following values:
</t> </t>
<ul spacing="normal">
<t> <li>a name.</li>
<list style="symbols"> <li>an external XML schema defining the XML information and/or the XML
<t>a name;</t> messages representing the extension.</li>
<t>an external XML Schema defining the XML information and/or the XML <li>the major standard version of the protocol that the extension
messages representing the extension;</t> refers to.</li>
<t>the major standard version of the protocol that the extension </ul>
refers to.</t> <figure anchor="fig_extension">
</list> <name>The &lt;extension&gt; Element</name>
</t> <sourcecode name="" type="xml"><![CDATA[
<t>
<figure
align="center"
title = "The &lt;extension&gt; element"
anchor="fig:extension">
<artwork>
<![CDATA[
<xs:complexType name="extensionType"> <xs:complexType name="extensionType">
<xs:sequence> <xs:sequence>
<xs:element name="name" type="xs:string" /> <xs:element name="name" type="xs:string" />
<xs:element name="schemaRef" type="xs:anyURI"/> <xs:element name="schemaRef" type="xs:anyURI"/>
<xs:element name="version" type="versionType"/> <xs:element name="version" type="versionType"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> <xs:any namespace="##other" processContents="lax"
minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> <t>
</artwork> The above-described &lt;extension&gt; element is carried within
</figure>
</t>
<t>
The above described &lt;extension&gt; element is carried within
the 'options' and 'optionsResponse' messages to the 'options' and 'optionsResponse' messages to
represent the extensions supported both by the CI and the CR. represent the extensions supported by both the CI and the CR.
</t> </t>
<t>
<t> Extensions <bcp14>MUST</bcp14> be defined in a separate XML schema file and
Extensions MUST be defined in a separate XML schema file and <bcp14>MUST</bcp14> be provided with a companion document describing their seman
MUST be provided with a companion document describing their semantics tics
and use. and use.
</t> </t>
<section anchor="sec-extension-example" numbered="true" toc="default">
<section title="Extension example" anchor="sec-extension-example"> <name>Extension Example</name>
<t> <t>
An example of extension might be a "new" capture attribute (i.e., a An example of an extension might be a "new" capture attribute (i.e., a
capture attribute that is not envisioned in the current standard capture attribute that is not envisioned in the current standard
defining the CLUE data model in defining the CLUE data model in
<xref target="I-D.ietf-clue-data-model-schema"/>) needed to further <xref target="RFC8846" format="default"/>) needed to further
describe a video capture. describe a video capture.
</t> </t>
<t> <t>
The CLUE data model document (<xref target="I-D.ietf-clue-data-model-schema"/>) The CLUE data model document <xref target="RFC8846" format="default"/>
envisions the possibility of adding this kind of envisions the possibility of adding this kind of
"extra" information in the description of a video capture. "extra" information in the description of a video capture.
For the sake of convenience, the XML definition of a video capture taken For convenience, the XML definition of a video capture taken
from <xref target="I-D.ietf-clue-data-model-schema"/> is from <xref target="RFC8846" format="default"/> is
reported in <xref target="fig:video_capture"/> below. shown in <xref target="fig_video_capture" format="default"/> below.
</t> </t>
<figure <figure anchor="fig_video_capture">
align="center" <name>XML Definition of a CLUE Video Capture</name>
title = "XML definition of a CLUE video capture" <sourcecode name="" type="xml"><![CDATA[
anchor="fig:video_capture">
<artwork>
<![CDATA[
<!-- VIDEO CAPTURE TYPE --> <!-- VIDEO CAPTURE TYPE -->
<xs:complexType name="videoCaptureType"> <xs:complexType name="videoCaptureType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="tns:mediaCaptureType"> <xs:extension base="tns:mediaCaptureType">
<xs:sequence> <xs:sequence>
<xs:any namespace="##other" processContents="lax" minOccurs="0" <xs:any namespace="##other" processContents="lax"
minOccurs="0"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>]]></sourcecode> </figure>
]]> <t>
</artwork>
</figure>
<t>
According to such a definition, a video capture might have, According to such a definition, a video capture might have,
after the set of the generic media capture attributes, after the set of generic media capture attributes,
a set of new attributes defined elsewhere, i.e., a set of new attributes defined elsewhere, i.e.,
in an XML schema defining an extension. in an XML schema defining an extension.
The XML schema defining the extension might look like the following The XML schema defining the extension might look like the following
(<xref target="fig:xml_extension"/>): (<xref target="fig_xml_extension" format="default"/>):
</t> </t>
<figure
align="center"
title = "XML schema defining an extension"
anchor="fig:xml_extension">
<artwork>
<![CDATA[
<figure anchor="fig_xml_extension">
<name>XML Schema Defining an Extension</name>
<sourcecode name="" type="xml"><![CDATA[
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<xs:schema version="1.0" <xs:schema version="1.0"
targetNamespace="http://example.extensions.com/myVideoExtensions" targetNamespace="https://example.extensions.com/myVideoExtensions"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="https://www.w3.org/2001/XMLSchema"
xmlns="http://example.extensions.com/myVideoExtensions" xmlns="https://example.extensions.com/myVideoExtensions"
elementFormDefault="qualified" elementFormDefault="qualified"
attributeFormDefault="unqualified"> attributeFormDefault="unqualified">
<!-- <!--
This is the new element to be put in place of the <any> This is the new element to be put in place of the <any>
element in the video capture definition element in the video capture definition
of the CLUE data model schema 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:element name="myVideoExtension">
</xs:schema> <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"/>
</artwork>
</figure>
<t> <xs:element name = "newVideoAttribute2" type = "xs:boolean"/>
</xs:schema>]]></sourcecode> </figure>
<t>
By using the extension above, a video capture can be further described By using the extension above, a video capture can be further described
in the advertisement using the &lt;myVideoExtension&gt; in the advertisement using the &lt;myVideoExtension&gt;
element containing two extra information (&lt;newVideoAttribute1&gt; element containing two extra pieces of information (&lt;newVideoAttribute1&gt;
and &lt;newVideoAttribute2&gt;) and &lt;newVideoAttribute2&gt;),
besides using the attributes envisioned for a generic media capture. besides using the attributes envisioned for a generic media capture.
As stated in this document, As stated in this document,
both participants must be aware of the extension schema and both participants must be aware of the extension schema and
related semantics to use such an extension and must negotiate related semantics to use such an extension and must negotiate
it via the 'options' and 'optionsResponse' mechanism. it via the 'options' and 'optionsResponse' messages.
</t>
</section>
</section>
<section title="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> </t>
</section>
<t> </section>
In this section, the XML schema defining the CLUE messages is provided <section anchor="sec-schema" numbered="true" toc="default">
(<xref target="fig:clue_schema"/>). <name>XML Schema</name>
<t>
The XML schema defining the CLUE messages is provided below
(<xref target="fig_clue_schema" format="default"/>).
</t> </t>
<t>
<figure
align="center"
title = "Schema defining CLUE messages"
anchor="fig:clue_schema">
<artwork> <figure anchor="fig_clue_schema">
<![CDATA[ <name>Schema Defining CLUE Messages</name>
<sourcecode name="" type="xml"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" <xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:clue-protocol" xmlns="urn:ietf:params:xml:ns:clue-protocol"
xmlns:dm="urn:ietf:params:xml:ns:clue-info" xmlns:dm="urn:ietf:params:xml:ns:clue-info"
xmlns:tns="urn:ietf:params:xml:ns:clue-protocol" version="1.0"
version="1.0" targetNamespace="urn:ietf:params:xml:ns:clue-protocol"
targetNamespace="urn:ietf:params:xml:ns:clue-protocol" elementFormDefault="qualified"
elementFormDefault="qualified" attributeFormDefault="unqualified">
attributeFormDefault="unqualified">
<!-- Import data model schema --> <!-- Import data model schema -->
<xs:import namespace="urn:ietf:params:xml:ns:clue-info" <xs:import namespace="urn:ietf:params:xml:ns:clue-info"/>
schemaLocation="clue-data-model-schema-19.xsd" />
<!-- ELEMENT DEFINITIONS --> <!-- ELEMENT DEFINITIONS -->
<xs:element name="options" type="optionsMessageType" /> <xs:element name="options" type="optionsMessageType" />
<xs:element name="optionsResponse" type="optionsResponseMessageType"/> <xs:element name="optionsResponse"
type="optionsResponseMessageType"/>
<xs:element name="advertisement" type="advertisementMessageType"/> <xs:element name="advertisement" type="advertisementMessageType"/>
<xs:element name="ack" type="advAcknowledgementMessageType"/> <xs:element name="ack" type="advAcknowledgementMessageType"/>
<xs:element name="configure" type="configureMessageType"/> <xs:element name="configure" type="configureMessageType"/>
<xs:element name="configureResponse" <xs:element name="configureResponse"
type="configureResponseMessageType"/> type="configureResponseMessageType"/>
<!-- CLUE MESSAGE TYPE --> <!-- CLUE MESSAGE TYPE -->
<xs:complexType name="clueMessageType" abstract="true"> <xs:complexType name="clueMessageType" abstract="true">
<xs:sequence> <xs:sequence>
<xs:element name="clueId" type="xs:string" minOccurs="0" /> <xs:element name="clueId" type="xs:string" minOccurs="0" />
<xs:element name="sequenceNr" type="xs:positiveInteger" /> <xs:element name="sequenceNr" type="xs:positiveInteger" />
</xs:sequence> </xs:sequence>
<xs:attribute name="protocol" type="xs:string" fixed="CLUE" <xs:attribute name="protocol" type="xs:string" fixed="CLUE"
use="required" /> use="required" />
<xs:attribute name="v" type="versionType" use="required" /> <xs:attribute name="v" type="versionType" use="required" />
</xs:complexType> </xs:complexType>
<!-- CLUE RESPONSE TYPE --> <!-- CLUE RESPONSE TYPE -->
<xs:complexType name="clueResponseType"> <xs:complexType name="clueResponseType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<xs:element name="responseCode" type="responseCodeType" /> <xs:element name="responseCode" type="responseCodeType" />
<xs:element name="reasonString" type="xs:string" <xs:element name="reasonString" type="xs:string"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- VERSION TYPE --> <!-- VERSION TYPE -->
<xs:simpleType name="versionType"> <xs:simpleType name="versionType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:pattern value="[1-9][0-9]*\.[0-9]+" /> <xs:pattern value="[1-9][0-9]*\.[0-9]+" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
skipping to change at line 1728 skipping to change at line 1516
<xs:pattern value="2[0-9][0-9]" /> <xs:pattern value="2[0-9][0-9]" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<!-- CLUE OPTIONS --> <!-- CLUE OPTIONS -->
<xs:complexType name="optionsMessageType"> <xs:complexType name="optionsMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<xs:element name="mediaProvider" type="xs:boolean"/> <xs:element name="mediaProvider" type="xs:boolean"/>
<xs:element name="mediaConsumer" type="xs:boolean"/> <xs:element name="mediaConsumer" type="xs:boolean"/>
<xs:element name="supportedVersions" type="versionsListType" <xs:element name="supportedVersions"
minOccurs="0" /> type="versionsListType"
minOccurs="0" />
<xs:element name="supportedExtensions" <xs:element name="supportedExtensions"
type="extensionsListType" minOccurs="0"/> type="extensionsListType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- VERSIONS LIST TYPE --> <!-- VERSIONS LIST TYPE -->
<xs:complexType name="versionsListType"> <xs:complexType name="versionsListType">
<xs:sequence> <xs:sequence>
<xs:element name="version" type="versionType" minOccurs="1" <xs:element name="version" type="versionType" minOccurs="1"
maxOccurs="unbounded"/> maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> <xs:any namespace="##other" processContents="lax"
minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" /> <xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType> </xs:complexType>
<!-- EXTENSIONS LIST TYPE --> <!-- EXTENSIONS LIST TYPE -->
<xs:complexType name="extensionsListType"> <xs:complexType name="extensionsListType">
<xs:sequence> <xs:sequence>
<xs:element name="extension" type="extensionType" minOccurs="1" <xs:element name="extension" type="extensionType"
maxOccurs="unbounded"/> minOccurs="1"
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax" /> <xs:anyAttribute namespace="##other" processContents="lax" />
</xs:complexType> </xs:complexType>
<!-- EXTENSION TYPE --> <!-- EXTENSION TYPE -->
<xs:complexType name="extensionType"> <xs:complexType name="extensionType">
<xs:sequence> <xs:sequence>
<xs:element name="name" type="xs:string" /> <xs:element name="name" type="xs:string" />
<xs:element name="schemaRef" type="xs:anyURI" /> <xs:element name="schemaRef" type="xs:anyURI" />
<xs:element name="version" type="versionType" /> <xs:element name="version" type="versionType" />
<xs:any namespace="##other" processContents="lax" minOccurs="0"/> <xs:any namespace="##other" processContents="lax"
minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> </xs:complexType>
<!-- CLUE 'optionsResponse' --> <!-- CLUE 'optionsResponse' -->
<xs:complexType name="optionsResponseMessageType"> <xs:complexType name="optionsResponseMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueResponseType"> <xs:extension base="clueResponseType">
<xs:sequence> <xs:sequence>
<xs:element name="mediaProvider" type="xs:boolean" <xs:element name="mediaProvider" type="xs:boolean"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="mediaConsumer" type="xs:boolean" <xs:element name="mediaConsumer" type="xs:boolean"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="version" type="versionType" minOccurs="0"/> <xs:element name="version" type="versionType"
<xs:element name="commonExtensions" type="extensionsListType" minOccurs="0"/>
minOccurs="0"/> <xs:element name="commonExtensions"
type="extensionsListType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- CLUE ADVERTISEMENT MESSAGE TYPE --> <!-- CLUE ADVERTISEMENT MESSAGE TYPE -->
<xs:complexType name="advertisementMessageType"> <xs:complexType name="advertisementMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<!-- mandatory --> <!-- mandatory -->
<xs:element name="mediaCaptures" type="dm:mediaCapturesType"/> <xs:element name="mediaCaptures"
type="dm:mediaCapturesType"/>
<xs:element name="encodingGroups" <xs:element name="encodingGroups"
type="dm:encodingGroupsType"/> type="dm:encodingGroupsType"/>
<xs:element name="captureScenes" type="dm:captureScenesType"/> <xs:element name="captureScenes"
type="dm:captureScenesType"/>
<!-- optional --> <!-- optional -->
<xs:element name="simultaneousSets" <xs:element name="simultaneousSets"
type="dm:simultaneousSetsType" minOccurs="0"/> type="dm:simultaneousSetsType" minOccurs="0"/>
<xs:element name="globalViews" type="dm:globalViewsType" <xs:element name="globalViews" type="dm:globalViewsType"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="people" type="dm:peopleType" minOccurs="0"/> <xs:element name="people"
type="dm:peopleType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- 'ack' MESSAGE TYPE --> <!-- 'ack' MESSAGE TYPE -->
<xs:complexType name="advAcknowledgementMessageType"> <xs:complexType name="advAcknowledgementMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueResponseType"> <xs:extension base="clueResponseType">
<xs:sequence> <xs:sequence>
<xs:element name="advSequenceNr" type="xs:positiveInteger"/> <xs:element name="advSequenceNr"
type="xs:positiveInteger"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- CLUE 'configure' MESSAGE TYPE --> <!-- CLUE 'configure' MESSAGE TYPE -->
<xs:complexType name="configureMessageType"> <xs:complexType name="configureMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueMessageType"> <xs:extension base="clueMessageType">
<xs:sequence> <xs:sequence>
<!-- mandatory fields --> <!-- mandatory fields -->
<xs:element name="advSequenceNr" type="xs:positiveInteger"/> <xs:element name="advSequenceNr"
type="xs:positiveInteger"/>
<xs:element name="ack" type="successResponseCodeType" <xs:element name="ack" type="successResponseCodeType"
minOccurs="0"/> minOccurs="0"/>
<xs:element name="captureEncodings" <xs:element name="captureEncodings"
type="dm:captureEncodingsType" minOccurs="0"/> type="dm:captureEncodingsType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<!-- 'configureResponse' MESSAGE TYPE --> <!-- 'configureResponse' MESSAGE TYPE -->
<xs:complexType name="configureResponseMessageType"> <xs:complexType name="configureResponseMessageType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="clueResponseType"> <xs:extension base="clueResponseType">
<xs:sequence> <xs:sequence>
<xs:element name="confSequenceNr" type="xs:positiveInteger"/> <xs:element name="confSequenceNr"
type="xs:positiveInteger"/>
<xs:any namespace="##other" processContents="lax" <xs:any namespace="##other" processContents="lax"
minOccurs="0"/> minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>]]></sourcecode> </figure>
]]> </section>
</artwork> <section numbered="true" toc="default">
</figure> <name>Call Flow Example</name>
</t> <t>
</section> This section describes the CLUE protocol messages exchanged in the following
call flow. For simplicity, only one direction of media is shown, as the other d
<section title="Call flow example"> irection is
<t>
In this section the CLUE protocol messages exchanged in the following call flow
are detailed.
Only one direction of media is shown for simplicity, as the other direction is
precisely symmetric. precisely symmetric.
</t> </t>
<t> <artwork name="" type="" align="left" alt=""><![CDATA[
<figure> +-----+ +-----+
<artwork> | | | |
<![CDATA[ | CP1 | | CP2 |
+-----+ +-----+ | | | |
| | | | +--+--+ +--+--+
| CP1 | | CP2 | | |
| | | | | 1. options |
+--+--+ +--+--+ +-------------------->|
| | | |
| 1.options | | |
+----------------->| |2. optionsResponse |
| | |<--------------------+
| | | |
|2.optionsResponse | | |
|<-----------------+ |3. advertisement |
| | +-------------------->|
| | | |
| 3.advertisement | | |
+----------------->| |4. configure+ack |
| | |<--------------------+
| | | |
|4.configure+ack | | |
|<-----------------+ |5. configureResponse |
| | +-------------------->|
| | | |
|5.confResponse | | |
+----------------->| |6. advertisement |
| | +-------------------->|
| | | |
|6.advertisement | | |
+----------------->| | 7. ack |
| | |<--------------------+
| | | |
| 7.ack | | |
|<-----------------+ |8. configure |
| | |<--------------------+
| | | |
| 8.configure | | |
|<-----------------+ |9. configureResponse |
| | +-------------------->|
| | | |
| 9.confResponse | | |
+----------------->| . .
| | . .
| | . .]]></artwork>
. .
. . <t>
. . Two CPs, CP1 and CP2, have successfully set up the CLUE channel according to
]]> <xref target="RFC8850" format="default"/>.
</artwork> CP1 is the CI, and CP2 is the CR.
</figure>
</t>
<t>
Two CLUE Participants, CP1 and CP2, have successfully set up the CLUE channel ac
cording to
document <xref target="I-D.ietf-clue-datachannel"/>.
CP1 is the Channel Initiator (CI) and CP2 is the Channel Receiver (CR).
</t> </t>
<t>
The initiation phase starts (negotiation of the CLUE protocol version and extens <ul spacing="normal">
ions). <li>The initiation phase starts (negotiation of the CLUE protocol version and ex
CP1, as the CI, sends to CP2 an 'options' message specifying the supported versi tensions).
ons and extensions (<xref target="opt-example"/>). CP1, as the CI, sends to CP2 an 'options' message specifying the supported versi
CP1 supports: (i) version 1.4 with extensions E1, E2 and E3, (ii) version 2.7 wi ons and extensions (<xref target="opt-example" format="default"/>).
th extensions E4 and E5. CP1 supports (i) version 1.4 with extensions E1, E2, and E3 and (ii)&nbsp;versio
Because of such capabilities, CP1 sends an 'options' message with the 'v' attrib n 2.7 with extensions E4 and E5.
ute set to 1.4 and specifies explicitly all the supported versions Because of such capabilities, CP1 sends an 'options' message with the "v"
attribute set to "1.4" and explicitly specifies all the supported versions
and extensions in the corresponding fields of the 'options' message. and extensions in the corresponding fields of the 'options' message.
In the 'options' message, CP1 specifies also that it intends to act both as a MP In the 'options' message, CP1 also specifies that it intends to act as both an M
and as a MC. P and an MC.</li>
</t> <li>CP2 supports versions 3.0, 2.9, and 1.9 of the CLUE protocol, each version w
<t> ithout any extensions.
CP2 supports version 3.0, version 2.9 and version 1.9 of the CLUE protocol, each
version without any extension.
Version 2.7 is the best common choice. Version 2.7 is the best common choice.
Given the received 'options' message, CP2 answers with an 'optionsResponse' mess Given the received 'options' message, CP2 answers with an 'optionsResponse' mess
age in which it specifies only version 2.7 as the agreed version age in which it specifies only version 2.7 as the agreed-upon version
of the CLUE protocol to be used, leaving blank the extensions part of the messag of the CLUE protocol to be used, leaving blank the extensions part of the messag
e to say that no extension will be used in the CLUE session e to say that no extensions will be used in the CLUE session
(<xref target="optRes-example"/>). (<xref target="optRes-example" format="default"/>).
In the 'optionsResponse' message, CP2 specifies also that it intends to act both In the 'optionsResponse' message, CP2 also specifies that it intends to act as b
as a MP and as a MC. oth an MP and an MC.</li>
</t> </ul>
<t>
<t> After the initiation phase is completed, CP1 and CP2 start their activity as
After the initiation phase is completed, CP1 and CP2 start their activity as MP the MP and the MC, respectively.
and as MC. For the sake of simplicity, the rest of the call flow focuses only on the dialog
For the sake of simplicity, the following call flow focuses only on the dialogue ue between MP
between MP
CP1 and MC CP2. CP1 and MC CP2.
</t> </t>
<t> <ul spacing="normal">
CP1 advertises a telepresence configuration like the one described in <li>CP1 advertises a telepresence configuration like the one described in
<xref target="I-D.ietf-clue-data-model-schema"/>, Sec. Sample XML File, where th <xref target="RFC8846" sectionFormat="comma" section="27"/>,
ere are where there are
(i) three main video streams captured by three cameras, the central one capable (i) three main video streams captured by three cameras, with the central camera
of capturing a zoomed-out view of the overall telepresence room, capable of capturing a zoomed-out view of the overall telepresence room,
(ii) a multi-content capture of the loudest segment of the room, and (ii)&nbsp;a multicontent capture of the loudest segment of the room, and
(iii) one audio capture for the audio of the whole room (<xref target="adv-exam (iii)&nbsp;one audio capture for the audio of the whole room (<xref
ple"/>). target="adv-example" format="default"/>).
</t> </li>
<t> <li>CP2 receives CP1's 'advertisement' message and, after processing it, sends
CP2 receives CP1's 'advertisement' message and, after processing it, sends back back to CP1 a 'configure+ack' message in which it declares its interest in the
to CP1 a 'configure + ack' message where it declares to be interested only in th multicontent capture and the audio capture only (<xref target="confAck-example"
e format="default"/>).</li>
multi-content capture and in the audio capture (<xref target="confAck-example"/ <li>CP1 answers CP2's 'configure+ack' message with a 'configureResponse'
>). message that includes a 200 (Success) response code to accept all of CP2's reque
</t> sts
<t> (<xref target="confRes-example" format="default"/>).</li>
CP1 answers to CP2's 'configure + ack' message with a 'configureResponse' <li>To reflect the changes in its telepresence offer, CP1 issues a new 'advertis
message including a response code '200 - Success' to accept all CP2's requests ement' message to CP2
(<xref target="confRes-example"/>). (<xref target="adv2-example" format="default"/>), this time also adding a compo
</t> sed
<t> capture made of a big picture representing the current speaker and two picture-i
To reflect the changes in its telepresence offer, CP1 issues a new 'advertisemen n-picture boxes representing the previous speakers
t' message to CP2 (see <xref target="RFC8846" sectionFormat="comma" section="28"/> for
(<xref target="adv2-example"/>), this time adding also a composed more details regarding the telepresence description).</li>
capture made by a big picture representing the current speaker and two picture-i <li>CP2 acknowledges the second 'advertisement' message with an 'ack' message (
n-picture boxes representing the previous speakers <xref target="ack-example" format="default"/>).</li>
(see more details about the telepresence description in <xref target="I-D.ietf-c <li>Later in the session, CP2 changes the requested media streams from CP1 by se
lue-data-model-schema"/>, Sec. MCC example). nding to CP1 a 'configure' message replacing the
</t>
<t>
CP2 acknowledges the second 'advertisement' message with an 'ack' message (<xre
f target="ack-example"/>).
</t>
<t>
In a second moment, CP2 changes the requested media streams from CP1 by sending
to CP1 a 'configure' message replacing the
previously selected video streams with the new composed media streams advertised by CP1 previously selected video streams with the new composed media streams advertised by CP1
(<xref target="conf-example"/>). Media from the previous configuration continue (<xref target="conf-example" format="default"/>).
to Media streams from the previous configuration continue to
flow during the reconfiguration process. flow during the reconfiguration process.</li>
</t> <li>Finally, CP1 accepts CP2's latest request with a 'configureResponse' message
<t> (<xref target="confRes2-example" format="default"/>).</li>
Finally, CP1 accept the last requests of CP2 with a 'confResponse' message (<xr </ul>
ef target="confRes2-example"/>)</t>
<t> <t>We would also like to point out that in the depicted flow three distinct sequ
We also remark that in the depicted flow three distinct sequence number spaces p ence number spaces per sender are involved
er sender are involved (two of which appear in the snippets, since we only show one direction of media)
(two of which appear in the snippets since we only show one direction of media). . The discontinuity
The discontinuity between the sequence number values in Sections&nbsp;<xref target="optRes-example
between the sequence number values in <xref target="optRes-example"/> and <xref " format="counter"/> and <xref target="adv-example" format="counter"/>
target="adv-example"/>
is hence correct. is hence correct.
</t> </t>
<section title="CLUE message nr. 1: 'options'" anchor="opt-example"> <section anchor="opt-example" numbered="true" toc="default">
<t> <name>CLUE Message No. 1: 'options'</name>
<figure> <sourcecode name="" type="xml"><![CDATA[
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<options xmlns="urn:ietf:params:xml:ns:clue-protocol" <options xmlns="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns2="urn:ietf:params:xml:ns:clue-info" xmlns:ns2="urn:ietf:params:xml:ns:clue-info"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="1.4"> protocol="CLUE" v="1.4">
<clueId>CP1</clueId> <clueId>CP1</clueId>
<sequenceNr>51</sequenceNr> <sequenceNr>51</sequenceNr>
<mediaProvider>true</mediaProvider> <mediaProvider>true</mediaProvider>
<mediaConsumer>true</mediaConsumer> <mediaConsumer>true</mediaConsumer>
<supportedVersions> <supportedVersions>
<version>1.4</version> <version>1.4</version>
<version>2.7</version> <version>2.7</version>
</supportedVersions> </supportedVersions>
<supportedExtensions> <supportedExtensions>
<extension> <extension>
<name>E1</name> <name>E1</name>
<schemaRef>URL_E1</schemaRef> <schemaRef>URL_E1</schemaRef>
<version>1.4</version> <version>1.4</version>
</extension> </extension>
<extension> <extension>
<name>E2</name> <name>E2</name>
<schemaRef>URL_E2</schemaRef> <schemaRef>URL_E2</schemaRef>
<version>1.4</version> <version>1.4</version>
</extension> </extension>
<extension> <extension>
<name>E3</name> <name>E3</name>
<schemaRef>URL_E3</schemaRef> <schemaRef>URL_E3</schemaRef>
<version>1.4</version> <version>1.4</version>
</extension> </extension>
<extension> <extension>
<name>E4</name> <name>E4</name>
<schemaRef>URL_E4</schemaRef> <schemaRef>URL_E4</schemaRef>
<version>2.7</version> <version>2.7</version>
</extension> </extension>
<extension> <extension>
<name>E5</name> <name>E5</name>
<schemaRef>URL_E5</schemaRef> <schemaRef>URL_E5</schemaRef>
<version>2.7</version> <version>2.7</version>
</extension> </extension>
</supportedExtensions> </supportedExtensions>
</options> </options>]]></sourcecode>
]]> </section>
</artwork> <section anchor="optRes-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 2: 'optionsResponse'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 2: 'optionsResponse'" anchor="optRes-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<optionsResponse xmlns="urn:ietf:params:xml:ns:clue-protocol" <optionsResponse xmlns="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns2="urn:ietf:params:xml:ns:clue-info" xmlns:ns2="urn:ietf:params:xml:ns:clue-info"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="1.4"> protocol="CLUE" v="1.4">
<clueId>CP2</clueId> <clueId>CP2</clueId>
<sequenceNr>62</sequenceNr> <sequenceNr>62</sequenceNr>
<responseCode>200</responseCode> <responseCode>200</responseCode>
<reasonString>Success</reasonString> <reasonString>Success</reasonString>
<mediaProvider>true</mediaProvider> <mediaProvider>true</mediaProvider>
<mediaConsumer>true</mediaConsumer> <mediaConsumer>true</mediaConsumer>
<version>2.7</version> <version>2.7</version>
</optionsResponse> </optionsResponse>]]></sourcecode>
]]> </section>
</artwork> <section anchor="adv-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 3: 'advertisement'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 3: 'advertisement'" anchor="adv-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:advertisement xmlns="urn:ietf:params:xml:ns:clue-info" <ns2:advertisement xmlns="urn:ietf:params:xml:ns:clue-info"
xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol" xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<ns2:clueId>CP1</ns2:clueId> <ns2:clueId>CP1</ns2:clueId>
<ns2:sequenceNr>11</ns2:sequenceNr> <ns2:sequenceNr>11</ns2:sequenceNr>
<ns2:mediaCaptures> <ns2:mediaCaptures>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="audioCaptureType" captureID="AC0" xsi:type="audioCaptureType" captureID="AC0"
mediaType="audio"> mediaType="audio">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.0</x> <x>0.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
skipping to change at line 2116 skipping to change at line 1882
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>room</view> <view>room</view>
<capturedPeople> <capturedPeople>
<personIDREF>alice</personIDREF> <personIDREF>alice</personIDREF>
<personIDREF>bob</personIDREF> <personIDREF>bob</personIDREF>
<personIDREF>ciccio</personIDREF> <personIDREF>ciccio</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC0" mediaType="video"> xsi:type="videoCaptureType" captureID="VC0"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>-2.0</x> <x>-2.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
skipping to change at line 2163 skipping to change at line 1930
</description> </description>
<priority>1</priority> <priority>1</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
<capturedPeople> <capturedPeople>
<personIDREF>ciccio</personIDREF> <personIDREF>ciccio</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC1" mediaType="video"> xsi:type="videoCaptureType" captureID="VC1"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.0</x> <x>0.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
skipping to change at line 2210 skipping to change at line 1978
</description> </description>
<priority>1</priority> <priority>1</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
<capturedPeople> <capturedPeople>
<personIDREF>alice</personIDREF> <personIDREF>alice</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC2" mediaType="video"> xsi:type="videoCaptureType" captureID="VC2"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>2.0</x> <x>2.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
skipping to change at line 2257 skipping to change at line 2026
</description> </description>
<priority>1</priority> <priority>1</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
<capturedPeople> <capturedPeople>
<personIDREF>bob</personIDREF> <personIDREF>bob</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC3" mediaType="video"> xsi:type="videoCaptureType" captureID="VC3"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
skipping to change at line 2289 skipping to change at line 2059
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<content> <content>
<sceneViewIDREF>SE1</sceneViewIDREF> <sceneViewIDREF>SE1</sceneViewIDREF>
</content> </content>
<policy>SoundLevel:0</policy> <policy>SoundLevel:0</policy>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en">loudest room segment</description> <description lang="en">loudest room segment
</description>
<priority>2</priority> <priority>2</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC4" mediaType="video"> xsi:type="videoCaptureType" captureID="VC4"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.0</x> <x>0.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
skipping to change at line 2332 skipping to change at line 2104
</topLeft> </topLeft>
<topRight> <topRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>13.0</z> <z>13.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<individual>true</individual> <individual>true</individual>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en">zoomed out view of all people in the <description lang="en">zoomed-out view of all people in
room</description> the room</description>
<priority>2</priority> <priority>2</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>room</view> <view>room</view>
<capturedPeople> <capturedPeople>
<personIDREF>alice</personIDREF> <personIDREF>alice</personIDREF>
<personIDREF>bob</personIDREF> <personIDREF>bob</personIDREF>
<personIDREF>ciccio</personIDREF> <personIDREF>ciccio</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
skipping to change at line 2428 skipping to change at line 2200
<person personID="ciccio"> <person personID="ciccio">
<personInfo> <personInfo>
<ns3:fn> <ns3:fn>
<ns3:text>Ciccio</ns3:text> <ns3:text>Ciccio</ns3:text>
</ns3:fn> </ns3:fn>
</personInfo> </personInfo>
<personType>chairman</personType> <personType>chairman</personType>
<personType>timekeeper</personType> <personType>timekeeper</personType>
</person> </person>
</ns2:people> </ns2:people>
</ns2:advertisement> </ns2:advertisement>]]></sourcecode>
]]> </section>
</artwork> <section anchor="confAck-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 4: 'configure+ack'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 4: 'configure + ack'" anchor="confAck-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:configure xmlns="urn:ietf:params:xml:ns:clue-info" <ns2:configure xmlns="urn:ietf:params:xml:ns:clue-info"
xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol" xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<ns2:clueId>CP2</ns2:clueId> <ns2:clueId>CP2</ns2:clueId>
<ns2:sequenceNr>22</ns2:sequenceNr> <ns2:sequenceNr>22</ns2:sequenceNr>
<ns2:advSequenceNr>11</ns2:advSequenceNr> <ns2:advSequenceNr>11</ns2:advSequenceNr>
<ns2:ack>200</ns2:ack> <ns2:ack>200</ns2:ack>
<ns2:captureEncodings> <ns2:captureEncodings>
<captureEncoding ID="ce123"> <captureEncoding ID="ce123">
<captureID>AC0</captureID> <captureID>AC0</captureID>
<encodingID>ENC4</encodingID> <encodingID>ENC4</encodingID>
</captureEncoding> </captureEncoding>
<captureEncoding ID="ce223"> <captureEncoding ID="ce223">
<captureID>VC3</captureID> <captureID>VC3</captureID>
<encodingID>ENC1</encodingID> <encodingID>ENC1</encodingID>
<configuredContent> <configuredContent>
<sceneViewIDREF>SE1</sceneViewIDREF> <sceneViewIDREF>SE1</sceneViewIDREF>
</configuredContent> </configuredContent>
</captureEncoding> </captureEncoding>
</ns2:captureEncodings> </ns2:captureEncodings>
</ns2:configure> </ns2:configure>]]></sourcecode>
]]> </section>
</artwork> <section anchor="confRes-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 5: 'configureResponse'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 5: 'confResponse'" anchor="confRes-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:configureResponse xmlns="urn:ietf:params:xml:ns:clue-info" <ns2:configureResponse xmlns="urn:ietf:params:xml:ns:clue-info"
xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol" xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<ns2:clueId>CP1</ns2:clueId> <ns2:clueId>CP1</ns2:clueId>
<ns2:sequenceNr>12</ns2:sequenceNr> <ns2:sequenceNr>12</ns2:sequenceNr>
<ns2:responseCode>200</ns2:responseCode> <ns2:responseCode>200</ns2:responseCode>
<ns2:reasonString>Success</ns2:reasonString> <ns2:reasonString>Success</ns2:reasonString>
<ns2:confSequenceNr>22</ns2:confSequenceNr> <ns2:confSequenceNr>22</ns2:confSequenceNr>
</ns2:configureResponse> </ns2:configureResponse>]]></sourcecode>
]]> </section>
</artwork> <section anchor="adv2-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 6: 'advertisement'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 6: 'advertisement' " anchor="adv2-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:advertisement xmlns="urn:ietf:params:xml:ns:clue-info" <ns2:advertisement xmlns="urn:ietf:params:xml:ns:clue-info"
xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol" xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<ns2:clueId>CP1</ns2:clueId> <ns2:clueId>CP1</ns2:clueId>
<ns2:sequenceNr>13</ns2:sequenceNr> <ns2:sequenceNr>13</ns2:sequenceNr>
<ns2:mediaCaptures> <ns2:mediaCaptures>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="audioCaptureType" captureID="AC0" mediaType="audio"> xsi:type="audioCaptureType" captureID="AC0"
mediaType="audio">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.0</x> <x>0.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
<lineOfCapturePoint> <lineOfCapturePoint>
<x>0.0</x> <x>0.0</x>
skipping to change at line 2543 skipping to change at line 2292
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>room</view> <view>room</view>
<capturedPeople> <capturedPeople>
<personIDREF>alice</personIDREF> <personIDREF>alice</personIDREF>
<personIDREF>bob</personIDREF> <personIDREF>bob</personIDREF>
<personIDREF>ciccio</personIDREF> <personIDREF>ciccio</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC0" mediaType="video"> xsi:type="videoCaptureType" captureID="VC0"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.5</x> <x>0.5</x>
<y>1.0</y> <y>1.0</y>
<z>0.5</z> <z>0.5</z>
</capturePoint> </capturePoint>
<lineOfCapturePoint> <lineOfCapturePoint>
<x>0.5</x> <x>0.5</x>
skipping to change at line 2573 skipping to change at line 2323
</description> </description>
<priority>1</priority> <priority>1</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
<capturedPeople> <capturedPeople>
<personIDREF>ciccio</personIDREF> <personIDREF>ciccio</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC1" mediaType="video"> xsi:type="videoCaptureType" captureID="VC1"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.0</x> <x>0.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-1.0</x> <x>-1.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>1.0</x> <x>1.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomRight> </bottomRight>
<topLeft> <topLeft>
<x>-1.0</x> <x>-1.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topLeft> </topLeft>
<topRight> <topRight>
<x>1.0</x> <x>1.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<individual>true</individual> <individual>true</individual>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en">central camera video capture <description lang="en">central camera video capture
</description> </description>
<priority>1</priority> <priority>1</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
<capturedPeople> <capturedPeople>
<personIDREF>alice</personIDREF> <personIDREF>alice</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC2" mediaType="video"> xsi:type="videoCaptureType" captureID="VC2"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>2.0</x> <x>2.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>1.0</x> <x>1.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomRight> </bottomRight>
<topLeft> <topLeft>
<x>1.0</x> <x>1.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topLeft> </topLeft>
<topRight> <topRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<individual>true</individual> <individual>true</individual>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en">right camera video capture <description lang="en">right camera video capture
</description> </description>
<priority>1</priority> <priority>1</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
<capturedPeople> <capturedPeople>
<personIDREF>bob</personIDREF> <personIDREF>bob</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC3" mediaType="video"> xsi:type="videoCaptureType" captureID="VC3"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomRight> </bottomRight>
<topLeft> <topLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topLeft> </topLeft>
<topRight> <topRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<content> <content>
<sceneViewIDREF>SE1</sceneViewIDREF> <sceneViewIDREF>SE1</sceneViewIDREF>
</content> </content>
<policy>SoundLevel:0</policy> <policy>SoundLevel:0</policy>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en">loudest room segment</description> <description lang="en">loudest room segment
</description>
<priority>2</priority> <priority>2</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC4" mediaType="video"> xsi:type="videoCaptureType" captureID="VC4"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureOrigin> <captureOrigin>
<capturePoint> <capturePoint>
<x>0.0</x> <x>0.0</x>
<y>0.0</y> <y>0.0</y>
<z>10.0</z> <z>10.0</z>
</capturePoint> </capturePoint>
</captureOrigin> </captureOrigin>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>7.0</z> <z>7.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>7.0</z> <z>7.0</z>
</bottomRight> </bottomRight>
<topLeft> <topLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>13.0</z> <z>13.0</z>
</topLeft> </topLeft>
<topRight> <topRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>13.0</z> <z>13.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<individual>true</individual> <individual>true</individual>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en"> <description lang="en">
zoomed out view of all people in the room zoomed-out view of all people in the room
</description> </description>
<priority>2</priority> <priority>2</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>room</view> <view>room</view>
<capturedPeople> <capturedPeople>
<personIDREF>alice</personIDREF> <personIDREF>alice</personIDREF>
<personIDREF>bob</personIDREF> <personIDREF>bob</personIDREF>
<personIDREF>ciccio</personIDREF> <personIDREF>ciccio</personIDREF>
</capturedPeople> </capturedPeople>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC5" mediaType="video"> xsi:type="videoCaptureType" captureID="VC5"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
skipping to change at line 2794 skipping to change at line 2550
<sceneViewIDREF>SE1</sceneViewIDREF> <sceneViewIDREF>SE1</sceneViewIDREF>
</content> </content>
<policy>SoundLevel:1</policy> <policy>SoundLevel:1</policy>
<description lang="en">penultimate loudest room segment <description lang="en">penultimate loudest room segment
</description> </description>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC6" mediaType="video"> xsi:type="videoCaptureType" captureID="VC6"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomRight> </bottomRight>
<topLeft> <topLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topLeft> </topLeft>
<topRight> <topRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<content> <content>
<sceneViewIDREF>SE1</sceneViewIDREF> <sceneViewIDREF>SE1</sceneViewIDREF>
</content> </content>
<policy>SoundLevel:2</policy> <policy>SoundLevel:2</policy>
<description lang="en">last but two loudest room segment <description lang="en">last but two loudest room segment
</description> </description>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
</mediaCapture> </mediaCapture>
<mediaCapture <mediaCapture
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:type="videoCaptureType" captureID="VC7" mediaType="video"> xsi:type="videoCaptureType" captureID="VC7"
mediaType="video">
<captureSceneIDREF>CS1</captureSceneIDREF> <captureSceneIDREF>CS1</captureSceneIDREF>
<spatialInformation> <spatialInformation>
<captureArea> <captureArea>
<bottomLeft> <bottomLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomLeft> </bottomLeft>
<bottomRight> <bottomRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>9.0</z> <z>9.0</z>
</bottomRight> </bottomRight>
<topLeft> <topLeft>
<x>-3.0</x> <x>-3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topLeft> </topLeft>
<topRight> <topRight>
<x>3.0</x> <x>3.0</x>
<y>20.0</y> <y>20.0</y>
<z>11.0</z> <z>11.0</z>
</topRight> </topRight>
</captureArea> </captureArea>
</spatialInformation> </spatialInformation>
<content> <content>
<mediaCaptureIDREF>VC3</mediaCaptureIDREF> <mediaCaptureIDREF>VC3</mediaCaptureIDREF>
<mediaCaptureIDREF>VC5</mediaCaptureIDREF> <mediaCaptureIDREF>VC5</mediaCaptureIDREF>
<mediaCaptureIDREF>VC6</mediaCaptureIDREF> <mediaCaptureIDREF>VC6</mediaCaptureIDREF>
</content> </content>
<maxCaptures exactNumber="true">3</maxCaptures> <maxCaptures exactNumber="true">3</maxCaptures>
<encGroupIDREF>EG0</encGroupIDREF> <encGroupIDREF>EG0</encGroupIDREF>
<description lang="en">big picture of the current speaker + <description lang="en">big picture of the current
pips about previous speakers</description> speaker + pips about previous speakers</description>
<priority>3</priority> <priority>3</priority>
<lang>it</lang> <lang>it</lang>
<mobility>static</mobility> <mobility>static</mobility>
<view>individual</view> <view>individual</view>
</mediaCapture> </mediaCapture>
</ns2:mediaCaptures> </ns2:mediaCaptures>
<ns2:encodingGroups> <ns2:encodingGroups>
<encodingGroup encodingGroupID="EG0"> <encodingGroup encodingGroupID="EG0">
<maxGroupBandwidth>600000</maxGroupBandwidth> <maxGroupBandwidth>600000</maxGroupBandwidth>
<encodingIDList> <encodingIDList>
skipping to change at line 2971 skipping to change at line 2729
<person personID="ciccio"> <person personID="ciccio">
<personInfo> <personInfo>
<ns3:fn> <ns3:fn>
<ns3:text>Ciccio</ns3:text> <ns3:text>Ciccio</ns3:text>
</ns3:fn> </ns3:fn>
</personInfo> </personInfo>
<personType>chairman</personType> <personType>chairman</personType>
<personType>timekeeper</personType> <personType>timekeeper</personType>
</person> </person>
</ns2:people> </ns2:people>
</ns2:advertisement> </ns2:advertisement>]]></sourcecode>
</section>
]]> <section anchor="ack-example" numbered="true" toc="default">
</artwork> <name>CLUE Message No. 7: 'ack'</name>
</figure> <sourcecode name="" type="xml"><![CDATA[
</t>
</section>
<section title="CLUE message nr. 7: 'ack' " anchor="ack-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ack xmlns="urn:ietf:params:xml:ns:clue-protocol" <ack xmlns="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns2="urn:ietf:params:xml:ns:clue-info" xmlns:ns2="urn:ietf:params:xml:ns:clue-info"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<clueId>CP2</clueId> <clueId>CP2</clueId>
<sequenceNr>23</sequenceNr> <sequenceNr>23</sequenceNr>
<responseCode>200</responseCode> <responseCode>200</responseCode>
<reasonString>Success</reasonString> <reasonString>Success</reasonString>
<advSequenceNr>13</advSequenceNr> <advSequenceNr>13</advSequenceNr>
</ack> </ack>]]></sourcecode>
]]> </section>
</artwork> <section anchor="conf-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 8: 'configure'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 8: 'configure'" anchor="conf-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:configure xmlns="urn:ietf:params:xml:ns:clue-info" <ns2:configure xmlns="urn:ietf:params:xml:ns:clue-info"
xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol" xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<ns2:clueId>CP2</ns2:clueId> <ns2:clueId>CP2</ns2:clueId>
<ns2:sequenceNr>24</ns2:sequenceNr> <ns2:sequenceNr>24</ns2:sequenceNr>
<ns2:advSequenceNr>13</ns2:advSequenceNr> <ns2:advSequenceNr>13</ns2:advSequenceNr>
<ns2:captureEncodings> <ns2:captureEncodings>
<captureEncoding ID="ce123"> <captureEncoding ID="ce123">
<captureID>AC0</captureID> <captureID>AC0</captureID>
<encodingID>ENC4</encodingID> <encodingID>ENC4</encodingID>
</captureEncoding> </captureEncoding>
<captureEncoding ID="ce456"> <captureEncoding ID="ce456">
<captureID>VC7</captureID> <captureID>VC7</captureID>
<encodingID>ENC1</encodingID> <encodingID>ENC1</encodingID>
<configuredContent> <configuredContent>
<sceneViewIDREF>SE5</sceneViewIDREF> <sceneViewIDREF>SE5</sceneViewIDREF>
</configuredContent> </configuredContent>
</captureEncoding> </captureEncoding>
</ns2:captureEncodings> </ns2:captureEncodings>
</ns2:configure> </ns2:configure>]]></sourcecode>
]]> </section>
</artwork> <section anchor="confRes2-example" numbered="true" toc="default">
</figure> <name>CLUE Message No. 9: 'configureResponse'</name>
</t> <sourcecode name="" type="xml"><![CDATA[
</section>
<section title="CLUE message nr. 9: 'confResponse'" anchor="confRes2-example">
<t>
<figure>
<artwork>
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:configureResponse xmlns="urn:ietf:params:xml:ns:clue-info" <ns2:configureResponse xmlns="urn:ietf:params:xml:ns:clue-info"
xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol" xmlns:ns2="urn:ietf:params:xml:ns:clue-protocol"
xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0" xmlns:ns3="urn:ietf:params:xml:ns:vcard-4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="https://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"
protocol="CLUE" v="2.7"> protocol="CLUE" v="2.7">
<ns2:clueId>CP1</ns2:clueId> <ns2:clueId>CP1</ns2:clueId>
<ns2:sequenceNr>14</ns2:sequenceNr> <ns2:sequenceNr>14</ns2:sequenceNr>
<ns2:responseCode>200</ns2:responseCode> <ns2:responseCode>200</ns2:responseCode>
<ns2:reasonString>Success</ns2:reasonString> <ns2:reasonString>Success</ns2:reasonString>
<ns2:confSequenceNr>24</ns2:confSequenceNr> <ns2:confSequenceNr>24</ns2:confSequenceNr>
</ns2:configureResponse> </ns2:configureResponse>]]></sourcecode>
]]> </section>
</artwork> </section>
</figure> <section anchor="sec-cons" numbered="true" toc="default">
</t> <name>Security Considerations</name>
</section> <t>
As a general consideration, we would like to point out that the CLUE framework
</section>
<section title="Security Considerations">
<t>
As a general consideration, we remark that the CLUE framework
(and related protocol) (and related protocol)
has been conceived at the outset by embracing the security-by-design has been conceived from the outset by embracing the security-by-design
paradigm. paradigm.
This entails that a number of requirements have been identified and As a result, a number of requirements have been identified and
properly standardized as mandatory within the entire set of documents properly standardized as mandatory within the entire set of documents
associated with the CLUE architecture. associated with the CLUE architecture.
Requirements include: (i) the use of cryptography and authentication; Requirements include (i) the use of cryptography and authentication,
(ii) protection of all sensitive fields; (iii) mutual authentication (ii) protection of all sensitive fields, (iii)&nbsp;mutual authentication
between CLUE endpoints; (iv) the presence of authorization mechanisms; between CLUE endpoints, (iv) the presence of authorization mechanisms,
(v) the presence of native defence mechanisms against malicious and (v) the presence of native defense mechanisms against malicious
activities such as eavesdropping, selective modification, deletion, activities such as eavesdropping, selective modification, deletion,
replay (and related combinations thereof). and replay (and related combinations thereof).
Hence, security of the single components of Hence, security of the single components of
the CLUE solution cannot be evaluated independently of the integrated the CLUE solution cannot be evaluated independently of the integrated
view of the final architecture. view of the final architecture.
</t> </t>
<t>
<t>
The CLUE protocol is an application-level protocol allowing a Media The CLUE protocol is an application-level protocol allowing a Media
Producer and a Media Consumer to negotiate a variegated set of Producer and an MC to negotiate a variegated set of
parameters associated with the establishment of a telepresence session. parameters associated with the establishment of a telepresence session.
This unavoidably exposes a CLUE-enabled telepresence system to a number This unavoidably exposes a CLUE-enabled telepresence system to a number
of potential threats, most of which are extensively discussed in the of potential threats, most of which are extensively discussed in the CLUE
framework document <xref target="I-D.ietf-clue-framework" />. framework document <xref target="RFC8845" format="default"/>.
The security considerations section of the mentioned document actually The Security Considerations section of <xref target="RFC8845" format="default"/>
actually
discusses issues associated with the setup and management of a discusses issues associated with the setup and management of a
telepresence session both in the basic case involving two CLUE endpoints telepresence session in both (1)&nbsp;the basic case involving two CLUE endpoint
acting, respectively, as MP and MC, and in the more advanced scenario s
acting as the MP and the MC, respectively and (2)&nbsp;the more advanced scenar
io
envisaging the presence of an MCU. envisaging the presence of an MCU.
</t> </t>
<t>
<t> The CLUE framework document <xref target="RFC8845" format="default"/> also menti
The framework document also mentions that the information carried within CLUE ons that the information carried within CLUE
protocol messages might contain sensitive data, which SHOULD hence be accessed protocol messages might contain sensitive data, which <bcp14>SHOULD</bcp14> henc
e be accessed
only by authenticated endpoints. Security issues associated with the CLUE data only by authenticated endpoints. Security issues associated with the CLUE data
model schema are discussed in <xref target="I-D.ietf-clue-data-model-schema" />. model schema are discussed in <xref target="RFC8846" format="default"/>.
</t> </t>
<t>
<t>
There is extra information carried by the CLUE protocol that is not There is extra information carried by the CLUE protocol that is not
associated with the CLUE data model schema and which exposes associated with the CLUE data model schema and that exposes
information that might be of concern. This information is primarily information that might be of concern. This information is primarily
exchanged during the negotiation phase via the 'options' and 'optionsResponse' m essages. exchanged during the negotiation phase via the 'options' and 'optionsResponse' m essages.
In the CLUE Participant state machine OPTIONS state, both parties In the CP state machine's OPTIONS state, both parties
agree on the version and on the extensions to be used in the subsequent agree on the version and extensions to be used in the subsequent
CLUE messages exchange phase. A malicious participant might either try CLUE message exchange phase. A malicious participant might either
to retrieve a detailed footprint of a specific CLUE protocol (1)&nbsp;try to retrieve a detailed footprint of a specific CLUE protocol
implementation during this initial setup phase, or force the implementation during this initial setup phase or (2)&nbsp;force the
communicating party to use a non-up-to-date version of the protocol communicating party to use a version of the protocol that is outdated
which they know how to break. and that they know how to break.
Indeed, exposing all of the supported versions and extensions could Indeed, exposing all of the supported versions and extensions could
conceivably leak information about the specific implementation of the conceivably leak information about the specific implementation of the
protocol. In theory an implementation could choose not to announce all protocol. In theory, an implementation could choose not to announce all
of the versions it supports if it wants to avoid such leakage, though at of the versions it supports if it wants to avoid such leakage, although
the expenses of interoperability. this would come at the expense of interoperability.
With respect to the above considerations, it is noted that the OPTIONS With respect to the above considerations, it is noted that the OPTIONS
state is only reached after the CLUE data channel has been successfully state is only reached after the CLUE data channel has been successfully
set up. This ensures that only authenticated parties can exchange set up. This ensures that only authenticated parties can exchange
'options' and related 'optionsResponse' messages and hence drastically 'options' messages and related 'optionsResponse' messages, and hence drastically
reduces the attack surface that is exposed to malicious parties. reduces the attack surface that is exposed to malicious parties.
</t> </t>
<t>
<t>
The CLUE framework clearly states the requirement to protect CLUE The CLUE framework clearly states the requirement to protect CLUE
protocol messages against threats deriving from the presence of a protocol messages against threats deriving from the presence of a
malicious agent capable to gain access to the CLUE data channel. malicious agent capable of gaining access to the CLUE data channel.
Such a requirement is met by the CLUE data channel solution described Such a requirement is met by the CLUE data channel solution described
in <xref target="I-D.ietf-clue-datachannel"/>, which ensures protection in <xref target="RFC8850" format="default"/>, which ensures protection
from both message recovery and message tampering. from both message recovery and message tampering.
With respect to this last point, any implementation of the CLUE protocol With respect to this last point, any implementation of the CLUE protocol
compliant with the CLUE specification MUST rely on the exchange of compliant with the CLUE specification <bcp14>MUST</bcp14> rely on the exchange
messages that flow on top of a reliable and ordered SCTP over DTLS of
transport channel connecting two CLUE Participants. messages that flow on top of a reliable and ordered SCTP-over-DTLS
transport channel connecting two CPs.
</t> </t>
</section>
</section> <section numbered="true" toc="default">
<name>IANA Considerations</name>
<section title="IANA Considerations"> <t>
<t> This document registers a new XML namespace, a new XML schema, and
This document registers a new XML namespace, a new XML schema and the media type for the schema.
the MIME type for the schema.
This document also registers the "CLUE" Application Service tag This document also registers the "CLUE" Application Service tag
and the "CLUE" Application Protocol tag and and the "CLUE" Application Protocol tag and
defines registries for the CLUE messages and response codes. defines registries for the CLUE messages and response codes.
</t> </t>
<section title="URN Sub-Namespace Registration"> <section numbered="true" toc="default">
<t> <name>URN Sub-Namespace Registration</name>
<t>
This section registers a new XML namespace, This section registers a new XML namespace,
<spanx style="verb">"urn:ietf:params:xml:ns:clue-protocol"</spanx>. <tt>urn:ietf:params:xml:ns:clue-protocol</tt>.
</t>
<t>
URI: urn:ietf:params:xml:ns:clue-protocol
</t>
<t>
Registrant Contact:
IESG (iesg@ietf.org).
</t> </t>
<t>
XML: <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> </t>
<t> <sourcecode markers="true" type="xml"><![CDATA[
<figure>
<artwork>
<![CDATA[
BEGIN
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en">
<head> <head>
<title>CLUE Messages</title> <title>CLUE Messages</title>
</head> </head>
<body> <body>
<h1>Namespace for CLUE Messages</h1> <h1>Namespace for CLUE Messages</h1>
<h2>urn:ietf:params:xml:ns:clue-protocol</h2> <h2>urn:ietf:params:xml:ns:clue-protocol</h2>
[[NOTE TO IANA/RFC-EDITOR: Please update RFC URL and replace XXXX <p>See <a href="https://www.rfc-editor.org/rfc/rfc8847.txt">
with the RFC number for this specification.]] RFC 8847</a>.</p>
<p>See <a href="[[RFC URL]]">
RFCXXXX</a>.</p>
</body> </body>
</html> </html>
END ]]></sourcecode>
]]> </section>
</artwork> <section numbered="true" toc="default">
</figure> <name>XML Schema Registration</name>
</t> <t>
</section> This section registers an XML schema per the guidelines in <xref target="RFC3688
" format="default"/>.
<section title="XML Schema registration">
<t>
This section registers an XML schema per the guidelines in <xref target="RFC3688
"/>.
</t>
<t>
URI:
urn:ietf:params:xml:schema:clue-protocol
</t>
<t>
Registrant Contact:
IESG (iesg@ietf.org).
</t>
<t>
Schema:
The XML for this schema can be found as the entirety of
<xref target="sec-schema"/> of this document.
</t> </t>
</section> <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 found in
<xref target="sec-schema" format="default"/> of this document.</dd>
</dl>
</section>
<section title="MIME Media Type Registration for 'application/clue+xml'"> <section numbered="true" toc="default">
<t>This section registers the <spanx style="verb"> <name>Media Type Registration for &quot;application/clue+xml&quot;</name
"application/clue+xml"</spanx> MIME type. >
<t>This section registers the <tt>
application/clue+xml</tt> media type.
</t> </t>
<t>To: ietf-types@iana.org</t> <dl newline="false" spacing="normal">
<t>Subject: <dt>To:</dt>
Registration of MIME media type application/clue+xml <dd>ietf-types@iana.org</dd>
</t> <dt>Subject:</dt>
<t>MIME media type name: <dd>Registration of media type "application/clue+xml"</dd>
application</t> <dt>Media type name:</dt>
<t>MIME subtype name: clue+xml</t> <dd>application</dd>
<t>Required parameters: (none)</t> <dt>Subtype name:</dt>
<t>Optional parameters: charset <vspace/> <dd>clue+xml</dd>
Same as the charset parameter of "application/xml" as specified in <dt>Required parameters:</dt>
<xref target="RFC7303"/>, Section 3.2. <dd>(none)</dd>
</t> <dt>Optional parameters:</dt>
<t>Encoding considerations: <dd>charset. Same as the charset parameter of "application&wj;/xml" as s
Same as the encoding considerations of pecified in
"application/xml" as specified in <xref target="RFC7303"/>, Section 3.2. <xref target="RFC7303" sectionFormat="comma" section="4.2"/>.</dd>
</t> <dt>Encoding considerations:</dt>
<t>Security considerations: <dd>Same as the encoding considerations of
This content type is designed to carry "application/xml" as specified in
<xref target="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 protocol data related to telepresence session control. Some of the data
could be considered private. This media type does not provide any could be considered private. This media type does not provide any
protection and thus other mechanisms such as those described in protection; thus, other mechanisms, such as those described in
Section Security are required to protect the data. This media type does <xref target="sec-cons"/> of this document, are required to protect the data. T
not contain executable content. his media type does
</t> not contain executable content.</dd>
<t>Interoperability considerations: None. <dt>Interoperability considerations:</dt>
</t> <dd>None.</dd>
<t>Published specification: <dt>Published specification:</dt>
RFC XXXX <dd>RFC 8847
[[NOTE TO IANA/RFC-EDITOR: </dd>
Please replace XXXX with the RFC number for this specification.]] <dt>Applications that use this media type:</dt>
</t> <dd>CLUE Participants.</dd>
<t>Applications that use this media type:
CLUE participants.
</t>
<t>Additional Information:
Magic Number(s): (none), <vspace/>
File extension(s): .xml, <vspace/>
Macintosh File Type Code(s): TEXT. <vspace/>
</t>
<t>Person &amp; email address to contact for further information:
Simon Pietro Romano (spromano@unina.it).
</t>
<t>Intended usage:
LIMITED USE
</t>
<t>Author/Change controller:
The IETF
</t>
<t>Other information:
This media type is a specialization of
application/xml <xref target="RFC7303"/>, and many of the considerations
described there also apply to application/clue+xml.
</t>
</section> <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 Type Code(s):</dt><dd>TEXT</dd>
</dl>
</dd>
<dt>Person &amp; email address to contact for further information:</dt>
<dd>Simon Pietro Romano (spromano@unina.it).</dd>
<dt>Intended usage:</dt>
<dd>LIMITED USE</dd>
<dt>Author/Change controller:</dt>
<dd>The IETF</dd>
<section title="CLUE Protocol Registry"> <dt>Other information:</dt>
<t> <dd>This media type is a specialization of
The document requests that the IANA creates new registries for CLUE messages and application/xml <xref target="RFC7303" format="default"/>, and many of the consi
response codes. derations
described there also apply to application/clue+xml.</dd>
</dl>
</section>
<section numbered="true" toc="default">
<name>CLUE Protocol Registry</name>
<t>
Per this document, IANA has created new registries for CLUE messages and respons
e codes.
</t> </t>
<section title="CLUE Message Types"> <section numbered="true" toc="default">
<t> <name>CLUE Message Types</name>
<t>
The following summarizes the registry for CLUE messages: The following summarizes the registry for CLUE messages:
</t> </t>
<t> <dl newline="false" spacing="normal">
Related Registry: CLUE Message Types Registry <dt>Related Registry:</dt>
</t> <dd>CLUE Message Types</dd>
<t> <dt>Defining RFC:</dt>
Defining RFC: <dd>RFC 8847</dd>
RFC XXXX <dt>Registration/Assignment Procedures:</dt>
[[NOTE TO IANA/RFC-EDITOR: <dd>Following the policies outlined
Please replace XXXX with the RFC number for this specification.]] in <xref target="RFC8126" format="default"/>, the IANA policy for assigning new
</t> values for the
<t> CLUE message types for the CLUE protocol is Specification Required.</dd>
Registration/Assignment Procedures: Following the policies outlined <dt>Registrant Contact:</dt>
in <xref target="RFC8126"/>, the IANA policy for assigning new values for the <dd>IESG (iesg@ietf.org).</dd>
CLUE message types for the CLUE protocol is Specification Required. </dl>
</t> <t>
<t> The initial table of CLUE messages is populated using the
Registrant Contact: CLUE messages described in <xref target="sec-messages" format="default"/>
IESG (iesg@ietf.org). and defined in the XML schema in <xref target="sec-schema" format="default"/>.
</t>
<t>
The initial Message table is populated using the
CLUE messages described in <xref target="sec-messages"/>
and defined in the XML schema in <xref target="sec-schema"/>.
</t> </t>
<table align="center">
<texttable title="IANA-CLUE"> <name>Initial IANA Table of CLUE Messages</name>
<ttcol>Message</ttcol> <thead>
<ttcol>Description</ttcol> <tr>
<ttcol>Reference</ttcol> <th align="left">Message</th>
<c>options</c> <th align="left">Description</th>
<c>Sent by the CI to the CR in the initiation <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, phase to specify the roles played by the CI,
the supported versions and the supported extensions.</c> the supported versions, and the supported extensions.</td>
<c>RFCXXXX</c> <td align="left">RFC 8847</td>
<c>optionsResponse</c> </tr>
<c>Sent by the CI to the CR in reply to an 'options' message <tr>
to finally estabilsh the <td align="left">optionsResponse</td>
version and the extensions to be used in the following CLUE messages <td align="left">Sent by the CI to the CR in reply to an
exchange.</c> 'options' message, to establish the
<c>RFCXXXX</c> version and extensions to be used in the subsequent exchange of CLUE messages.</
<c>advertisement</c> td>
<c>Sent by the MP to the MC to specify the telepresence capabilities <td align="left">RFC 8847</td>
of the MP expressed according to the CLUE framework.</c> </tr>
<c>RFCXXXX</c> <tr>
<c>ack</c> <td align="left">advertisement</td>
<c>Sent by the MC to the MP to acknowledge the reception of <td align="left">Sent by the MP to the MC to specify the telepre
an 'advertisement' message.</c> sence capabilities
<c>RFCXXXX</c> of the MP expressed according to the CLUE framework.</td>
<c>configure</c> <td align="left">RFC 8847</td>
<c>Sent by the MC to the MP to specify the desired media captures </tr>
among those specified in the 'advertisement'.</c> <tr>
<c>RFCXXXX</c> <td align="left">ack</td>
<c>configureResponse</c> <td align="left">Sent by the MC to the MP to acknowledge the rec
<c>Sent by the MP to the MC in reply to a CONFIGURE message to eption of
communicate if the configuration request has been successfully an 'advertisement' message.</td>
processed or not.</c> <td align="left">RFC 8847</td>
<c>RFCXXXX</c> </tr>
</texttable> <tr>
<td align="left">configure</td>
</section> <td align="left">Sent by the MC to the MP to specify the desired
<section title="CLUE Response Codes"> media captures
<t> among those specified in the 'advertisement'.</td>
The following summarizes the requested registry for CLUE response codes: <td align="left">RFC 8847</td>
</t> </tr>
<t> <tr>
Related Registry: CLUE Response Code Registry <td align="left">configureResponse</td>
</t> <td align="left">Sent by the MP to the MC in reply to a 'configu
<t> re' message to
Defining RFC: communicate whether or not the configuration request has been successfully
RFC XXXX processed.</td>
[[NOTE TO IANA/RFC-EDITOR: <td align="left">RFC 8847</td>
Please replace XXXX with the RFC number for this specification.]] </tr>
</t> </tbody>
<t> </table>
Registration/Assignment Procedures: Following the policies outlined </section>
in <xref target="RFC8126"/>, the IANA policy for assigning new values for the <section numbered="true" toc="default">
Response codes for CLUE shall be Specification Required. <name>CLUE Response Codes</name>
</t> <t>
<t> The following summarizes the registry for CLUE response codes:
Registrant Contact:
IESG (iesg@ietf.org).
</t> </t>
<t>
The initial Response-code table is populated using the <dl newline="false" spacing="normal">
Response codes defined in <xref target="sec-resp-codes"/> <dt>Related Registry:</dt>
<dd>CLUE Response Codes</dd>
<dt>Defining RFC:</dt>
<dd>RFC 8847</dd>
<dt>Registration/Assignment Procedures:</dt>
<dd>Following the policies outlined
in <xref target="RFC8126" format="default"/>, the IANA policy for assigning new
values for the
response codes for CLUE is Specification Required.</dd>
<dt>Registrant Contact:</dt>
<dd>IESG (iesg@ietf.org).</dd>
</dl>
<t>
The initial table of CLUE response codes is populated using the
response codes defined in <xref target="sec-resp-codes" format="default"/>
as follows: as follows:
</t> </t>
<table align="center">
<texttable> <name>Initial IANA Table of CLUE Response Codes</name>
<ttcol>Number</ttcol> <thead>
<ttcol>Default Response String</ttcol> <tr>
<ttcol>Description</ttcol> <th align="left">Number</th>
<ttcol>Reference</ttcol> <th align="left">Default Reason String</th>
<c>200</c> <th align="left">Description</th>
<c>Success</c> <th align="left">Reference</th>
<c>The request has been successfully processed.</c> </tr>
<c>RFCXXXX</c> </thead>
<c>300</c> <tbody>
<c>Low-level request error.</c> <tr>
<c>A generic low-level request error has occurred.</c> <td align="left">200</td>
<c>RFCXXXX</c> <td align="left">Success</td>
<c>301</c> <td align="left">The request has been successfully processed.</t
<c>Bad syntax</c> d>
<c>The XML syntax of the message <td align="left">RFC 8847</td>
is not correct.</c> </tr>
<c>RFCXXXX</c> <tr>
<c>302</c> <td align="left">300</td>
<c>Invalid value</c> <td align="left">Low-level request error</td>
<c>The message contains an <td align="left">A generic low-level request error has occurred.
invalid parameter value.</c> </td>
<c>RFCXXXX</c> <td align="left">RFC 8847</td>
<c>303</c> </tr>
<c>Conficting values</c> <tr>
<c>The message contains values <td align="left">301</td>
that cannot be used together.</c> <td align="left">Bad syntax</td>
<c>RFCXXXX</c> <td align="left">The XML syntax of the message
<c>400</c> is not correct.</td>
<c>Semantic errors</c> <td align="left">RFC 8847</td>
<c>Semantic errors in the received </tr>
CLUE protocol message.</c> <tr>
<c>RFCXXXX</c> <td align="left">302</td>
<c>401</c> <td align="left">Invalid value</td>
<c>Version not supported</c> <td align="left">The message contains an
<c>The protocol version invalid parameter value.</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 used together.</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 protocol message 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 used in the message
is not supported.</c> is not supported.</td>
<c>RFCXXXX</c> <td align="left">RFC 8847</td>
<c>402</c> </tr>
<c>Invalid sequencing</c> <tr>
<c> <td align="left">402</td>
Sequence number gap; repeated sequence number; sequence number <td align="left">Invalid sequencing</td>
outdated. <td align="left">
</c> The received message contains an unexpected sequence number (e.g.,
<c>RFCXXXX</c> sequence number gap, repeated sequence number, or sequence number
<c>403</c> outdated).
<c>Invalid identifier</c> </td>
<c>The clueId used in the <td align="left">RFC 8847</td>
message is not valid </tr>
or unknown.</c> <tr>
<c>RFCXXXX</c> <td align="left">403</td>
<c>404</c> <td align="left">Invalid identifier</td>
<c>advertisement Expired</c> <td align="left">The clueId used in the
<c>The sequence number of the advertisement message is invalid
the configure refers to is out or unknown.</td>
of date.</c> <td align="left">RFC 8847</td>
<c>RFCXXXX</c> </tr>
<c>405</c> <tr>
<c>Subset choice not allowed</c> <td align="left">404</td>
<c>The subset choice is not allowed <td align="left">Advertisement expired</td>
for the specified Multiple Content Capture.</c> <td align="left">The sequence number of the advertisement
<c>RFCXXXX</c> the 'configure' message refers to is out
</texttable> of date.</td>
<td align="left">RFC 8847</td>
</section> </tr>
</section> <tr>
</section> <td align="left">405</td>
<td align="left">Subset choice not allowed</td>
<section title="Acknowledgments"> <td align="left">The subset choice is not allowed
<t> for the specified Multiple Content Capture.</td>
The authors thank all the CLUErs for their precious feedbacks and support, <td align="left">RFC 8847</td>
in particular Paul Kyzivat, Christian Groves and Scarlett Liuyan. </tr>
</t> </tbody>
</section> </table>
</section>
</middle> </section>
<back> </section>
</middle>
<references title="Normative References"> <back>
<references>
<!-- RFC2119, boilerplate text --> <name>References</name>
<?rfc include="reference.RFC.2119"?> <references>
<name>Normative References</name>
<!-- RFC8174, boilerplate text --> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.
<?rfc include="reference.RFC.8174"?> xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.
<!-- clue framework --> xml"/>
<?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 --> <!-- draft-ietf-clue-framework (RFC 8845) -->
<?rfc include="reference.RFC.7667"?> <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>
<!-- RFC6120, XMPP --> <!-- draft-ietf-clue-signaling (RFC 8848) -->
<?rfc include="reference.RFC.6120"?> <reference anchor="RFC8848" target="https://www.rfc-editor.org/info/rfc8
848">
<front>
<title>Session Signaling for Controlling Multiple Streams for Telepr
esence (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>
<!-- RFC1122, XMPP --> <!-- draft-ietf-clue-datachannel (RFC 8850) -->
<?rfc include="reference.RFC.1122"?> <reference anchor="RFC8850" target="https://www.rfc-editor.org/info/rfc8
850">
<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>
<!-- RFC3261, SIP --> <!-- draft-ietf-clue-data-model-schema (RFC 8846) -->
<?rfc include="reference.RFC.3261"?> <reference anchor="RFC8846" target="https://www.rfc-editor.org/info/rfc8
846">
<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>
</references> <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"/>
</back> <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</refc
ontent>
</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>
<section numbered="false" toc="default">
<name>Acknowledgements</name>
<t>
The authors thank all the CLUErs for their precious feedback and support -- in
particular, <contact fullname="Paul Kyzivat"/>, <contact fullname="Christian
Groves"/>, and <contact fullname="Scarlett Liuyan"/>.
</t>
</section>
</back>
</rfc> </rfc>
 End of changes. 365 change blocks. 
1862 lines changed or deleted 1731 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/