One document matched: draft-presta-clue-protocol-04.xml


<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no"?>
<?rfc sortrefs="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc rfcedstyle="yes" ?>
<rfc docTitle="draft-presta-clue-protocol-04"  submissionType="IETF"  
consensus="yes" category="std" ipr="trust200902">
<front>
<title abbrev="draft-presta-clue-protocol-04">
CLUE protocol 
</title>
<author initials="R." surname="Presta" fullname="Roberta Presta">
	  <organization>University of Napoli</organization>
	  <address> 
		  <postal>
			  <street>Via Claudio 21</street>
			  <code>80125</code> 
			  <city>Napoli</city> 
			  <country>Italy</country>
		  </postal>
		  <email>roberta.presta@unina.it</email>
	  </address>
</author>
<author initials="S. P." surname="Romano" fullname="Simon Pietro Romano">
		<organization>University of Napoli</organization>
		<address>
			<postal>
				<street>Via Claudio 21</street>
				<code>80125</code> 
				<city>Napoli</city> 
				<country>Italy</country>
			</postal>
			<email>spromano@unina.it</email>
		</address>
</author>
<date month="May" year="2014"/>  
<area>RAI</area>
<workgroup>CLUE Working Group</workgroup>

<!-- [rfced] Please insert any keywords (beyond those that appear in
the title) for use on http://www.rfc-editor.org/rfcsearch.html. -->
<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="I-D.ietf-clue-telepresence-requirements"/>.
The companion document <xref target="I-D.kyzivat-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. 
</t>
</abstract>
</front>

<middle>
<!-- Introduction -->
<section title="Introduction" anchor="sec-intro">
<t>
The CLUE protocol is an application protocol used 
by two CLUE Participants to enhance the experience of a multimedia
telepresence session.
The main goals of the CLUE protocol are:
<list style="numbers">
<t>enabling a MP to fully announce its current telepresence capabilities 
to a MC in terms of available media captures, groups of encodings, 
simultaneity constraints and other information envisioned in 
<xref target="I-D.ietf-clue-framework"/>;</t>
<t>enabling a MC to request the desired multimedia streams to the 
offering MP.</t>
</list>		
</t>		
<t>
CLUE-capable endpoints are connected by means of the CLUE data channel, an SCTP 
over DTLS channel which is opened and established as depicted respectively in 
<xref target="I-D.kyzivat-clue-signaling"/> and 
<xref target="I-D.kyzivat-clue-signaling"/>.
CLUE protocol messages flowing upon such channel are detailed in the following, 
both syntactically and semantically. 		  
</t>
<t>
In <xref target="sec-overview"/> we provide a general overview of the CLUE
protocol.
CLUE protocol messages are detailed in <xref target="sec-messages"/>
The CLUE Participant state machine is introduced in 
<xref target="sec-sm"/>.
Versioning and extensions are discussed 
in <xref target="sec-versioning"/> and <xref target="sec-ext"/>, respectively.
The XML schema defining the CLUE messages is reported in 
<xref target="sec-schema"/>. 
</t>
</section>
	
		
<!-- 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="I-D.ietf-clue-telepresence-requirements"/>. 
We briefly recall herein some of the main terms exploited in the document.
We further introduce the definition of CLUE Participant.</t>
<t>
<list style="hanging">
<t hangText="CLUE Participant"> An entity able to use the CLUE protocol
within a telepresence session. 
It can be an endpoint or a MCU able to use the CLUE protocol.</t>
<t hangText="Endpoint">The logical point of final termination through
receiving, decoding and rendering, and/or initiation through
capturing, encoding, and sending of media streams.  An endpoint
consists of one or more physical devices which source and sink
media streams, and exactly one <xref target="RFC4353"/> Participant (which, in
turn, includes exactly one SIP User Agent). Endpoints can be anything from
multiscreen/multicamera room controllers to handheld devices.</t>
<t hangText="MCU">Multipoint Control Unit (MCU) - a device that connects two or
more endpoints together into one single multimedia conference
<xref target="RFC5117"/>.  An MCU may include a Mixer 
<xref target="RFC4353"/>.</t>
<t hangText="Media"> Any data that, after suitable encoding, can be conveyed over
RTP, including audio, video or timed text.</t>
<t hangText="Media Capture">A "Media Capture", or simply "Capture", is 
a source of Media.</t>
<t hangText="Capture Encoding">A specific encoding of a Media Capture, to be
sent via RTP <xref target="RFC3550"/>.</t>      
<t hangText="Media Stream">The term "Media Stream", or simply "Stream", is used 
as a synonymous of Capture Encoding.</t>
<t hangText="Media Provider">A CLUE Participant (i.e., an Endpoint or a MCU) 
able to send Media Streams.</t>
<t hangText="Media Consumer">A CLUE Participant (i.e., an Endpoint or a MCU) 
able to receive Media Streams.</t>      
</list>
</t>
</section>
	
<!-- Overview of the protocol architecture -->
<section 
  title="Overview of the CLUE protocol" 
  anchor="sec-overview">
<t>
The CLUE protocol has been conceived to enable CLUE telepresence session.
It is designed in order to address SDP limitations in terms of the description
of several information about the multimedia streams that are involved
in a real-time multimedia conference.
Indeed, by simply using SDP we are not able to convey the information
about the features of the flowing multimedia streams that is needed 
to enable a "being there" rendering.
Such information is designed in the CLUE framework document and formally 
defined and described in the CLUE data model document.
The CLUE protocol represents the mechanism that enables the exchange of CLUE
information between CLUE Participants.   
It mainly provides the messages to enable a Media Provider to advertise its
telepresence capabilities and to enable a Media Consumer to select the 
desired telepresence options.
</t>
<t>
The CLUE protocol, as defined in the following, is a stateful, client-server, 
XML-based application protocol.
CLUE protocol messages flow on realiable and ordered SCTP over DTLS transport 
channel connecting two CLUE Participants.
Messages carries information taken from the XML-based CLUE data model 
(<xref target="I-D.ietf-clue-data-model-schema"/>).  
Three main communication layers 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 ends up successfully, the CPs are able to communicate 
and start the initiation phase.
</t>
<t>
Negotiation of the CLUE protocol version and options (initiation phase): 
the CPs connected via the CLUE data channel agree on the version and on the 
options to be used during the telepresence session. Special CLUE messages are
used for such a task. 
At the end of that basic negotiation, each CP starts its activity as a CLUE MP 
and/or CLUE MC.
</t>
<t>
CLUE telepresence capabilities description and negotiation: in this phase, the 
MP-MC offer-answer dialogues take place on the data channel 
by means of the CLUE protocol messages.
</t>
</list>
</t>
<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.
CLUE protocol version numbers are characterized by a major version number and a minor 
version number, both unsigned integer, separated by a dot. 
While minor version numbers denote backword compatible changes in the context of
a given major version, different major version numbers generally indicate
a lack of interoperability between the protocol implementations. 
In order to correctly establish a CLUE dialogue, the involved CPs MUST 
have in common a major version number (see <xref target="sec-versioning"/> for
further details).
The subset of the protocol options and extensions that are allowed within the 
CLUE session is also determined in the initiation phase, 
such subset being the one including only 
the options that are supported by both parties.   
A mechanism for the negotiation of the CLUE protocol version and 
extensions is envisioned in the initiation phase.
According to such solution, the CP which is the CLUE Channel  
initiator (CI) issues a proper CLUE message (OPTIONS) 
to the CP which is the Channel Receiver (CR) specifying the supported 
version and extensions. 
The CR then answers by selecting the subset of the
CI extensions that it is able to support and determines the protocol version to 
be used.
</t>
<t>
After that negotiation phase is completed, CLUE Participants describe and agree
on the media flows to be exchanged. 
Indeed, being CPs A and B both transmitting and receiving, 
it is possible to distinguish between two dialogues:
</t>
<t>
<list style="numbers">
<t>the one needed to describe and set up the media streams sent from A to B, i.e.,
the dialogue between A's Media Provider side and B's Media Consumer side</t>
<t>the one needed to describe and set up the media streams sent from B to A, 
i.e.,
the dialogue between B's Media Provider side and A's Media Consumer side</t>
</list>
</t>
<t>
 CLUE messages for the media session description and negotiation is designed
 by considering the MP side as the server side of the protocol, since it
 produces and provides media streams, and the MC side as
 the client side of the protocol, since it requests and receives media streams.
 The messages that are exchanged to set up the telepresence media session are
 described by focusing on a single MP-MC dialogue.  
 </t>    
 <t>  
 The MP first advertises its available media captures and encoding capabilities 
 to the MC, as well as its simultaneity constraints,  
 according to the information model defined in 
 <xref target="I-D.ietf-clue-framework"/>.
 The CLUE message conveing the MP's multimedia offer is the ADVERTISEMENT 
 message. 
 Such message leverages the XML data model definitions provided in 
  <xref target="I-D.ietf-clue-data-model-schema"/>.   
  </t>
  <t>
  The MC selects the desired streams of the MP by using the CONFIGURE message,
  which makes reference to the information carried in the previously 
  received ADVERTISEMENT.
  </t>
  <t>
  Besides ADVERTISEMENT and CONFIGURE, 
  other messages have been conceived in order to provide all the needed 
  mechanisms and operations and will be detailed in the following sections.
  </t>
</section>

<section title="Protocol messages" anchor="sec-messages">
<t>
CLUE protocol messages are textual, XML-based messages that enable the 
configuration of the telepresence session. 
The formal definition of such messages is provided in the XML Schema provided 
at the end of this document (<xref target="sec-schema"/>). 
</t>
<t>
The XML definitions of the CLUE information provided in 
<xref target="I-D.ietf-clue-data-model-schema"/> are included within some CLUE protocol messages 
(namely the ADVERTISEMENT, the CONFIGURE, and the READV RESPONSE messages), in 
order to use the concept defined in <xref target="I-D.ietf-clue-framework"/>.  
</t>
<t>
The CLUE protocol messages that have been defined up to now are the following:
</t>
<t>
  <list style="symbols">
  <t>OPTIONS</t>
  <t>OPTIONS RESPONSE</t>
  <t>ADVERTISEMENT (ADV)</t>
  <t>ADVERTISEMENT ACKNOWLEDGE (ACK)</t>
  <t>CONFIGURE (CONF)</t>
  <t>CONFIGURE RESPONSE</t>
  <t>READV</t>
  <t>READV RESPONSE</t>
  </list>
</t>
<t>
While the OPTIONS and OPTIONS RESPONSE messages are exchanged in the initiation
phase between the CPs, the other messages are involved in MP-MC dialogues.
</t>
<t>
Each CLUE message inherits a basic structure depicted in the following figure: 
</t>
<t>
<figure>
<artwork>
<![CDATA[
<!-- CLUE MESSAGE TYPE -->
<xs:complexType name="clueMessageType" abstract="true">
<xs:sequence>
<xs:element name="clueId" type="xs:string"/>
<xs:element name="sequenceNr" type="xs:unsignedInt"/>
</xs:sequence>
<xs:attribute name="protocol" type="xs:string" fixed="CLUE" use="required"/>
<xs:attribute name="v" type="xs:string" use="required"/>
</xs:complexType>
]]>
</artwork>
</figure>
</t>
<t>
The basic structure determines the mandatory information that is carried within
each CLUE message.
Such an information is made by:
</t>
<t>
<list style="symbols">
<t>clueId: an XML element containing the identifier of the CP within the telepresence system;</t>
<t>sequenceNr: an XML element containing the local message sequence number;</t>
<t>protocol: a mandatory attribute set to "CLUE" identifying the procotol
the messages refer to;</t>
<t>v: a mandatory attribute carrying the version of the protocol</t> 
</list>
</t>
<t>
Each CP should manage uo to three streams of sequence numbers: 
(i) one for the messages
exchanged in the initiation phase, (ii) one for the messages exchanged as MP, and
(iii) one for the messages exchanged as MC. 
</t>


<section title="OPTIONS" label="subsec-options">
<t>
The OPTIONS message is sent by the CP which is the CI to the CP which is the CR
as soon as the CLUE data channel is ready.
Besides the information envisioned in the basic structure, it specifies: 
</t>
<t>
<list style="symbols">
<t>mediaProvider: a mandatory boolean field set to "true" if the CP is able to
act as a MP</t>
<t>mediaConsumer: a mandatory boolean field set to "true" if the CP is able to
act as a MC</t>
<t>supportedVersions: the list of the supported versions</t>
<t>supportedOptions: the list of the supported options</t>
</list>
</t>
<t>
The XML Schema of such a message is reported below:
</t>
<t>
<figure>
<artwork>
<![CDATA[
<!-- CLUE OPTIONS -->
<xs:complexType name="optionsMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="mediaProvider" type="xs:boolean"/>
<xs:element name="mediaConsumer" type="xs:boolean"/>
<xs:element name="supportedVersions" type="versionsListType" minOccurs="0"/>
<xs:element name="supportedOptions" type="optionsListType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

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

<!-- OPTIONS LIST TYPE -->
<xs:complexType name="optionsListType">
<xs:sequence>
<xs:element name="option" type="optionType" minOccurs="1" 
 maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
 
<!-- OPTION TYPE -->
<xs:complexType name="optionType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="schemaRef" type="xs:anyURI" minOccurs="0"/>
<xs:element name="version" type="xs:string" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
]]>
</artwork>
</figure>
</t>
<t>
<supportedVersions> contains the list of the versions that are supported by the CI.
Only one <version> element SHOULD be provided 
for each major version supported, containing the maximum minor version number 
of such a version, since all minor versions are backward compatible.
If no <supportedVersions> is carried whithin the OPTIONS message, 
the CI supports only the version declared in the "v" attribute.
For example, if the "v" attribute has a  value of "3.4" and there is not a  
<supportedVersions> tag in the OPTIONS message, 
it means the CI supports only major version 3 with 
all the minor versions comprised between 3.0 the 3.4 included.

If a <supportedVersion> is provided, 
at least one <version> tag MUST be included.
</t>

<t>
The <supportedOptions> element specifies the list of the options 
supported by the CI.
If there is no <supportedOptions> in the OPTIONS message, the CI 
does not support anything more than what is envisioned in the versions it supports.
For each option, an <option> element is provided.
An option is characterized by a name, an XML schema of reference where the option is defined, 
and the version of the protocol which the option refers to.
[to be discussed: difference between options and extensions]
</t>
</section>

<section title="OPTIONS RESPONSE" label="sec-options-response">
<t>
The OPTIONS RESPONSE is sent by a CR to a CI as a reply to the OPTIONS message.
As depicted in the figure below, the OPTIONS RESPONSE contains mandatorily 
a response code and a response string indicating 
the processing result of the OPTIONS message.
Following, the CR attaches two boolean tags, <mediaProvider> and <mediaConsumer>, 
expressing the supported roles in terms of respectively MP and MC, 
similarly to what the CI does in the OPTIONS message. 
Finally, the highest commonly supported version number is expressed in the 
<version> field and just the commonly supported options in the <commonOptions> field.
</t>
<t>
<figure>
<artwork>
<![CDATA[
<!-- CLUE OPTIONS RESPONSE (2 WAY) -->
<xs:complexType name="optionsResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:string"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="mediaProvider" type="xs:boolean" minOccurs="0"/>
<xs:element name="mediaConsumer" type="xs:boolean" minOccurs="0"/>
<xs:element name="version" type="xs:string" minOccurs="0"/>
<xs:element name="commonOptions" type="optionsListType" minOccurs="0"/> 
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
]]>
</artwork>
</figure>
</t>
<t>
After the reception of such message, the version to be used is determined by each part of the conversation. 
Indeed, it is the one provided in the <version> tag of the OPTIONS RESPONSE message. 
The following CLUE messages will use such a version number in the "v" attribute.
The allowed options in the CLUE dialogue will be those indicated in the <commonOptions> of the OPTIONS RESPONSE message.
</t>
</section>

<section title="ADVERTISEMENT" label="subsec-adv">
<t> 
This message is used by the MP to advertise the available media captures 
and related information  to the MC.
 The MP sends to the MC an ADV as soon as it is ready after the successful completion of the initiation phase.
During the telepresence session,  the ADV can be sent from the MP both periodically and 
  on a per-event basis, i.e., each time there are changes in the MP's CLUE telepresence capabilities.
 </t>
<t>
The ADV structure is defined in the picture below.
The ADV contains elements compliant with the CLUE data model that characterize 
the MP's telepresence offer. 
Namely, such elements are: the list of the media captures (<mediaCaptures>),
 of the encoding groups (>encodingGroups>), of the capture scenes (>captureScenes>) 
 and of the global capture entries (>globalCaptureEntries>), 
 and the list of the represented participants (>participants>). 
 Each of them is fully described in the CLUE framework document 
 and formally defined in the CLUE data model document.
 </t>
 <t>
 <figure>
 <artwork>
 <![CDATA[ 
<!-- CLUE ADVERTISEMENT MESSAGE TYPE -->
<xs:complexType name="advertisementMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<!-- mandatory fields -->
<xs:element name="mediaCaptures" type="dm:mediaCapturesType"/>                 
<xs:element name="encodingGroups" type="dm:encodingGroupsType"/>
<xs:element name="captureScenes" type="dm:captureScenesType"/>
<xs:element name="simultaneousSets" type="dm:simultaneousSetsType" 
 minOccurs="0"/>                
<xs:element name="globalCaptureEntries" type="dm:globalCaptureEntriesType" 
 minOccurs="0"/>
<xs:element name="participants" type="dm:participantsType" minOccurs="0"/>                                     
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
 ]]>
 </artwork>
 </figure>
 </t>
  <t>
  [to be discussed: a "delta" mechanism for advertising 
  only the changes with respect to the previous notification should be adopted. 
  Similar approaches have been proposed for partial notifications 
  in centralized conferencing frameworks (<xref target="RFC6502"/>), 
  leveraging the XML diff codification mechanism defined in <xref target="RFC5261"/>].    
  </t>
  </section>

<section title="ADVERTISEMENT ACKNOWLEDGEMENT" label="sec-adv-ack">
<t>
The ACK message is sent by a MC to a MP to acknowledge an ADV message.
As it can be seen from the message schema provided in the following, 
the ACK contains a response code and a reason string for describing 
the processing result of the ADV.
The <advSequenceNr> carries the sequence number of 
the ADV the ACK refers to.
</t>
<t>
<figure>
<artwork>
<![CDATA[
<!-- ADV ACK MESSAGE TYPE -->
<xs:complexType name="advAcknowledgementMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:short"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="advSequenceNr" type="xs:unsignedInt"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
]]>
</artwork>
</figure>
</t>
</section>


  <section title="CONFIGURE" label="sec-conf">
<t>
The CLUE CONFIGURE message is sent from a MC to a MP 
to list the advertised captures the MC wants to receive.
The MC can send a CONF after the reception of an ADV or each time it wants to 
request other captures that have been previously advertised by the MP.
The content of the CONF message is shown below.
</t>
  <t>
<figure>
 <artwork>
  <![CDATA[
 <!-- CLUE CONFIGURE MESSAGE TYPE -->
<xs:complexType name="configureMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<!-- mandatory fields -->
<xs:element name="advSequenceNr" type="xs:unsignedInt"/>
<xs:element name="ack" type="xs:boolean" minOccurs="0" fixed="true"/>
<xs:element name="captureEncodings" type="dm:captureEncodingsType" 
 minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
]]>
   </artwork>
  </figure>
  </t>
<t>
In the >advSequenceNr< element is contained the sequence number of 
the ADVERTISEMENT or of the READV RESPONSE message the CONFIGURE refers to.
</t>
<t>
The optional boolean <ack> element, set to "true", if present, 
indicates that the CONF message also acknowledge the referred advertisement, 
by applying in that way a piggibacking mechanism 
for simultaneously acknowledging and replying to the ADV message. 
The <ack> element SHOULD not be present at all 
if an ADV ACK message has been already sent back to the MP and 
if the CONFIGURE refers to a READV RESPONSE message.		
</t>
<t>
The most important content of the CONFIGURE message is the list of the capture
encodings provided in the <captureEncodings> element. Such an element is
defined in the CLUE data model document and contains a sequence of capture encodings,
representing the streams to be instantiated.
</t>

  </section>  
  <section title="CONFIGURE RESPONSE" label="sec-conf-resp">
  <t>
<figure>
 <artwork>
  <![CDATA[
  
<!-- CONFIGURE RESPONSE MESSAGE TYPE -->
<xs:complexType name="configureResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:short"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="confSequenceNr" type="xs:integer"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
 ]]>
   </artwork>
  </figure>
  </t>
    <t>
The CONF RESPONSE message is sent from the MP to the MC to communicate 
the processing result of requests carried in the previously received CONF message.
It contains a response code with a reason string indicating either the success 
or the failure (along with failure details) of a CONF request processing. 
Following, the <confSequenceNr> field contains 
the number of the CONF message the response refers to.
</t>
</section>

  
  <section title="READV" label="sec-readv">
<t>
The READV message is a request the MC issues to the MP to retrieve an updated 
version of the MP's telepresence offer.
The content of the READV message is specified in the following.
</t>  

<t>
<figure>
 <artwork>
  <![CDATA[
  
<!-- CLUE READV MESSAGE TYPE -->
<xs:complexType name="readvMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="lastReceivedAdv" type="xs:short"/> 
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

]]>
   </artwork>
  </figure>
  </t>

<t>
The <lastReceivedAdv> element specifies the sequence number of 
the last ADVERTISEMENT or READV RESPONSE correctly received by the MC.
</t>
</section>

<section title="READV RESPONSE" anchor="sec-readv-response">

<t>
The READV RESPONSE is sent by the MP to the MC to reply to a READV message.
As shown in the schema below, it contains, besides a response code and a reason string, all the 
information carried within an ADVERTISEMENT message (media captures, encoding groups, and so on).
If there are no updates with respect to the last telepresence offer successfully delivered to the MC 
(i.e, that having the sequence number specified in the 
<lastReceiveAdv> field of the READV message), 
the READV RESPONSE SHOULD carry only the response code with the reason string. 
</t>

<t>
<figure>
<artwork>
<![CDATA[
<!-- CLUE READV RESPONSE MESSAGE TYPE -->
<xs:complexType name="readvResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:short"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="readvSequenceNr" type="xs:string" minOccurs="0"/>
<xs:element name="mediaCaptures" type="dm:mediaCapturesType" minOccurs="0"/>                 
<xs:element name="encodingGroups" type="dm:encodingGroupsType" minOccurs="0"/>
<xs:element name="captureScenes" type="dm:captureScenesType" minOccurs="0"/>
<xs:element name="simultaneousSets" type="dm:simultaneousSetsType" minOccurs="0"/>                
<xs:element name="globalCaptureEntries" type="dm:globalCaptureEntriesType" minOccurs="0"/>
<xs:element name="participants" type="dm:participantsType" minOccurs="0"/>                                      
<xs:any namespace="##other"
 processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
]]>
</artwork>
</figure>
</t>
</section>  

<section title="Response codes and reason strings" label="sec-resp-codes">
<t>
Examples of response codes and strings are provided in the following table.	
Response codes can be designed by adhering to the HTTP semantics, as shown below.
</t>
  
  <t>
  <figure>
 <artwork>
  <![CDATA[
  
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |  Response code  |  Response string     |       Description        |
 |                 |                      |                          |
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   410           |  Bad syntax          |  The XML syntax of the   |
 |                 |                      |  CONF message is not     | 
 |                 |                      |  correct.                |
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   411           |  Invalid value       |  The CONF message        |
 |                 |                      |  contains an invalid     |
 |                 |                      |  parameter value.        |
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   412           |  Invalid identifier  |  The identifier used for |
 |                 |                      |  requesting a capture is |
 |                 |                      |  not valid or unknown.   |
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   413           |  Conflicting values  |  The CONF message        |
 |                 |                      |  contains values that    |
 |                 |                      |  cannot be used together.|
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   420           |  Invalid sequencing  |  The sequence number of  |
 |                 |                      |  the CONF message is out |  
 |                 |                      |  of date or corresponds  |
 |                 |                      |  to an obsoleted ADV.    |
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   510           | Version not supported|  The CLUE protocol       |
 |                 |                      |  version of the CONF     |
 |                 |                      |  message is not supported|
 |                 |                      |  by the MP.              |
 +-----------------+----------------------+--------------------------+
 |                 |                      |                          |
 |   511           | Option not supported |  The option requested in |
 |                 |                      |  the CONF message is not |
 |                 |                      |  supported by the MP.    |
 +-----------------+----------------------+--------------------------+
  
]]>
   </artwork>
  </figure>
  </t>
  <t>... TBC.</t>

 
  
  <t>
  <figure>
 <artwork>
  <![CDATA[
  
+---------------+------------------------+
|               |                        |
| Response code | Description            |
| family        |                        |
+---------------+------------------------+
|               |                        |
|     1XX       | Temporary info         |
|               |                        |
+---------------+------------------------+
|               |                        |
|     2XX       | Success                |
|               |                        |
+---------------+------------------------+
|               |                        |
|     3XX       | Redirection            |
|               |                        |
+---------------+------------------------+
|               |                        |
|     4XX       | Client error           |
|               |                        |
+---------------+------------------------+
|               |                        |
|     5XX       | Server error           |
|               |                        |
+---------------+------------------------+
]]>
   </artwork>
  </figure>
  </t>
  </section>

  </section><!-- protocol messages -->
<section title="Protocol state machines" anchor="sec-sm">
  <t>	The CLUE protocol is an application protocol used between two CPs 
  in order to properly configure a multimedia telepresence session.

		CLUE protocol messages flow upon the CLUE Data Channel, 
		a DTLS/SCTP channel established as depicted in <xref target="I-D.kyzivat-clue-signaling"/>.
		Over such a channel there are typically two CLUE streams between the 
		channel terminations flowing in opposite directions.
		In other words,  typically, both channel terminations act simultaneously
		as a MP and as a MC.
		
		We herein discuss the state machines associated, respectively, with the
		CLUE Participant, with MC process and 
		with the MP process. 
		
		</t>
		
		
		
		
  </section>

<section title="CLUE Participant's state machine">
<t>
The main state machines focus on describing the states of CLUE channel 
from a CLUE channel initiator/receiver.
In the IDLE state, when the CP has established a CLUE channel, 
the main state moves to the ESTABLISHED state. 
When in the ESTABLISHED state, 
if the CP is the Channel Initiator (CI), it prepares sending an OPTIONS message 
for version negotiation; otherwise, if the is the Channel Receiver (CR),
it listens to the channel for an OPTIONS message for version negotiation.
If an OPTIONS message is sent or is received, 
the CP moves to the NEGOTIATING state. 

If the CP checks some error in the request message received, 
the main state goes back to the IDLE state. 
[TODO: check this]

When in the NEGOTIATING state, 
the CR prepares an OPTIONS RESPONSE message 
while the CI listens to the channel for an OPTIONS RESPONSE.
 
If an OPTIONS RESPONSE message for version negotiation is sent or is received, 
the main state moves to the ACTIVE state. 

If the CI checks some error in the OPTIONS RESPONSE message received or 
receives an OPTIONS RESPONSE indicating an error, it goes back to the IDLE state. 

When the CP enters in the ACTIVE state, it creates 
two sub state machines which are the MC state machine and the 
MP state machine, accordingly to  the supported roles.

When in the ACTIVE state, if the CP receives a further OPTIONS 
message for version negotiation or a further OPTIONS RESPONSE messages for version 
negotiation, it MUST ignore the messages and keep in the ACTIVE state. 


When in the ACTIVE state, the CP delegates the sending and the processing of the CLUE messages
the appropriate MP/MC sub-state machines. 

The TERMINATED state is reachable from each of the 
aforementioned states whenever the session is canceled or released. 
The IDLE state is reachable from each of the aforementioned 
states whenever the underlying channel is closed due to connection error.

[TODO: CLUE messages to cancel/release the session]
[TODO: check the diagram]
</t>

<t>
<figure>
<artwork>
<![CDATA[


                      +-------------+<------------------------------+---------+
         +----------->+     IDLE    +<--------------------------+   + TIMEOUT +  
         |            +------+------+<-----------+              |   +------+--+
         |                   |                   |              |          |
         |                   |                   |              |          |
     Connection            CLUE                  |              |          |   
       error              channel                |              |          |
         |           has been established        |              |          |  
         |                   |                   |              |          |
         |                   V               Receive error      |          |
         +------------+-------------+     (version mismatch,    |          |
   +------------------+ ESTABLISHED +      missing elements,…)  |       time out   
   |                  +------+------+            |              |          |
   |                         |                   |          Connection     | 
   |                         |                   |             error       |
   |                  Send/Receive OPTIONS       |              |          |
   |                         |                   |              |          |
   |                         V                   |              |          |
   |                  +-------------+------------+              |          |
   |     +------------+ NEGOTIATING +---------------------------+          | 
   |     |            +------+------+---------------------------|----------+
   |     |                   |                                  |
   |     |                   |                                  |
   |     |             Receive/Send                        Connection 
   |     |            OPTIONS RESPONSE                       error
Session  |                   |                                  |
  ends   |                   V                                  |
   |     |            +-------------+---------------------------+
   |     |            |   ACTIVE    +<-------------------+
   |     |            |  +-------+  |           Receive OPTIONS/                                                 
   |     |            |  |SUBIDLE|  |             OPTIONS RESPONSE                             
   |   Session        |  |MC     |  +--------------------+                    
   |    ends          |  +-------+  |                      
   |     |            |  +-------+  +<-------------------+
   |     |            |  |SUBIDLE|  |       Send/Receive other CLUE messages                      
   |     |            |  |MP     |  |                    |
   |     |            |  +-------+  |                    |
   |     |            +------+------+--------------------+
   |     |                   |
   |     |                   | 
   |     |                Session
   |     |                  ends
   |     |                   |
   |     |                   V
   |     |            +-------------+
   |     +----------->+ TERMINATED  + 
   +----------------->+-------------+


]]>
</artwork>
</figure>
</t>

  
<section title="Media Consumer's state machine" anchor="sec-mc">
<t>
An MC in the WAIT FOR ADV state is waiting for an ADV coming from the MP.
If the timeout expires ("timeout"), the MC switches to the TIMEOUT state.</t>
<t>
In the TIMEOUT state, if the number of trials is below the retry threshold, 
the MC sends a READV message to the MP ("send RE-ADV"), switching back
to the WAIT FOR ADV. Otherwise, the MC moves to the TERMINATED state.
</t>
<t>
When the ADV has been received ("receive ADV"), the MC goes into the
ADV RECEIVED state. The ADV is then parsed.
If something goes wrong with the ADV (bad syntax, missing XML elements, etc.), 
the MC sends a NACK message (an ACK with an error response code) 
to the MP specifying the encountered problem via
a proper reason phrase. In this way, the MC
switches back to the WAIT FOR ADV state, waiting for a new copy of the ADV.
If the ADV is successfully processed, the MC issues a successful ACK message to the MP 
and moves to the ADV ACKED state. 
When the SDP information arrives, from the ADV RECEIVED or the ADV ACKED state
the MC switches to the READY TO CONF state.
When the CONF request is ready, the MC sends it and moves to the TRYING state.
If the ADV has not been already sent, the MC can piggyback the ACK message within the CONF
request. 
</t>
<t> 
While in the TRYING state, the MC is waiting for a CONF RESPONSE message 
(to the issued CONF) 
from the MP. If the timeout expires ("timeout"), 
the MC moves to the TIMEOUT state and sends a READV in order to solicit 
a new ADV from the MP. 
If a CONF RESPONSE with an error code is received ("receive 4xx, 5xx not supported"),
then the MC moves back to the ADV RECEIVED state and produces a new CONF message 
to be sent to the MP.
If a successful CONF RESPONSE arrives ("receive 200 OK"), the MC gets into the 
CONF COMPLETED state.
state.
</t>
<t>
When the MC is in the CONF COMPLETED state, it means that the telepresence session
configuration has been set up according to the MC's preferences. 
Both the MP and the MC have agreed  on (and are aware of) the media streams 
to be exchanged within the call.
If the MC decides to change something in the call settings,
it issues a new CONF ("send CONF") and moves back to the TRYING state.
If a new ADV arrives from the MP ("receive ADV"), it means that something has
changed on the MP's side. The MC then moves to the ADV RECEIVED state and prepares
a new CONF taking into account the received updates.
When the underlying channel is closed, the MC moves into the TERMINATED state. 
</t>
<t>
The TERMINATED state is reachable from each of the aforementioned states 
whenever the underlying channel is closed. 
The corresponding transitions have not been reported for the sake of simplicity.
This termination condition is a temporary solution.
</t>
<t>
<figure>
 <artwork>
  <![CDATA[

                                                                      +-----+
                     +---------------+-------------timeout------>+----+--+  |
                     | WAIT FOR ADV  |<----+                     |TIMEOUT|  |
                     +---------------+<----+--------send---------+-------+  |
                                |          |     RE-ADV(refresh)      ^     |
                                |          |                          |     |
                                |          |                          |     |
                             receive     send                         |     |
                               ADV       NACK                         |     |
           +---receive-------+  |       (missing elements,            |     |
           |   error RESP    |  |        invalid area,...)            |     |
           |                 v  v          |                          |     |
           +----------------+---------+----+      +--------+          |     |
          +---------------->|  ADV    |---send--->|  ADV   |      timeout   |
          |                 | RECEIVED|   ACK     | ACKED  |          |     |
          |     +---------->|         |           |        |          |     |
          |    recv  +----->+-----+---+<--recv----+----+---+          |     |
          |   error  |            |       ADV          |              |     |
          |    CONF  |            |                    |              |     |
          |     |    |         SDP info            SDP info           |     |
          |     |    |         received             received          |     |
          |     |    |            |     +--------+     |              |     +
          +     |    +            +---->|READY TO|<----+              +     |
          |     |    |                  | CONF   |                    |     |
          |     +    |            +-----+--------+-----+              +     |
          |     |    |            |                    +              +     |
          |     |    +            |                    |              +     +
          +     +    |            +                    |              |     |
      receive   |    |           send              send|              |     |
        ADV     |    |         CONF+ACK            CONF|              |     |
          |     |    |            |                    |              |     |
          |     |  receive        v                    |              |     |
          |     |  ADV         +-----------+<----------+              |     |
          |     |    |         |           |+-------------------------+     |
          |     +----|--------+|  TRYING   |                                |
          +----------|---------|           |                                |
                 +---|---------+-----------+                                |
                 |   |          |          ^                                |
                 |   |          |          |                                |
                 |   |          |          |                                |
          receive|   |         receive    send                          retry
          error RESP,|          200 OK    CONF                        expires
          retry  |   |          |          |                                |
          expired|   |          |          |                                |
                 |   |          |          |                                |
                 |   |          v          |                                |
                 |   |       +---------+   |                                |
                 |   +-------| CONF    |   |                                |
                 |           |COMPLETED|---+                                |
                 |           +---------+                                    |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |            connection                                    |
                 |             closed                                       |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |              v                                           |
                 |            +----------+<---------------------------------+
                 +----------->+TERMINATED|
                              +----------+                             ]]>
   </artwork>
  </figure>

    </t>
  </section>
  
  <section title="Media Provider's state machine" anchor="sec-mp">
<t>
In the PREPARING ADV state, the MP is preparing the ADV message reflecting the actual
telepresence capabilities.
After the ADV has been sent, the MP moves to the WAIT FOR ACK state.
If the ACK arrives, the MP moves to the WAIT FOR CONF state.
If  a NACK arrives, it goes back to the PREPARING ADV state.
</t>
<t>
When in the WAIT FOR ACK state, if a CONF or a CONF+ACK arrives, the MP
switch to the CONF RECEIVED state directly.
</t>
<t>
When in the WAIT FOR CONF state, the MP is listening to the channel for a CONF 
coming from the MC. 
If a RE-ADV is received, the MP goes back to the IDLE state and issues an ADV
again.
If telepresence settings change in the meanwhile, 
it moves back to the PREPARING ADV state and prepares a new ADV to be sent 
to the  MC.
If a CONF arrives, the MP switches to the CONF RECEIVED state.
If nothing happens and the timeout expires, than the MC falls into
the TIMEOUT state.  
</t>
<t>
In the TIMEOUT state, if the number of trials
does not exceed the retry threshold, 
the MC comes back to the PREPARING ADV state for sending a new ADV.
Otherwise, it goes to the TERMINATED state. 
</t>
<t>
The MP in the CONF RECEIVED state is processing the received CONF in order to
produce a CONF RESPONSE message. 
If the MP is fine with the MC's configuration, then it sends back a 200 OK
successful CONF RESPONSE and moves to the IN CALL state.
If there are errors duting CONF processing, then the MC returns a CONF RESPONSE
carrying an error response code.
Finally, if there are changes in the telepresence settings, it goes back to 
the PREPARING ADV state to issue an updated ADV.
</t>
<t>
When in the CONF COMPLETED state, the MP has successfully configured 
the telepresence 
session according to the MC's specifications. 
If a new CONF arrives, it switches to the CONF RECEIVED state to analyze the
new request.
If a RE-ADV arrives, or some modifications are applied to the telepresence
options, then it moves to the PREPARE-ADV state to issue the ADV.
When the channel is terminated, the MP falls into the TERMINATED state. 
</t>
<t>
The TERMINATED state is reachable from each of the aforementioned states 
whenever the underlying channel is closed. 
The corresponding transitions have not been reported for the sake of simplicity.
This termination condition is a temporary solution.
</t>
<t>
<figure>
 <artwork>
  <![CDATA[


                    +-----------+
                    |           |
                    | PREPARING |
 +----------------->|   ADV     |<--------------------------+
 |   +------------->|           |<-----------retry----------+---------+
 |   |       +----->|           |<--+         not           |         |
 |   |       |      +-----------+   |        expired        |         |
 |   |       |            |         |                       |         |
 |   |  change          send       receive                  |        ++------+
 |   |  telepresence     ADV        NACK                    |        |TIMEOUT|
 |   |  settings          |         |                       |        ++--+---+
 |   |       |            |         |                       |         ^  |
 |   |       |            v         |                       |         |  |
 |   |       |    +-------------+---+                       |         |  |
 |   |       +----+  WAIT FOR   +------------timeout--------+---------+  |
 |   |         +--+     ACK     |                           |            |
 change        |  +-------+-----+                           |            |
 telepresence  |          |                                 |            |
 settings      |        recv                                |            +
 +   +         |        ACK                                 +            |
 |   |         |          |                                 |            |
 |   |         |          v                                 |            |
 |   |         |     +-----------+                          |            |
 |   |      recv     | WAIT FOR  |                          |            |
 |   |         |     |   CONF    |<-+                       |            |
 |   |    CONF+ACK   +----+------+  |                       |            |
 |   |         |          |         +                       |            |
 +   |         |        receive     CONF error,             +            |
 |   +         |         CONF       retry not expired,      |            +
 |   |         |          |         send error RESP         |            |
 |   |         |          |         |                       |            |
 |   |         |          |         |                       |            |
 |   |         |          v         |                       |            |
 |   |         +--->+-----------+---+                       |            |
 +---+-------------+|   CONF    |                           |            |
     |       +----->| RECEIVED  |----CONF error,            |            |
     |       |      +-----+-----+    retry expired          |            |
     |       |            |          +                      |            |
     |       |            |          |                      |            |
     |       |            |          |                      |            |
 receive   receive      send         |                      |            |
 RE-ADV     CONF       200 OK        |                      |       retry|
     |       |            |          |                      |      expired
     |       |            |          |                      |            |
     |       |            |          |                      |            |
     |       |            v          |                      |            |
     |       |       +----------+    |   change             |            |
     |       +-------|  CONF    |----|---telepresence-------+            |
     +---------------| COMPLETED|    |   settings                        |
                     +----------+    |                                   |
                          |          |                                   |
                          |          |                                   |
                          |          |                                   |
                       connection    |                                   |
                        closed       |                                   |
                          |          |                                   |
                          |          |                                   |
                          v          |                                   +
                 +----------------+<-+                                   |
                 |   TERMINATED   |<-------------------------------------+
                 |                |
                 +----------------+
                 
               ]]>
   </artwork>
  </figure>


</t>
  </section>
</section>

<section title="Versioning" 
anchor="sec-versioning">
<t>
CLUE protocol messages are XML messages compliant to the CLUE protocol XML 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 
the XML schema of the CLUE protocol.
If the compliance is not verified, the message cannot be processed further.
</t>
<t>
Obviously, client and server can not communicate if they do not share exactly 
the same XML schema.
Such a schema is the one included in the yet to come RFC,  
and associated with the CLUE URN "urn:ietf:params:xml:ns:clue-message".
If all CLUE-enabled devices use that schema 
there will be no interoperability problems due to schema issues.
</t>
<t>The version of the XML schema contained in the standard document deriving
from this draft will be 1.0. The version usage is similar in philosophy to XMPP 
(RFC6120). A version number has major and minor components, each a non-negative integer.
Major version changes denote non-interoperable changes. 
Minor version changes denote schema changes that are backward compatible 
by ignoring unknown XML elements, or other backward compatible changes.
</t><t>
The minor versions of the XML schema MUST be backward compatible, 
not only in terms of schema but also semantically and procedurally as well. 
This means that they should define further features and functionality besides 
those defined in the previous versions, in an incremental way, without impacting 
the basic rules defined in the previous version of the schema.
In this way, if a MP is able to speak, e.g., version 1.5 of the protocol while the 
MC only understands version 1.4, the MP should have no problem in reverting the dialogue to version 1.4
without exploiting 1.5 features and functionality.
</t>
<t>
It is expected that, before the CLUE protocol XML schema reaches a steady state,  
prototypes developed by different organizations will conduct interoperability testing.
In that case, in order to interoperate, they have to be compliant to the 
current version of the XML schema, i.e., the one copied in the most up-to-date 
version of the draft defining the CLUE protocol.
The versions of the non-standard XML schema will be numbered as 0.01, 0.02, and so on. 
During the standard development phase, the versions of the XML schema will probably not be 
backward compatible so it is left to prototype implementers the responsibility of keeping their products
up to date.
</t>
<!-- 
<t>
Even though strongly discouraged, if a future version of the protocol 
is designed which breaks the backward compatibility constraint, this aspect MUST
be explicitly advertised in the corresponding new RFC document. In such a case, it would 
be up to developers to update their systems accordingly.
</t>
 -->
</section>

<section title="Extensions and options" 
anchor="sec-ext">
<t>
Although the standard version of the CLUE protocol XML schema will be designed 
to thoroughly cope with the requirements emerging from the application domain,
new needs might arise and extensions can be designed.
Extensions specify information and behaviors that are not described in a certain version of the protocol.
They can relate to:
</t>
<t>
<list>
<t>
    the information carried in the existing messages 
    (for example, we may want to add more fields within an existing message);
</t>
<t>
    the meaning of the messages. 
    This is the case if there is no proper message for a certain task, 
    so a brand new CLUE message needs to be defined.
</t>
</list>
</t>
<t>
As to the first type of extensions, it is possible to distinguish between
protocol specific- and data model information.
Indeed, CLUE messages are envelopes carrying both:
</t>
<t>
<list>
<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>
When new protocol-specific information is needed somewhere in the protocol 
messages, it can be added in place of the <any> elements and 
<anyAttribute> elements envisioned by the protocol schema.
The policy currently defined in the protocol schema for handling 
<any> and <anyAttribute> elements is:
</t>
<t>
<list>
<t> elementFormDefault="qualified"</t>
<t> attributeFormDefault="unqualified"</t>
</list>
</t>
<t>    
In that case, the new information must be qualified by namespaces 
other than "urn:ietf:params:xml:ns:clue-message" (the protocol URN) 
and "urn:ietf:params:xml:ns:clue-info" (the data model URN). 
Elements or attributes from unknown namespaces MUST be ignored.  
</t>
<t>
The other matter concerns data model information.
Data model information is defined by the XML schema associated 
with the URN "urn:ietf:params:xml:ns:clue-info".
Also for the XML elements defined in such a schema there are extensibility issues.
Those issues are overcome by using <any> and <anyAttribute> 
placeholders.
Similarly to what said before, new information within data model elements can be added in place
of <any> and <anyAttribute> schema elements, as long as they are properly namespace qualified.
</t>
<t>On the other hand (second type of extensions), "extra" CLUE protocol messages, 
i.e., messages not envisioned in the last standard version of the schema, can be needed.
In that case,  the messages and the associated behavior should be defined in 
external documents that both the communication parties must be aware of.
</t>
<t>
Both the types of extensions, i.e., the information and the protocol extensions, can
be characterized by:
</t>
<t>
<list>
<t>a name;</t>
<t>an external XML Schema defining the XML information and/or the XML messages representing the extension;</t>
<t>the standard version of the protocol the extension refers to.</t>
</list>
</t>
<t>
For that reason, the extensions can be represented by means of the <option> element as defined below,
which is carried within the OPTIONS and OPTIONS RESPONSE messages to represent the extensions supported 
by the CI and by the CR.
</t>
<t>
<figure>
<artwork>
<![CDATA[
<!-- OPTION TYPE -->
<xs:complexType name="optionType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="schemaRef" type="xs:anyURI" minOccurs="0"/>
<xs:element name="version" type="xs:string" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
]]>
</artwork>
</figure>
</t>

<!-- 
<t>
A data model extension is a set of XML definitions related to the description of
telepresence capabilities that is contained in an XML schema and which
is different from the normative CLUE data model schema.
Such XML definitions can represent further entities not envisioned in the CLUE
framework at the time of writing of the data model draft. 
The entities defined in a data model extension can appear in place of the 
<any> and <anyAttribute> elements included in the data model document.
A data model extension is then represented by a reference to the defining XML schema.
The schema reference is represented by a URI defining the schema location. [TBC]   
If a data model extension is supported by both a CR and a CI, it means that
both are aware of the associated XML schema and of the meanings of the 
elements defined within it.
</t>
<t>
A protocol extension is a set of XML definitions related to the CLUE protocol 
that is contained in an XML schema which
is different from the normative CLUE protocol schema.
Such definitions can represent: (i) information to be carried within the 
existing messages in place of <any> and <anyAttribute> elements;
(ii) new messages designed for the CLUE telepresence control. 
Such XML definitions refer to information not envisioned during the CLUE protocol
design phase.
A protocol extension is then represented by a reference to the defining XML schema.  
If a protocol extension is supported by both a CI and a CR, it means that
both are aware of the associated XML schema and of the meanings of the 
elements defined within it.
</t>
 -->

</section>
   
   
<section title="XML Schema" anchor="sec-schema">
<t>
In this section, the XML schema defining the CLUE messages is provided.
</t>
<t>
<figure>
 <artwork>
  <![CDATA[
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema
version="0.02"
targetNamespace="urn:ietf:params:xml:ns:clue-message"
xmlns:tns="urn:ietf:params:xml:ns:clue-message"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dm="urn:ietf:params:xml:ns:clue-info"
xmlns="urn:ietf:params:xml:ns:clue-message"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<!-- Import data model schema -->
<xs:import namespace="urn:ietf:params:xml:ns:clue-info"
schemaLocation="data-model-schema-05.xsd"/>

<!-- ELEMENT DEFINITIONS -->
<xs:element name="options" type="optionsMessageType"/>
<xs:element name="optionsResponse" type="optionsResponseMessageType"/>
<!--<xs:element name="optionsAck" type="optionsAcknowledgementMessageType"/>-->
<xs:element name="advertisement" type="advertisementMessageType"/>
<xs:element name="ack" type="advAcknowledgementMessageType"/>
<xs:element name="configure" type="configureMessageType"/>
<xs:element name="configureResponse" type="configureResponseMessageType"/>
<xs:element name="readv" type="readvMessageType"/> 
<xs:element name="readvResponse" type="readvResponseMessageType"/> 

<!-- CLUE MESSAGE TYPE -->
<xs:complexType name="clueMessageType" abstract="true">
<xs:sequence>
<xs:element name="clueId" type="xs:string"/>
<xs:element name="sequenceNr" type="xs:unsignedInt"/>
</xs:sequence>
<xs:attribute name="protocol" type="xs:string" fixed="CLUE" use="required"/>
<xs:attribute name="v" type="xs:string" use="required"/>
</xs:complexType>

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

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

<!-- OPTIONS LIST TYPE -->
<xs:complexType name="optionsListType">
<xs:sequence>
<xs:element name="option" type="optionType" minOccurs="1" 
 maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
 
<!-- OPTION TYPE -->
<xs:complexType name="optionType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="schemaRef" type="xs:anyURI" minOccurs="0"/>
<xs:element name="version" type="xs:string" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>

<!-- CLUE OPTIONS RESPONSE (2 WAY) -->
<xs:complexType name="optionsResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:string"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="mediaProvider" type="xs:boolean" minOccurs="0"/>
<xs:element name="mediaConsumer" type="xs:boolean" minOccurs="0"/>
<xs:element name="version" type="xs:string" minOccurs="0"/>
<xs:element name="commonOptions" type="optionsListType" minOccurs="0"/> 
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE OPTIONS RESPONSE (3 WAYS) -->
<!-- <xs:complexType name="optionsResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="mediaProvider" type="xs:boolean"/>
<xs:element name="mediaConsumer" type="xs:boolean"/>
<xs:element name="supportedVersions" type="versionsListType" 
 minOccurs="0"/>
<xs:element name="supportedOptions" type="optionsListType" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
 -->
 
<!-- CLUE OPTIONS ACK (3 WAYS)-->
<!-- 
<xs:complexType name="optionsAckMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:string"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="version" type="xs:string" minOccurs="0"
 maxOccurs="1"/>
<xs:element name="commonOptions" type="supportedOptionsType" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
 -->

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

<!-- ADV ACK MESSAGE TYPE -->
<xs:complexType name="advAcknowledgementMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:short"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="advSequenceNr" type="xs:unsignedInt"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

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

<!-- CONFIGURE RESPONSE MESSAGE TYPE -->
<xs:complexType name="configureResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:short"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="confSequenceNr" type="xs:integer"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE READV MESSAGE TYPE -->
<xs:complexType name="readvMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="lastReceivedAdv" type="xs:short"/> 
<xs:any namespace="##other" processContents="lax" minOccurs="0"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE READV RESPONSE MESSAGE TYPE -->
<xs:complexType name="readvResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<xs:element name="responseCode" type="xs:short"/>
<xs:element name="reasonString" type="xs:string"/>
<xs:element name="readvSequenceNr" type="xs:string" minOccurs="0"/>
<xs:element name="mediaCaptures" type="dm:mediaCapturesType" minOccurs="0"/>                 
<xs:element name="encodingGroups" type="dm:encodingGroupsType" minOccurs="0"/>
<xs:element name="captureScenes" type="dm:captureScenesType" minOccurs="0"/>
<xs:element name="simultaneousSets" type="dm:simultaneousSetsType" minOccurs="0"/>                
<xs:element name="globalCaptureEntries" type="dm:globalCaptureEntriesType" minOccurs="0"/>
<xs:element name="participants" type="dm:participantsType" minOccurs="0"/>                                      
<xs:any namespace="##other"
 processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

</xs:schema>
]]>
</artwork>
</figure>
</t>
</section>

<!-- <section title="Examples"><t>TBD</t></section>  -->
<!-- <section title="Handling channel errors"><t>TBD</t></section>  -->

<section title="Diff with the -03 version">
<t>
<list style="numbers">
<t>The XML Schema has been deeply revised and completed.</t>
<t>The descriptions of the CLUE messages have been added.</t>
<t>The distinction between major version numbers and minor version numbers has been cut and pasted from 
<xref target="I-D.kyzivat-clue-signaling"/>.</t>
<t>Besides the two way one, a three way mechanism for the options negotiation has been proposed and provided to foster discussion.</t>
</list>
</t>
</section>

<section title="Diff with the -02 version">
<t>
<list style="numbers">
<t>"Terminology" section added.</t>
<t>
Introduced the concept of "CLUE Participant" - an Endpoint or a MCU able to 
use the CLUE protocol within a telepresence session. A CLUE Participant can 
act as a Media Provider and/or as a Media Consumer.
</t>
<t>
INtroduced the ACK/NACK mechanism for the ADVERTISEMENT.
</t>
<t>MP and MC state machines have been updated. 
The CP state machine has been added.</t>
</list>
</t>
</section>

<section title="Acknowledgments">
<t>
The authors thank all the CLUErs for their precious feedbacks and support, 
in particular Paul Kyzivat, Christian Groves and Scarlett Liuyan. 
</t>
</section>

  
</middle>
<back>
 
  <references title="Informative References">
  
    <!-- clue framework -->
    <?rfc include="reference.I-D.ietf-clue-framework"?> 
	
	<!-- clue signaling -->
	<?rfc include="reference.I-D.kyzivat-clue-signaling"?>
	
	<!-- clue data channel -->
	<?rfc include="reference.I-D.ietf-clue-datachannel"?>
	
	<!-- clue requirements -->
	<?rfc include="reference.I-D.ietf-clue-telepresence-requirements"?>
	
	<!-- clue data model -->
	<?rfc include="reference.I-D.ietf-clue-data-model-schema"?>
	
	<!-- RFC6503 -->
	<?rfc include="reference.RFC.6503"?>
		
	<!-- RFC6502 -->
	<?rfc include="reference.RFC.6502"?>
	
		<!-- RFC5261 -->
	<?rfc include="reference.RFC.5261"?>
	
	<!-- RFC4353, sip conferencing framework -->
	<?rfc include="reference.RFC.4353"?>
	
	<!-- RFC5117, rtp topologies -->
	<?rfc include="reference.RFC.5117"?>

	<!-- RFC3550, rtp -->
	<?rfc include="reference.RFC.3550"?>

		
  </references>
  
  
  
  
</back>

</rfc>

PAFTECH AB 2003-20262026-04-24 04:07:03