< draft-ietf-clue-protocol-17.txt   draft-ietf-clue-protocol-18.txt >
CLUE Working Group R. Presta CLUE Working Group R. Presta
Internet-Draft S. P. Romano Internet-Draft S. P. Romano
Intended status: Standards Track University of Napoli Intended status: Experimental University of Napoli
Expires: March 25, 2019 September 21, 2018 Expires: January 5, 2020 July 4, 2019
Protocol for Controlling Multiple Streams for Telepresence (CLUE) Protocol for Controlling Multiple Streams for Telepresence (CLUE)
draft-ietf-clue-protocol-17 draft-ietf-clue-protocol-18
Abstract Abstract
The CLUE protocol is an application protocol conceived for the The CLUE protocol is an application protocol conceived for the
description and negotiation of a telepresence session. The design of description and negotiation of a telepresence session. The design of
the CLUE protocol takes into account the requirements and the the CLUE protocol takes into account the requirements and the
framework defined within the IETF CLUE working group. A companion framework defined within the IETF CLUE working group. A companion
document delves into CLUE signaling details, as well as on the SIP/ document delves into CLUE signaling details, as well as on the SIP/
SDP session establishment phase. CLUE messages flow over the CLUE SDP session establishment phase. CLUE messages flow over the CLUE
data channel, based on reliable and ordered SCTP over DTLS transport. data channel, based on reliable and ordered SCTP over DTLS transport.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 25, 2019. This Internet-Draft will expire on January 5, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 32 skipping to change at page 2, line 32
5.6. configureResponse . . . . . . . . . . . . . . . . . . . . 15 5.6. configureResponse . . . . . . . . . . . . . . . . . . . . 15
5.7. Response codes and reason strings . . . . . . . . . . . . 16 5.7. Response codes and reason strings . . . . . . . . . . . . 16
6. Protocol state machines . . . . . . . . . . . . . . . . . . . 18 6. Protocol state machines . . . . . . . . . . . . . . . . . . . 18
6.1. Media Provider's state machine . . . . . . . . . . . . . 21 6.1. Media Provider's state machine . . . . . . . . . . . . . 21
6.2. Media Consumer's state machine . . . . . . . . . . . . . 22 6.2. Media Consumer's state machine . . . . . . . . . . . . . 22
7. Versioning . . . . . . . . . . . . . . . . . . . . . . . . . 25 7. Versioning . . . . . . . . . . . . . . . . . . . . . . . . . 25
8. Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 25 8. Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.1. Extension example . . . . . . . . . . . . . . . . . . . . 27 8.1. Extension example . . . . . . . . . . . . . . . . . . . . 27
9. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . 29 9. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . 29
10. Call flow example . . . . . . . . . . . . . . . . . . . . . . 34 10. Call flow example . . . . . . . . . . . . . . . . . . . . . . 34
10.1. CLUE message nr. 1: 'option' . . . . . . . . . . . . . . 37 10.1. CLUE message nr. 1: 'options' . . . . . . . . . . . . . 37
10.2. CLUE message nr. 2: 'optionResponse' . . . . . . . . . . 39 10.2. CLUE message nr. 2: 'optionResponse' . . . . . . . . . . 39
10.3. CLUE message nr. 3: 'advertisement' . . . . . . . . . . 39 10.3. CLUE message nr. 3: 'advertisement' . . . . . . . . . . 39
10.4. CLUE message nr. 4: 'configure + ack' . . . . . . . . . 47 10.4. CLUE message nr. 4: 'configure + ack' . . . . . . . . . 47
10.5. CLUE message nr. 5: 'confResponse' . . . . . . . . . . . 47 10.5. CLUE message nr. 5: 'confResponse' . . . . . . . . . . . 47
10.6. CLUE message nr. 6: 'advertisement' . . . . . . . . . . 48 10.6. CLUE message nr. 6: 'advertisement' . . . . . . . . . . 48
10.7. CLUE message nr. 7: 'ack' . . . . . . . . . . . . . . . 58 10.7. CLUE message nr. 7: 'ack' . . . . . . . . . . . . . . . 58
10.8. CLUE message nr. 8: 'configure' . . . . . . . . . . . . 58 10.8. CLUE message nr. 8: 'configure' . . . . . . . . . . . . 58
10.9. CLUE message nr. 9: 'confResponse' . . . . . . . . . . . 59 10.9. CLUE message nr. 9: 'confResponse' . . . . . . . . . . . 59
11. Security Considerations . . . . . . . . . . . . . . . . . . . 60 11. Security Considerations . . . . . . . . . . . . . . . . . . . 60
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 61 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 61
skipping to change at page 3, line 23 skipping to change at page 3, line 23
1. enabling a Media Provider (MP) to properly announce its current 1. enabling a Media Provider (MP) to properly announce its current
telepresence capabilities to a Media Consumer (MC) in terms of telepresence capabilities to a Media Consumer (MC) in terms of
available media captures, groups of encodings, simultaneity available media captures, groups of encodings, simultaneity
constraints and other information defined in constraints and other information defined in
[I-D.ietf-clue-framework]; [I-D.ietf-clue-framework];
2. enabling an MC to request the desired multimedia streams from the 2. enabling an MC to request the desired multimedia streams from the
offering MP. offering MP.
CLUE-capable endpoints are connected by means of the CLUE data CLUE-capable endpoints are connected by means of the CLUE data
channel, an SCTP over DTLS channel which is opened and established as channel, an SCTP over DTLS channel that is opened and established as
described in [I-D.ietf-clue-signaling] and described in [I-D.ietf-clue-signaling] and
[I-D.ietf-clue-datachannel]. CLUE protocol messages flowing over [I-D.ietf-clue-datachannel]. CLUE protocol messages flowing over
such a channel are detailed in this document, both syntactically and such a channel are detailed in this document, both syntactically and
semantically. semantically.
In Section 4 we provide a general overview of the CLUE protocol. In Section 4 we provide a general overview of the CLUE protocol.
CLUE protocol messages are detailed in Section 5. The CLUE Protocol CLUE protocol messages are detailed in Section 5. The CLUE Protocol
state machines are introduced in Section 6. Versioning and state machines are introduced in Section 6. Versioning and
extensions are discussed in Section 7 and Section 8, respectively. extensions are discussed in Section 7 and Section 8, respectively.
The XML schema defining the CLUE messages is reported in Section 9. The XML schema defining the CLUE messages is reported in Section 9.
skipping to change at page 3, line 48 skipping to change at page 3, line 48
[I-D.ietf-clue-framework] and in [RFC7262]. We briefly recall herein [I-D.ietf-clue-framework] and in [RFC7262]. We briefly recall herein
some of the main terms used in the document. The definition of "CLUE some of the main terms used in the document. The definition of "CLUE
Participant" herein proposed is not imported from any of the above Participant" herein proposed is not imported from any of the above
documents. documents.
Capture Encoding: A specific encoding of a Media Capture, to be sent Capture Encoding: A specific encoding of a Media Capture, to be sent
via RTP [RFC3550]. via RTP [RFC3550].
CLUE Participant (CP): An entity able to use the CLUE protocol CLUE Participant (CP): An entity able to use the CLUE protocol
within a telepresence session. It can be an endpoint or an MCU within a telepresence session. It can be an endpoint or an MCU
able to use the CLUE protocol. (Multipoint Control Unit) able to use the CLUE protocol.
CLUE-capable device: A device that supports the CLUE data channel CLUE-capable device: A device that supports the CLUE data channel
[I-D.ietf-clue-datachannel], the CLUE protocol and the principles [I-D.ietf-clue-datachannel], the CLUE protocol and the principles
of CLUE negotiation, and seeks CLUE-enabled calls. of CLUE negotiation, and seeks CLUE-enabled calls.
Endpoint: A CLUE-capable device which is the logical point of final Endpoint: A CLUE-capable device that is the logical point of final
termination through receiving, decoding and rendering, and/or termination through receiving, decoding and rendering, and/or
initiation through capturing, encoding, and sending of media initiation through 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
which source and sink media streams, and exactly one [RFC4353] that source and sink media streams, and exactly one [RFC4353]
Participant (which, in turn, includes exactly one SIP User Agent). Participant (which, in turn, includes exactly one [RFC3261] User
Endpoints can be anything from multiscreen/multicamera rooms to Agent). Endpoints can be anything from multiscreen/multicamera
handheld devices. rooms to handheld devices.
MCU: a CLUE-capable device that connects two or more endpoints Multipoint Control Unit (MCU): a CLUE-capable device that connects
together into one single multimedia conference [RFC5117]. An MCU two or more endpoints together into one single multimedia
includes an [RFC4353]-like Mixer, without the [RFC4353] conference [RFC7667]. An MCU includes an [RFC4353]-like Mixer,
requirement to send media to each participant. without the [RFC4353] requirement to send media to each
participant.
Media: Any data that, after suitable encoding, can be conveyed over Media: Any data that, after suitable encoding, can be conveyed over
RTP, including audio, video or timed text. RTP, including audio, video or timed text.
Media Capture: a source of Media, such as from one or more Capture Media Capture: a source of Media, such as from one or more Capture
Devices or constructed from other Media streams. Devices or constructed from other Media streams.
Media Consumer (MC): A CLUE Participant (i.e., an Endpoint or an Media Consumer (MC): A CLUE Participant (i.e., an Endpoint or an
MCU) able to receive Capture Encodings. MCU) able to receive Capture Encodings.
skipping to change at page 5, line 49 skipping to change at page 5, line 50
As soon as the channel is ready, the CLUE Participants must agree on As soon as the channel is ready, the CLUE Participants must agree on
the protocol version and extensions to be used within the the protocol version and extensions to be used within the
telepresence session. CLUE protocol version numbers are telepresence session. CLUE protocol version numbers are
characterized by a major version number (single digit) and a minor characterized by a major version number (single digit) and a minor
version number (single digit), both unsigned integers, separated by a version number (single digit), both unsigned integers, separated by a
dot. While minor version numbers denote backward compatible changes dot. While minor version numbers denote backward compatible changes
in the context of a given major version, different major version in the context of a given major version, different major version
numbers generally indicate a lack of interoperability between the numbers generally indicate a lack of interoperability between the
protocol implementations. In order to correctly establish a CLUE protocol implementations. In order to correctly establish a CLUE
dialogue, the involved CPs MUST have in common a major version number dialogue, the involved CPs must have in common a major version number
(see Section 7 for further details). The subset of the extensions (see Section 7 for further details). The subset of the extensions
that are allowed within the CLUE session is also determined in the that are allowed within the CLUE session is also determined in the
initiation phase, such subset being the one including only the initiation phase. It includes only the extensions that are supported
extensions that are supported by both parties. A mechanism for the by both parties. A mechanism for the negotiation of the CLUE
negotiation of the CLUE protocol version and extensions is part of protocol version and extensions is part of the initiation phase.
the initiation phase. According to such a solution, the CP which is According to such a solution, the CP that is the CLUE Channel
the CLUE Channel Initiator (CI) issues a proper CLUE message Initiator (CI) issues a proper CLUE message ('options') to the CP
('options') to the CP which is the Channel Receiver (CR) specifying that is the Channel Receiver (CR) specifying the supported version
the supported version and extensions. The CR then answers by and extensions. The CR then answers by selecting the subset of the
selecting the subset of the CI extensions that it is able to support CI extensions that it is able to support and determines the protocol
and determines the protocol version to be used. version to be used.
After the negotiation phase is completed, CLUE Participants describe After the negotiation phase is completed, CLUE Participants describe
and agree on the media flows to be exchanged. In many cases CPs will and agree on the media flows to be exchanged. In many cases CPs will
seek to both transmit and receive media. Hence in a call between two seek to both transmit and receive media. Hence in a call between two
CPs, A and B, there would be two separate dialogs, as follows: CPs, A and B, there would be two separate message exchange sequences,
as follows:
1. the one needed to describe and set up the media streams sent from 1. the one needed to describe and set up the media streams sent from
A to B, i.e., the dialogue between A's Media Provider side and A to B, i.e., the dialogue between A's Media Provider side and
B's Media Consumer side B's Media Consumer side
2. the one needed to describe and set up the media streams sent from 2. the one needed to describe and set up the media streams sent from
B to A, i.e., the dialogue between B's Media Provider side and B to A, i.e., the dialogue between B's Media Provider side and
A's Media Consumer side A's Media Consumer side
CLUE messages for the media session description and negotiation are CLUE messages for the media session description and negotiation are
skipping to change at page 7, line 35 skipping to change at page 7, line 35
o advertisement o advertisement
o ack o ack
o configure o configure
o configureResponse o configureResponse
While the 'options' and 'optionsResponse' messages are exchanged in While the 'options' and 'optionsResponse' messages are exchanged in
the initiation phase between the CPs, the other messages are involved the initiation phase between the CPs, the other messages are involved
in MP-MC dialogues. in MP-MC dialogues. Please note that the word "dialog" in this
document is not related to SIP's usage of the same term. It refers
to message exchange sequences between a CLUE Media Provider and a
Clue Media Consumer.
Each CLUE message inherits a basic structure depicted in the Each CLUE message inherits a basic structure depicted in the
following excerpt (Figure 1): following excerpt (Figure 1):
<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"
skipping to change at page 8, line 31 skipping to change at page 8, line 31
Figure 1: Structure of a CLUE message Figure 1: Structure of a CLUE message
The information contained in each CLUE message is: The information contained in each CLUE message is:
o clueId: an optional XML element containing the identifier (in the o clueId: an optional XML element containing the identifier (in the
form of a generic string) of the CP within the telepresence form of a generic string) of the CP within the telepresence
system; system;
o sequenceNr: an XML element containing the local message sequence o sequenceNr: an XML element containing the local message sequence
number. The sender must increment the sequence numbers by one for number. The sender MUST increment the sequence numbers by one for
each new message sent, the receiver must remember the most recent each new message sent, the receiver MUST remember the most recent
sequence number received and send back a 402 error if it receives sequence number received and send back a 402 error if it receives
a message with an unexpected sequence number (e.g., sequence a message with an unexpected sequence number (e.g., sequence
number gap, repeated sequence number, sequence number too small). number gap, repeated sequence number, sequence number too small).
The initial sequence number can be chosen randomly by each party; The initial sequence number can be chosen randomly by each party;
o protocol: a mandatory attribute set to "CLUE", identifying the o protocol: a mandatory attribute set to "CLUE", identifying the
procotol the messages refer to; procotol the messages refer to;
o v: a mandatory attribute carrying the version of the protocol. o v: a mandatory attribute carrying the version of the protocol.
The content of the "v" attribute is composed by the major version The content of the "v" attribute is composed by the major version
skipping to change at page 9, line 29 skipping to change at page 9, line 29
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
Figure 2: Structure of CLUE response messages Figure 2: Structure of CLUE response messages
The elements <responseCode> and <reasonString> get populated as The elements <responseCode> and <reasonString> get populated as
detailed in Section 5.7 detailed in Section 5.7
5.1. options 5.1. options
The 'options' message is sent by the CLUE Participant which is the The 'options' message is sent by the CLUE Participant that is the
Channel Initiator to the CLUE Participant which is the Channel Channel Initiator to the CLUE Participant that is the Channel
Receiver as soon as the CLUE data channel is ready. Besides the Receiver as soon as the CLUE data channel is ready. Besides the
information envisioned in the basic structure, it specifies: information envisioned in the basic structure, it specifies:
o <mediaProvider>: a mandatory boolean field set to "true" if the CP o <mediaProvider>: a mandatory boolean field set to "true" if the CP
is able to act as a MP is able to act as a MP
o <mediaConsumer>: a mandatory boolean field set to "true" if the CP o <mediaConsumer>: a mandatory boolean field set to "true" if the CP
is able to act as a MC is able to act as a MC
o <supportedVersions>: the list of the supported versions o <supportedVersions>: the list of the supported versions
skipping to change at page 11, line 28 skipping to change at page 11, line 28
<supportedVersions> tag in the 'options' message, it means the CI <supportedVersions> tag in the 'options' message, it means the CI
supports only major version 3 with all the minor versions comprised supports only major version 3 with all the minor versions comprised
between 3.0 and 3.4, with version 3.4 included. If a between 3.0 and 3.4, with version 3.4 included. If a
<supportedVersion> is provided, at least one <version> tag MUST be <supportedVersion> is provided, at least one <version> tag MUST be
included. In this case, the "v" attribute SHOULD be set to the included. In this case, the "v" attribute SHOULD be set to the
largest minor version of the smallest major version advertised in the largest minor version of the smallest major version advertised in the
<supportedVersions> list. Indeed, the intention behind the "v" <supportedVersions> list. Indeed, the intention behind the "v"
attribute is that some implementation that receives a version number attribute is that some implementation that receives a version number
in the "v" field with a major number higher than it understands is in the "v" field with a major number higher than it understands is
supposed to close the connection, since it runs a risk of supposed to close the connection, since it runs a risk of
misinterpreting the contents of messages. The minor version is misinterpreting the contents of messages. The minor version is less
obviously less useful in this context, since minor versions are useful in this context, since minor versions are defined to be both
defined to be both backwards and forwards compatible, but it is more backwards and forwards compatible, but it is more useful to know the
useful to know the highest minor version supported than some random highest minor version supported than some random minor version, as it
minor version, as it indicates the full feature set that is indicates the full feature set that is supported. The reason why it
supported. The reason why it is less useful is that the value can in is less useful is that the value can in any case be parsed out of the
any case be parsed out of the <version> list. <version> list.
The <supportedExtensions> element specifies the list of extensions The <supportedExtensions> element specifies the list of extensions
supported by the CI. If there is no <supportedExtensions> in the supported by the CI. If there is no <supportedExtensions> in the
'options' message, the CI does not support anything other than what 'options' message, the CI does not support anything other than what
is envisioned in the versions it supports. For each extension, an is envisioned in the versions it supports. For each extension, an
<extension> element is provided. An extension is characterized by a <extension> element is provided. An extension is characterized by a
name, an XML schema of reference where the extension is defined, and name, an XML schema of reference where the extension is defined, and
the version of the protocol which the extension refers to. the version of the protocol which the extension refers to.
5.2. optionsResponse 5.2. optionsResponse
The 'optionsResponse' (Figure 4) is sent by a CR to a CI as a reply The 'optionsResponse' (Figure 4) is sent by a CR to a CI as a reply
to the 'options' message. The 'optionsResponse' contains a mandatory to the 'options' message. The 'optionsResponse' contains a mandatory
response code and a reason string indicating the processing result of response code and a reason string indicating the processing result of
the 'options' message. If the responseCode is between 200 and 299 the 'options' message. If the responseCode is between 200 and 299
inclusive, the response MUST also include <mediaProvider>, inclusive, the response MUST also include <mediaProvider>,
<mediaConsumer>, <version> and <commonExtensions> elements; it MAY <mediaConsumer>, <version> and <commonExtensions> elements; it MAY
include them for any other response code. <mediaProvider> and include them for any other response code. <mediaProvider> and
<mediaConsumer> elements are associated with the supported roles (in <mediaConsumer> elements (which are of a boolean nature) are
terms of, respectively MP and MC), similarly to what the CI does in associated with the supported roles (in terms of, respectively MP and
the 'options' message. The <version> field indicates the highest MC), similarly to what the CI does in the 'options' message. The
commonly supported version number. The content of the <version> <version> field indicates the highest commonly supported version
element MUST be a string made of the major version number followed by number. The content of the <version> element MUST be a string made
a dot and then by the minor version number (e.g., 1.3 or 2.4). of the major version number followed by a dot and then by the minor
Finally, the commonly supported extensions are copied in the version number (e.g., 1.3 or 2.4). Finally, the commonly supported
<commonExtensions> field. extensions are copied in the <commonExtensions> field.
<!-- 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"/>
skipping to change at page 12, line 44 skipping to change at page 12, line 44
Figure 4: Structure of CLUE 'optionsResponse' message Figure 4: Structure of CLUE 'optionsResponse' message
Upon reception of the 'optionsResponse' the version to be used is the Upon reception of the 'optionsResponse' the version to be used is the
one provided in the <version> tag of the message. The following CLUE one provided in the <version> tag of the message. The following CLUE
messages MUST use such a version number in the "v" attribute. The messages MUST use such a version number in the "v" attribute. The
allowed extensions in the CLUE dialogue are those indicated in the allowed extensions in the CLUE dialogue are those indicated in the
<commonExtensions> of the 'optionsResponse' message. <commonExtensions> of the 'optionsResponse' message.
5.3. advertisement 5.3. advertisement
The 'advertisement' message is used by the MP to advertise the The 'advertisement' message is used by each MP to advertise the
available media captures and related information to the MC. The MP available media captures and related information to the corresponding
sends an 'advertisement' to the MC as soon as it is ready after the MC. The MP sends an 'advertisement' to the MC as soon as it is ready
successful completion of the initiation phase, i.e., as soon as the after the successful completion of the initiation phase, i.e., as
version and the extensions of the CLUE protocol are agreed between soon as the version and the extensions of the CLUE protocol are
the CPs. During a single CLUE session, an MP may send new agreed between the CPs. During a single CLUE session, an MP may send
'advertisement' messages to replace the previous advertisement, if, new 'advertisement' messages to replace the previous advertisement,
for instance, its CLUE telepresence media capabilities change mid- if, for instance, its CLUE telepresence media capabilities change
call. A new 'advertisement' completely replaces the previous mid-call. A new 'advertisement' completely replaces the previous
'advertisement'. 'advertisement'.
The 'advertisement' structure is defined in the schema excerpt below The 'advertisement' structure is defined in the schema excerpt below
(Figure 5). The 'advertisement' contains elements compliant with the (Figure 5). The 'advertisement' contains elements compliant with the
CLUE data model that characterize the MP's telepresence offer. CLUE data model that characterize the MP's telepresence offer.
Namely, such elements are: the list of the media captures Namely, such elements are: the list of the media captures
(<mediaCaptures>), of the encoding groups (<encodingGroups>), of the (<mediaCaptures>), of the encoding groups (<encodingGroups>), of the
capture scenes (<captureScenes>), of the simultaneous sets capture scenes (<captureScenes>), of the simultaneous sets
(<simultaneousSets>), of the global views (<globalViews>), and of the (<simultaneousSets>), of the global views (<globalViews>), and of the
represented participants (<people>). Each of them is fully described represented participants (<people>). Each of them is fully described
skipping to change at page 14, line 4 skipping to change at page 14, line 4
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
Figure 5: Structure of CLUE 'advertisement' message Figure 5: Structure of CLUE 'advertisement' message
5.4. ack 5.4. ack
The 'ack' message is sent by a MC to a MP to acknowledge an The 'ack' message is sent by a MC to a MP to acknowledge an
'advertisement' message. As it can be seen from the message schema 'advertisement' message. As it can be seen from the message schema
provided in the following excerpt (Figure 6), the 'ack' contains a provided in the following excerpt (Figure 6), the 'ack' contains a
response code and a reason string for describing the processing response code and may contain a reason string for describing the
result of the 'advertisement'. The <advSequenceNr> carries the processing result of the 'advertisement'. The <advSequenceNr>
sequence number of 'advertisement' message the 'ack' refers to. carries the sequence number of 'advertisement' message the 'ack'
refers to.
<!-- '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>
Figure 6: Structure of CLUE 'ack' message Figure 6: Structure of CLUE 'ack' message
5.5. configure 5.5. configure
The 'configure' message is sent from a MC to a MP to list the The '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 advertised captures the MC wants to receive. The MC MUST send a
'configure' after the reception of an 'advertisement' or each time it 'configure' after the reception of an 'advertisement', as well as
wants to request other captures that have been previously advertised each time it wants to request other captures that have been
by the MP. The content of the 'configure' message is shown below previously advertised by the MP. The content of the 'configure'
(Figure 7). message is shown below (Figure 7).
<!-- 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"/>
skipping to change at page 15, line 32 skipping to change at page 15, line 32
</xs:complexType> </xs:complexType>
Figure 7: Structure of CLUE 'configure' message Figure 7: Structure of CLUE 'configure' message
The <advSequenceNr> element contains the sequence number of the The <advSequenceNr> element contains the sequence number of the
'advertisement' message the 'configure' refers to. 'advertisement' message the 'configure' refers to.
The optional <ack> element, when present, contains a success response The optional <ack> element, when present, contains a success response
code, as defined in Section 5.7. It indicates that the 'configure' code, as defined in Section 5.7. It indicates that the 'configure'
message also acknowledges with success the referred advertisement message also acknowledges with success the referred advertisement
('configure' + 'ack' message), by applying in that way a piggybacking ('configure' + 'ack' message). The <ack> element MUST NOT be present
mechanism for simultaneously acknowledging and replying to the if an 'ack' message (associated with the advertisement carrying that
'advertisement' message. The <ack> element MUST NOT be present if an specific sequence number) has been already sent back to the MP.
'ack' message has been already sent back to the MP.
The most important content of the 'configure' message is the list of The most important content of the 'configure' message is the list of
the capture encodings provided in the <captureEncodings> element (see the capture encodings provided in the <captureEncodings> element (see
[I-D.ietf-clue-data-model-schema] for the definition of [I-D.ietf-clue-data-model-schema] for the definition of
<captureEncodings>). Such an element contains a sequence of capture <captureEncodings>). Such an element contains a sequence of capture
encodings, representing the streams to be instantiated. encodings, representing the streams to be instantiated.
5.6. configureResponse 5.6. configureResponse
The 'configureResponse' message is sent from the MP to the MC to The 'configureResponse' message is sent from the MP to the MC to
communicate the processing result of requests carried in the communicate the processing result of requests carried in the
previously received 'configure' message. It contains (Figure 8) a previously received 'configure' message. It contains (Figure 8) a
response code with a reason string indicating either the success or response code (and optionally a reason string) indicating either the
the failure (along with failure details) of a 'configure' request success or the failure (along with failure details) of a 'configure'
processing. Following, the <confSequenceNr> field contains the request processing. Following, the <confSequenceNr> field contains
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, if a
There is no partial execution of commands. As an example, if a MP is MP is able to understand all the selected capture encodings except
able to understand all the selected capture encodings except one, one, then the whole command fails and nothing is instantiated.
then the whole command fails and nothing is instantiated.
<!-- '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>
skipping to change at page 16, line 36 skipping to change at page 16, line 34
Response codes are defined as a sequence of three digits. A well- Response codes are defined as a sequence of three digits. A well-
defined meaning is associated with the first digit. Response codes defined meaning is associated with the first digit. Response codes
beginning with "2" are associated with successful responses. beginning with "2" are associated with successful 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. In particular, response codes beginning with "3" indicate request. In particular, response codes beginning with "3" indicate
problems with the XML content of the message ("Bad syntax", "Invalid problems with the XML content of the message ("Bad syntax", "Invalid
value", etc.), while response codes beginning with "4" refer to value", etc.), while response codes beginning with "4" refer to
problems related to CLUE protocol semantics ("Invalid sequencing", problems related to CLUE protocol semantics ("Invalid sequencing",
"Version not supported", etc.). 200, 300 and 400 codes are "Version not supported", etc.). 200, 300 and 400 codes are the most
considered catch-alls. Further response codes can be either defined generic ones in their respective categories. Further response codes
in future versions of the protocol (by adding them to the related can be either defined in future versions of the protocol, or defined
IANA registry), or defined by leveraging the extension mechanism. In by leveraging the extension mechanism. In both cases, the new
both cases, the new response codes MUST be registered with IANA. response codes MUST be registered with IANA. Such new response codes
Such new response codes MUST NOT overwrite the ones here defined and MUST NOT override the ones here defined and they MUST respect the
they MUST respect the semantics of the first code digit. semantics of the first code digit.
This document does not define response codes starting with "1", and This document does not define response codes starting with "1", and
such response codes are not allowed to appear in major version 1 of such response codes are not allowed to appear in major version 1 of
the CLUE protocol. The range from 100 to 199 inclusive is reserved the CLUE protocol. The range from 100 to 199 inclusive is reserved
for future major versions of the protocol to define response codes for future major versions of the protocol to define response codes
for delayed or incomplete operations if necessary. Response codes for delayed or incomplete operations if necessary. Response codes
starting with "5" through "9" are reserved for future major versions starting with "5" through "9" are reserved for future major versions
of the protocol to define new classes of response, and are not of the protocol to define new classes of response, and are not
allowed in major version 1 of the CLUE protocol. Response codes allowed in major version 1 of the CLUE protocol. Response codes
starting with "0" are not allowed. starting with "0" are not allowed.
skipping to change at page 18, line 41 skipping to change at page 18, line 40
Figure 9: CLUE response codes Figure 9: CLUE response codes
6. Protocol state machines 6. Protocol state machines
The CLUE protocol is an application protocol used between two CPs in The CLUE protocol is an application protocol used between two CPs in
order to properly configure a multimedia telepresence session. CLUE order to properly configure a multimedia telepresence session. CLUE
protocol messages flow over the CLUE Data Channel, a DTLS/SCTP protocol messages flow over the CLUE Data Channel, a DTLS/SCTP
channel established as depicted in [I-D.ietf-clue-datachannel]. We channel established as depicted in [I-D.ietf-clue-datachannel]. We
herein discuss the state machines associated, respectively, with the herein discuss the state machines associated, respectively, with the
CLUE Participant (Figure 10), with the MC process (Figure 11) and CLUE Participant (Figure 10), with the MC role (Figure 11) and with
with the MP process (Figure 12). Endpoints often wish to both send the MP role (Figure 12). Endpoints often wish to both send and
and receive media, i.e., act as both MP and MC. As such there will receive media, i.e., act as both MP and MC. As such there will often
often be two sets of messages flowing in opposite directions; the be two sets of messages flowing in opposite directions; the state
state machines of these two flows do not interact with each other. machines of these two flows do not interact with each other. Only
Only the CLUE application logic is considered. The interaction of the CLUE application logic is considered. The interaction of CLUE
CLUE protocol and SDP negotiations for the media streams exchanged is protocol and SDP negotiations for the media streams exchanged is
treated in [I-D.ietf-clue-signaling]. treated in [I-D.ietf-clue-signaling].
The main state machines focus on the behavior of the CLUE Participant The main state machines focus on the behavior of the CLUE Participant
(CP) acting as a CLUE Channel Initiator/Receiver (CI/CR). (CP) acting as a CLUE Channel Initiator/Receiver (CI/CR).
The initial state is the IDLE one. When in the IDLE state, the CLUE The initial state is the IDLE one. When in the IDLE state, the CLUE
data channel is not established and no CLUE-controlled media are data channel is not established and no CLUE-controlled media are
exchanged between the two considered CLUE-capable devices (if there exchanged between the two considered CLUE-capable devices (if there
is an ongoing exchange of media streams, such media streams are not is an ongoing exchange of media streams, such media streams are not
currently CLUE-controlled). currently CLUE-controlled).
When the CLUE data channel set up starts ("start channel"), the CP When the CLUE data channel sets up ("start channel"), the CP moves
moves from the IDLE state to the CHANNEL SETUP state. from the IDLE state to the CHANNEL SETUP state.
If the CLUE data channel is successfully set up ("channel If the CLUE data channel is successfully set up ("channel
established"), the CP moves from the CHANNEL SETUP state to the established"), the CP moves from the CHANNEL SETUP state to the
OPTIONS state. Otherwise if "channel error", it moves back to the OPTIONS state. Otherwise if "channel error", it moves back to the
IDLE state. The same transition happens if the CLUE-enabled IDLE state. The same transition happens if the CLUE-enabled
telepresence session ends ("session ends"), i.e., when an SDP telepresence session ends ("session ends"), i.e., when an SDP
negotiation for removing the CLUE data channel is performed. negotiation for removing the CLUE data channel is performed.
When in the OPTIONS state, the CP addresses the initiation phase When in the OPTIONS state, the CP addresses the initiation phase
where both parts agree on the version and on the extensions to be where both parts agree on the version and on the extensions to be
skipping to change at page 21, line 21 skipping to change at page 21, line 21
After the 'advertisement' has been sent ("advertisement sent"), the After the 'advertisement' has been sent ("advertisement sent"), the
MP moves from the ADV state to the WAIT FOR ACK state. If an 'ack' MP moves from the ADV state to the WAIT FOR ACK state. If an 'ack'
message with a successful response code arrives ("ack received"), the message with a successful response code arrives ("ack received"), the
MP moves to the WAIT FOR CONF state. If a NACK arrives (i.e., an MP moves to the WAIT FOR CONF state. If a NACK arrives (i.e., an
'ack' message with an error response code), the MP moves back to the 'ack' message with an error response code), the MP moves back to the
ADV state for preparing a new 'advertisement'. When in the WAIT FOR ADV state for preparing a new 'advertisement'. When in the WAIT FOR
ACK state, if a 'configure' message with the <ack> element set to ACK state, if a 'configure' message with the <ack> element set to
TRUE arrives ("configure+ack received"), the MP goes directly to the TRUE arrives ("configure+ack received"), the MP goes directly to the
CONF RESPONSE state. 'configure+ack' messages referring to out-of- CONF RESPONSE state. 'configure+ack' messages referring to out-of-
date (i.e., having a sequence number equal to or less than the date (i.e., having a sequence number less than the highest generated
highest seen so far) advertisements MUST be ignored, i.e., they do so far) advertisements MUST be ignored, i.e., they do not trigger any
not trigger any state transition. If the telepresence settings of state transition. If the telepresence settings of the MP change
the MP change while in the WAIT FOR ACK state ("changed telepresence while in the WAIT FOR ACK state ("changed telepresence settings"),
settings"), the MP switches from the WAIT FOR ACK state to the ADV the MP switches from the WAIT FOR ACK state to the ADV state to
state to create a new 'advertisement'. create a new 'advertisement'.
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 meanwhile ("changed If the telepresence settings change in the meanwhile ("changed
telepresence settings"), the MP moves from the WAIT FOR CONF back to telepresence settings"), the MP moves from the WAIT FOR CONF back to
the ADV state to create the new 'advertisement' to be sent to the MC. the ADV state to create the new 'advertisement' to be sent to the MC.
The MP in the CONF RESPONSE state processes the received 'configure' 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
skipping to change at page 25, line 14 skipping to change at page 25, line 14
7. Versioning 7. Versioning
CLUE protocol messages are XML messages compliant to the CLUE CLUE protocol messages are XML messages compliant to the CLUE
protocol XML schema [I-D.ietf-clue-data-model-schema]. The version protocol XML schema [I-D.ietf-clue-data-model-schema]. The version
of the protocol corresponds to the version of the schema. Both of the protocol corresponds to the version of the schema. Both
client and server have to test the compliance of the received client and server have to test the compliance of the received
messages with the XML schema of the CLUE protocol. If the compliance messages with the XML schema of the CLUE protocol. If the compliance
is not verified, the message cannot be processed further. is not verified, the message cannot be processed further.
Obviously, client and server cannot communicate if they do not share Client and server cannot communicate if they do not share exactly the
exactly the same XML schema. Such a schema is associated with the same XML schema. Such a schema is associated with the CLUE URN
CLUE URN "urn:ietf:params:xml:ns:clue-protocol". If all CLUE-enabled "urn:ietf:params:xml:ns:clue-protocol". If all CLUE-enabled devices
devices use that schema there will be no interoperability problems use that schema there will be no interoperability problems due to
due to schema issues. schema issues.
This document defines XML schema version 1.0. The version usage is This document defines XML schema version 1.0. The version usage is
similar in philosophy to XMPP ([RFC6120]). A version number has similar in philosophy to XMPP ([RFC6120]). A version number has
major and minor components, each a non-negative integer. Major major and minor components, each a non-negative integer. Major
version changes denote non-interoperable changes. Minor version version changes denote non-interoperable changes. Minor version
changes denote schema changes that are backward compatible by changes denote schema changes that are backward compatible by
ignoring unknown XML elements, or other backward compatible changes. ignoring unknown XML elements, or other backward compatible changes.
The minor versions of the XML schema MUST be backward compatible, not The minor versions of the XML schema MUST be backward compatible, not
only in terms of schema but also semantically and procedurally as only in terms of schema but also semantically and procedurally as
well. This means that they should define further features and well. This means that they should define further features and
functionality besides those defined in the previous versions, in an functionality besides those defined in the previous versions, in an
incremental way, without impacting the basic rules defined in the incremental way, without impacting the basic rules defined in the
previous version of the schema. In this way, if a MP is able to 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 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 understands version 1.4, the MP should have no problem in reverting
the dialogue back to version 1.4 without exploiting 1.5 features and the dialogue back to version 1.4 without exploiting 1.5 features and
functionality. Version 1.4 is the one to be spoken and has to appear functionality. Version 1.4 is the one to be spoken and has to appear
in the "v" attribute of the subsequent CLUE messages. In other in the "v" attribute of the subsequent CLUE messages. In other
words, in this example, the MP MUST use version 1.4 and downgrade to words, in this example, the MP MUST use version 1.4. This said, and
the lower version. This said, and coherently with the general IETF coherently with the general IETF "protocol robustness principle"
"protocol robustness principle" stating that "an implementation must stating that "an implementation must be conservative in its sending
be conservative in its sending behavior, and liberal in its receiving behavior, and liberal in its receiving behavior" [RFC1122], CLUE
behavior" [RFC1122], CLUE Participants MUST ignore unknown elements Participants MUST ignore unknown elements or attributes that are not
or attributes that are not envisioned in the negotiated protocol envisioned in the negotiated protocol version and related extensions.
version and related extensions.
8. Extensions 8. Extensions
Although the standard version of the CLUE protocol XML schema is Although the standard version of the CLUE protocol XML schema is
designed to thoroughly cope with the requirements emerging from the designed to thoroughly cope with the requirements emerging from the
application domain, new needs might arise and extensions can be application domain, new needs might arise and extensions can be
designed. Extensions specify information and behaviors that are not designed. Extensions specify information and behaviors that are not
described in a certain version of the protocol and specified in the described in a certain version of the protocol and specified in the
related RFC document. Such information and behaviors can be related RFC document. Such information and behaviors can be
optionally used in a CLUE dialogue and MUST be negotiated in the CLUE optionally used in a CLUE dialogue and MUST be negotiated in the CLUE
skipping to change at page 27, line 7 skipping to change at page 27, line 5
New information within data model elements can be added in place of New information within data model elements can be added in place of
<any> and <anyAttribute> schema elements, as long as they are <any> and <anyAttribute> schema elements, as long as they are
properly namespace qualified. properly namespace qualified.
On the other hand (second type of extensions), "extra" CLUE protocol On the other hand (second type of extensions), "extra" CLUE protocol
messages, i.e., messages not envisioned in the latest standard messages, i.e., messages not envisioned in the latest standard
version of the schema, can be needed. In that case, the messages and version of the schema, can be needed. In that case, the messages and
the associated behavior should be defined in external documents that the associated behavior should be defined in external documents that
both communication parties must be aware of. both communication parties must be aware of.
As reported in Figure 13, the values of the fields of the <extension> As reported in Figure 13, the fields of the <extension> element
element (either new information or new messages) take the following (either new information or new messages) take the following values:
values:
o a name; o a name;
o an external XML Schema defining the XML information and/or the XML o an external XML Schema defining the XML information and/or the XML
messages representing the extension; messages representing the extension;
o the major standard version of the protocol that the extension o the major standard version of the protocol that the extension
refers to. refers to.
<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" minOccurs="0"/> <xs:element name="schemaRef" type="xs:anyURI"/>
<xs:element name="version" type="versionType" minOccurs="0"/> <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>
Figure 13: The <extension> element Figure 13: The <extension> element
The above described <extension> element is carried within the The above described <extension> element is carried within the
'options' and 'optionsResponse' messages to represent the extensions 'options' and 'optionsResponse' messages to represent the extensions
supported both by the CI and the CR. supported both by the CI and the CR.
Extensions MUST be defined in a separate XML schema file and MUST be Extensions MUST be defined in a separate XML schema file and MUST be
provided with a companion document describing their semantics and provided with a companion document describing their semantics and
use. use.
8.1. Extension example 8.1. Extension example
An example of extension might be a "new" capture attribute (i.e., a An example of extension might be a "new" capture attribute (i.e., a
capture attribute which is not envisioned in the current standard capture attribute that is not envisioned in the current standard
defining the CLUE data model in [I-D.ietf-clue-data-model-schema]) defining the CLUE data model in [I-D.ietf-clue-data-model-schema])
needed to further describe a video capture. needed to further describe a video capture.
The CLUE data model document ([I-D.ietf-clue-data-model-schema]) The CLUE data model document ([I-D.ietf-clue-data-model-schema])
envisions the possibility of adding this kind of "extra" information envisions the possibility of adding this kind of "extra" information
in the description of a video capture by keeping the compatibility in the description of a video capture. For the sake of convenience,
with the CLUE data model schema. This is made possible thanks to the the XML definition of a video capture taken from
presence of the <any> element in the XML definition of the video [I-D.ietf-clue-data-model-schema] is reported in Figure 14 below.
capture, allowing for the introduction of a new XML field in the XML
description. For the sake of convenience, the XML definition of a
video capture taken from [I-D.ietf-clue-data-model-schema] is
reported in Figure 14 below.
<!-- 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"/>
skipping to change at page 32, line 13 skipping to change at page 32, line 13
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" minOccurs="0" /> <xs:element name="schemaRef" type="xs:anyURI" />
<xs:element name="version" type="versionType" minOccurs="0" /> <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"
skipping to change at page 34, line 15 skipping to change at page 34, line 15
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
</xs:schema> </xs:schema>
Figure 16: Schema defining CLUE messages Figure 16: Schema defining CLUE messages
10. Call flow example 10. Call flow example
In this section the CLUE protocol messages exchanged in the following In this section the CLUE protocol messages exchanged in the following
call flow are detailed. call flow are detailed. Only one direction of media is shown for
simplicity, as the other direction is precisely symmetric.
+-----+ +-----+ +-----+ +-----+
| | | | | | | |
| CP1 | | CP2 | | CP1 | | CP2 |
| | | | | | | |
+--+--+ +--+--+ +--+--+ +--+--+
| | | |
| 1.options | | 1.options |
+----------------->| +----------------->|
| | | |
skipping to change at page 37, line 15 skipping to change at page 37, line 15
speaker and two picture-in-picture boxes representing the previous speaker and two picture-in-picture boxes representing the previous
speakers (see more details about the telepresence description in speakers (see more details about the telepresence description in
[I-D.ietf-clue-data-model-schema], Sec. MCC example). [I-D.ietf-clue-data-model-schema], Sec. MCC example).
CP2 acknowledges the second 'advertisement' message with an 'ack' CP2 acknowledges the second 'advertisement' message with an 'ack'
message (Section 10.7). message (Section 10.7).
In a second moment, CP2 changes the requested media streams from CP1 In a second moment, CP2 changes the requested media streams from CP1
by sending to CP1 a 'configure' message replacing the previously by sending to CP1 a 'configure' message replacing the previously
selected video streams with the new composed media streams advertised selected video streams with the new composed media streams advertised
by CP1 (Section 10.8). by CP1 (Section 10.8). Media from the previous configuration
continue to flow during the reconfiguration process.
Finally, CP1 accept the last requests of CP2 with a 'confResponse' Finally, CP1 accept the last requests of CP2 with a 'confResponse'
message (Section 10.9) message (Section 10.9)
10.1. CLUE message nr. 1: 'option' We also remark that in the depicted flow three distinct sequence
number spaces per sender are involved (two of which appear in the
snippets since we only show one direction of media). The
discontinuity between the sequence number values in Section 10.2 and
Section 10.3 is hence correct.
10.1. CLUE message nr. 1: 'options'
<?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="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol xsi:schemaLocation="urn:ietf:params:xml:ns:clue-protocol
http://wpage.unina.it/spromano/clue-protocol-17-schema-file.xsd" 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>
skipping to change at page 60, line 40 skipping to change at page 60, line 40
telepresence session both in the basic case involving two CLUE telepresence session both in the basic case involving two CLUE
endpoints acting, respectively, as MP and MC, and in the more endpoints acting, respectively, as MP and MC, and in the more
advanced scenario envisaging the presence of an MCU. advanced scenario envisaging the presence of an MCU.
The framework document also mentions that the information carried The framework document also mentions that the information carried
within CLUE protocol messages might contain sensitive data, which within CLUE protocol messages might contain sensitive data, which
SHOULD hence be accessed only by authenticated endpoints. Security SHOULD hence be accessed only by authenticated endpoints. Security
issues associated with the CLUE data model schema are discussed in issues associated with the CLUE data model schema are discussed in
[I-D.ietf-clue-data-model-schema]. [I-D.ietf-clue-data-model-schema].
There is extra information carried by the CLUE protocol which 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 which 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 exchanged during the negotiation phase via the 'options' and
'optionsResponse' messages. In the CLUE Participant state machine 'optionsResponse' messages. In the CLUE Participant state machine
OPTIONS state, both parties agree on the version and on the OPTIONS state, both parties agree on the version and on the
extensions to be used in the subsequent CLUE messages exchange phase. extensions to be used in the subsequent CLUE messages exchange phase.
A malicious participant might either try to retrieve a detailed A malicious participant might either try to retrieve a detailed
footprint of a specific CLUE protocol implementation during this footprint of a specific CLUE protocol implementation during this
initial setup phase, or force the communicating party to use a non- initial setup phase, or force the communicating party to use a non-
up-to-date version of the protocol which they know how to break. up-to-date version of the protocol which 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 protocol. In theory an implementation could choose not to announce
all of the versions it supports if it wants to avoid such leakage, all of the versions it supports if it wants to avoid such leakage,
though at the expenses of interoperability. With respect to the though at the expenses of interoperability. With respect to the
above considerations, it is noted that the OPTIONS state is only above considerations, it is noted that the OPTIONS state is only
reached after the CLUE data channel has been successfully set up. reached after the CLUE data channel has been successfully set up.
This ensures that only authenticated parties can exchange 'options' This ensures that only authenticated parties can exchange 'options'
and related 'optionsResponse' messages and hence drastically reduces and related 'optionsResponse' messages and hence drastically reduces
the attack surface which is exposed to malicious parties. the attack surface that is exposed to malicious parties.
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 to gain 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 [I-D.ietf-clue-datachannel], which ensures protection from both in [I-D.ietf-clue-datachannel], which ensures protection from both
message recovery and message tampering. With respect to this last message recovery and message tampering. With respect to this last
point, any implementation of the CLUE protocol compliant with the point, any implementation of the CLUE protocol compliant with the
CLUE specification MUST rely on the exchange of messages which flow CLUE specification MUST rely on the exchange of messages that flow on
on top of a reliable and ordered SCTP over DTLS transport channel top of a reliable and ordered SCTP over DTLS transport channel
connecting two CLUE Participants. connecting two CLUE Participants.
12. IANA Considerations 12. IANA Considerations
This document registers a new XML namespace, a new XML schema and the This document registers a new XML namespace, a new XML schema and the
MIME type for the schema. This document also registers the "CLUE" MIME type for the schema. This document also registers the "CLUE"
Application Service tag and the "CLUE" Application Protocol tag and Application Service tag 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.
12.1. URN Sub-Namespace Registration 12.1. URN Sub-Namespace Registration
skipping to change at page 66, line 22 skipping to change at page 66, line 22
14.1. Normative References 14.1. Normative References
[I-D.ietf-clue-data-model-schema] [I-D.ietf-clue-data-model-schema]
Presta, R. and S. Romano, "An XML Schema for the CLUE data Presta, R. and S. Romano, "An XML Schema for the CLUE data
model", draft-ietf-clue-data-model-schema-17 (work in model", draft-ietf-clue-data-model-schema-17 (work in
progress), August 2016. progress), August 2016.
[I-D.ietf-clue-datachannel] [I-D.ietf-clue-datachannel]
Holmberg, C., "CLUE Protocol data channel", draft-ietf- Holmberg, C., "CLUE Protocol data channel", draft-ietf-
clue-datachannel-15 (work in progress), August 2018. clue-datachannel-18 (work in progress), April 2019.
[I-D.ietf-clue-framework] [I-D.ietf-clue-framework]
Duckworth, M., Pepperell, A., and S. Wenger, "Framework Duckworth, M., Pepperell, A., and S. Wenger, "Framework
for Telepresence Multi-Streams", draft-ietf-clue- for Telepresence Multi-Streams", draft-ietf-clue-
framework-25 (work in progress), January 2016. framework-25 (work in progress), January 2016.
[I-D.ietf-clue-signaling] [I-D.ietf-clue-signaling]
Hansen, R., Kyzivat, P., Xiao, L., and C. Groves, "Session Hansen, R., Kyzivat, P., Xiao, L., and C. Groves, "Session
Signaling for Controlling Multiple Streams for Signaling for Controlling Multiple Streams for
Telepresence (CLUE)", draft-ietf-clue-signaling-13 (work Telepresence (CLUE)", draft-ietf-clue-signaling-14 (work
in progress), November 2017. in progress), October 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550,
July 2003, <https://www.rfc-editor.org/info/rfc3550>. July 2003, <https://www.rfc-editor.org/info/rfc3550>.
skipping to change at page 67, line 21 skipping to change at page 67, line 21
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
14.2. Informative References 14.2. Informative References
[RFC1122] Braden, R., Ed., "Requirements for Internet Hosts - [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts -
Communication Layers", STD 3, RFC 1122, Communication Layers", STD 3, RFC 1122,
DOI 10.17487/RFC1122, October 1989, DOI 10.17487/RFC1122, October 1989,
<https://www.rfc-editor.org/info/rfc1122>. <https://www.rfc-editor.org/info/rfc1122>.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
DOI 10.17487/RFC3261, June 2002,
<https://www.rfc-editor.org/info/rfc3261>.
[RFC4353] Rosenberg, J., "A Framework for Conferencing with the [RFC4353] Rosenberg, J., "A Framework for Conferencing with the
Session Initiation Protocol (SIP)", RFC 4353, Session Initiation Protocol (SIP)", RFC 4353,
DOI 10.17487/RFC4353, February 2006, DOI 10.17487/RFC4353, February 2006,
<https://www.rfc-editor.org/info/rfc4353>. <https://www.rfc-editor.org/info/rfc4353>.
[RFC5117] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 5117,
DOI 10.17487/RFC5117, January 2008,
<https://www.rfc-editor.org/info/rfc5117>.
[RFC6120] Saint-Andre, P., "Extensible Messaging and Presence [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120, Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120,
March 2011, <https://www.rfc-editor.org/info/rfc6120>. March 2011, <https://www.rfc-editor.org/info/rfc6120>.
[RFC7262] Romanow, A., Botzko, S., and M. Barnes, "Requirements for [RFC7262] Romanow, A., Botzko, S., and M. Barnes, "Requirements for
Telepresence Multistreams", RFC 7262, Telepresence Multistreams", RFC 7262,
DOI 10.17487/RFC7262, June 2014, DOI 10.17487/RFC7262, June 2014,
<https://www.rfc-editor.org/info/rfc7262>. <https://www.rfc-editor.org/info/rfc7262>.
[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, [RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667,
 End of changes. 44 change blocks. 
140 lines changed or deleted 148 lines changed or added

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