Skip to main content

CLUE protocol
draft-presta-clue-protocol-02

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Replaced".
Authors Roberta Presta , Simon Pietro Romano
Last updated 2013-10-08
Replaced by draft-ietf-clue-protocol, draft-ietf-clue-protocol, RFC 8847
RFC stream (None)
Formats
Additional resources
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-presta-clue-protocol-02
CLUE Working Group                                             R. Presta
Internet-Draft                                               S P. Romano
Intended status: Informational                      University of Napoli
Expires: April 11, 2014                                  October 8, 2013

                             CLUE protocol
                     draft-presta-clue-protocol-02

Abstract

   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 [I-D.ietf-clue-framework] and
   [I-D.ietf-clue-telepresence-requirements].  The companion document
   [I-D.kyzivat-clue-signaling] delves into CLUE signaling details, as
   well as on the SIP/SDP session establishment phase.  We herein focus
   on the application level perspective.  Message details, together with
   the behavior of both the Media Provider and the Media Consumer are
   discussed.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 11, 2014.

Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents

Presta & Romano          Expires April 11, 2014                 [Page 1]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Overview of the CLUE protocol messages . . . . . . . . . . . .  3
     3.1.  ADVERTISEMENT  . . . . . . . . . . . . . . . . . . . . . .  4
     3.2.  CONFIGURE  . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.3.  RESPONSE . . . . . . . . . . . . . . . . . . . . . . . . .  6
     3.4.  RE-ADV . . . . . . . . . . . . . . . . . . . . . . . . . .  9
     3.5.  OPTIONS  . . . . . . . . . . . . . . . . . . . . . . . . . 10
   4.  Protocol state machines  . . . . . . . . . . . . . . . . . . . 10
   5.  Media Consumer's state machine . . . . . . . . . . . . . . . . 11
   6.  Media Provider's state machine . . . . . . . . . . . . . . . . 13
   7.  About CLUE protocol XML schema versioning  . . . . . . . . . . 15
   8.  Extensibility issues . . . . . . . . . . . . . . . . . . . . . 16
     8.1.  Aspect 1 - new information within existing messages  . . . 16
     8.2.  Aspect 2 - new messages  . . . . . . . . . . . . . . . . . 17
   9.  Managing protocol version negotiation and extensions: the
       OPTIONS request  . . . . . . . . . . . . . . . . . . . . . . . 17
     9.1.  An example using OPTIONS . . . . . . . . . . . . . . . . . 19
   10. XML Schema of CLUE protocol messages . . . . . . . . . . . . . 20
   11. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
   12. Handling channel errors  . . . . . . . . . . . . . . . . . . . 24
   13. Diff with the -01 version  . . . . . . . . . . . . . . . . . . 24
   14. Diff with -00 version  . . . . . . . . . . . . . . . . . . . . 25
   15. Informative References . . . . . . . . . . . . . . . . . . . . 25

Presta & Romano          Expires April 11, 2014                 [Page 2]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

1.  Introduction

   The CLUE protocol is an application protocol used by a Media Provider
   (MP) and a Media Consumer (MC) to establish a CLUE multimedia
   telepresence session.  The main goals of the CLUE protocol are:

   1.  enabling a MP to fully announce its current telepresence
       capabilities to the MC in terms of available media captures,
       encodings, and simultaneity constraints;

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

   CLUE protocol messages flow upon a DTLS/SCTP/UDP channel established
   as depicted in [I-D.kyzivat-clue-signaling].  While
   [I-D.kyzivat-clue-signaling] focuses on protocol signaling details
   and on its interaction with the SIP/SDP session establishment phase,
   we herein investigate the protocol in action and try to define the
   behavior of both the MP and the MC at the CLUE application level.  We
   assume the DTLS/SCTP/UDP channel is established and discuss how the
   CLUE dialogue between the MP and the MC can be exploited to
   successfully setup the telepresence session according to the
   principles and concepts pointed out in in [I-D.ietf-clue-framework].

   In Section 3 we provide an overview of the CLUE protocol and describe
   CLUE messages along with their features and functionality.  MC's and
   MP's state machines are introduced in Section 4 and further described
   in Section 5 and Section 6 respectively.  Versioning, extensions and
   options management mechanisms are discussed in Section 7, Section 8
   and Section 9, respectively.  The XML schema defining the CLUE
   messages is reported in Section 10.

2.  Terminology

   This document refers to the same terminology used in
   [I-D.ietf-clue-framework] and in [I-D.kyzivat-clue-signaling].

3.  Overview of the CLUE protocol messages

   The CLUE protocol, as defined in the following, is a stateful,
   client-server, XML-based application protocol.  The server side of
   the protocol is represented by a Media Provider, which produces media
   streams, while the client side is represented by the Media Consumer,
   which requests media streams.

   The MP first advertises the media captures and associated encodings
   to the MC, as well as possible simultaneity constraints.  The
   description of such telepresence features is made according to the

Presta & Romano          Expires April 11, 2014                 [Page 3]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   information defined in the CLUE framework and data model
   ([I-D.ietf-clue-framework] and [I-D.ietf-clue-data-model-schema]).
   The CLUE message conveing the MP's multimedia offer is the
   ADVERTISEMENT message.  Such message leverages the XML definitions
   provided in [I-D.ietf-clue-data-model-schema] for the description of
   media captures, encodings, and simultaneity constraints features.

   The MC selects the desired streams coming from the MP by using the
   CONFIGURE message, which makes reference to the information carried
   in the ADVERTISEMENT previously received by the MP.

   In the following, a bird's-eye view of the CLUE protocol messages is
   provided.  For each message it is indicated who sends it, who
   receives it, a brief description of the information it carries, and
   how/when it is used.  Besides ADVERTISEMENT and CONFIGURE, new
   messages have been conceived in order to provide all the mechanisms
   and operations envisaged in [I-D.kyzivat-clue-signaling].

   o  ADVERTISEMENT (ADV)

   o  CONFIGURE (CONF)

   o  RESPONSE

   o  RE-ADV

   o  OPTIONS

3.1.  ADVERTISEMENT

Presta & Romano          Expires April 11, 2014                 [Page 4]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

  +---------- ---+-----------------------------------------------------+
  |              |                                                     |
  | FROM         |                        MP                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TO           |                        MC                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TYPE         |                   Notification                      |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | DESCRIPTION  |   This message is used by the MP to advertise the   |
  |              |   available media captures and related information  |
  |              |   to the MC.                                        |
  |              |   The ADV contains elements compliant with the      |
  |              |   CLUE data model and other information like the    |
  |              |   CLUE protocol version and a sequence number.      |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | USAGE        |   The MP sends this message as soon as the          |
  |              |   CLUE channel is ready. The MP sends an ADV to the |
  |              |   MC each time there is a modification of the MP's  |
  |              |   telepresence capabilities.                        |
  |              |   The ADV message is also sent back to the MC       |
  |              |   when the MP receives a RE-ADV request.            |
  +--------------+-----------------------------------------------------+

   The ADV message is considered a notification since, during the
   session, it can be sent from the MP also on a per-event basis, i.e.
   when the CLUE capabilities of the MP change with respect to the last
   issued ADV.  It is still to be discussed if 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 ([RFC6502]), leveraging the XML diff codification
   mechanism defined in [RFC5261].

3.2.  CONFIGURE

Presta & Romano          Expires April 11, 2014                 [Page 5]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | FROM         |                        MC                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TO           |                        MP                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TYPE         |                     Request                         |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | DESCRIPTION  |   This message allows a MC to ask for the           |
  |              |   desired (advertised) capture. It contains capture |
  |              |   encodings and other information like the CLUE     |
  |              |   protocol version and a sequence number.           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | USAGE        |   The MC can send a CONF after the reception of     |
  |              |   an ADV or each time it wants to request other     |
  |              |   advertised captures from the MP.                  |
  +--------------+-----------------------------------------------------+

3.3.  RESPONSE

Presta & Romano          Expires April 11, 2014                 [Page 6]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | FROM         |                        MP                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TO           |                        MC                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TYPE         |                      Response                       |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | DESCRIPTION  |   This message allows a MP to answer to a CONF      |
  |              |   message. Besides the protocol version and a       |
  |              |   sequence number, it contains a response code with |
  |              |   a response string indicating either the success   |
  |              |   or the failure (along with failure details) of    |
  |              |   a CONF request elaboration. Example response      |
  |              |   codes and strings are provided in the following   |
  |                              |   table.                                                                                        |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | USAGE        |   The MP sends this message in response to a CONF   |
  |              |   message.                                          |
  +--------------+-----------------------------------------------------+

   Response codes can be designed by adhering to the HTTP semantics, as
   shown below.

Presta & Romano          Expires April 11, 2014                 [Page 7]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   +-----------------+----------------------+--------------------------+
   |                 |                      |                          |
   |  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.    |
   +-----------------+----------------------+--------------------------+

   ...  TBC.

Presta & Romano          Expires April 11, 2014                 [Page 8]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   +---------------+------------------------+
   |               |                        |
   | Response code | Rescription            |
   | family        |                        |
   +---------------+------------------------+
   |               |                        |
   |     1XX       | Temporary info         |
   |               |                        |
   +---------------+------------------------+
   |               |                        |
   |     2XX       | Success                |
   |               |                        |
   +---------------+------------------------+
   |               |                        |
   |     3XX       | Redirection            |
   |               |                        |
   +---------------+------------------------+
   |               |                        |
   |     4XX       | Client error           |
   |               |                        |
   +---------------+------------------------+
   |               |                        |
   |     5XX       | Server error           |
   |               |                        |
   +---------------+------------------------+

3.4.  RE-ADV

Presta & Romano          Expires April 11, 2014                 [Page 9]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

  +---------- ---+-----------------------------------------------------+
  |              |                                                     |
  | FROM         |                        MC                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TO           |                        MP                           |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | TYPE         |                      Request                        |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | DESCRIPTION  |   This message allows a MC to request a MP to       |
  |              |   issue a new copy of the ADV. This message can     |
  |              |   contain a reason string indicating the motivation |
  |              |   for the request (e.g., refresh, missing elements  |
  |              |   in the received ADV, wrong syntax in the received |
  |              |   ADV, invalid capture area, invalid line of        |
  |              |   capture point, etc).                              |
  |              |                                                     |
  +--------------+-----------------------------------------------------+
  |              |                                                     |
  | USAGE        |   The MC sends this message to the MP when the      |
  |              |   timeout for the ADV is fired, or when the ADV is  |
  |              |   not compliant with the CLUE specifications (this  |
  |              |   can be useful for interoperability testing        |
  |              |   purposes)                                         |
  |              |                                                     |
  +--------------+-----------------------------------------------------+

3.5.  OPTIONS

   ToDo.  See Section 9.

4.  Protocol state machines

   The CLUE protocol is an application protocol used between a Media
   Provider (MP) and a Media Consumer (MC) in order to establish a
   multimedia telepresence session.  CLUE protocol messages flow upon a
   DTLS/SCTP channel established as depicted in
   [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 MC
   process and with the MP process.

Presta & Romano          Expires April 11, 2014                [Page 10]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

5.  Media Consumer's state machine

   An MC in the IDLE state is waiting for an ADV coming from the MP.  If
   the timeout expires ("timeout"), the MC switches to the TIMEOUT
   state.

   In the TIMEOUT state, if the number of trials is below the retry
   threshold, the MC sends a RE-ADV/refresh message to the MP ("send RE-
   ADV"), switching back to the IDLE state.  Otherwise, the MC moves to
   the TERMINATED state.

   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
   RE-ADV message to the MP specifying the encountered problem via a
   proper reason phrase.  In this way, the MC switches back to the IDLE
   state, waiting for a new copy of the ADV.  If the ADV is successfully
   processed, the MC issues a CONF message towards the MP ("send CONF")
   and switches to the TRYING state.

   While in the TRYING state, the MC is waiting for a RESPONSE message
   (to the issued CONF) from the MP.  If the timeout expires
   ("timeout"), the MC moves to the TIMEOUT state and sends a RE-ADV in
   order to solicit a new ADV from the MP.  If a RESPONSE with an error
   code is received ("receive 4xx, 5xx not supported"), then the MC
   moves back to the ADV-RCVD state and produces a new CONF message to
   be sent to the MP.  If a successful RESPONSE arrives ("receive 200
   OK"), the MC gets into the IN CALL state.  If a new ADV arrives in
   the meanwhile, it is ignored.  Indeed, as soon as the timeout
   expires, the MC switches to the TIMEOUT state and then sends a RE-ADV
   to the MP.

   When the MC is in the IN CALL state, it means that the telepresence
   session 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-RCV 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.

   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.

Presta & Romano          Expires April 11, 2014                [Page 11]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

                                                                      +-----+
                            +--------+-------------timeout------>+----+--+  |
                            |  IDLE  +<----+                     |TIMEOUT|  |
                            +---+----+<----+--------send---------+-------+  |
                                |          |     RE-ADV(refresh)      ^     |
                                |          |                          |     |
                                |          |                          |     |
                             receive     send                         |     |
                               ADV       RE-ADV                       |     |
           +---receive-------+  |       (missing elements,            |     |
           |   error RESP    |  |        invalid area,...)            |     |
           |                 v  v          |                          |     |
           +---------------++---------+    |                          |     |
          +---------------->+  ADV    +----+                      timeout   |
          |          +----->| RECEIVED|<-----+                        |     |
          |          |      +---+-----+      |                        |     |
      receive        |          |            |                        |     |
        ADV          |          |            |                        |     |
          |          |          |            |                        |     |
          |        receive     send      receive                      |     |
          |        ADV         CONF      error RESP,                  |     |
          |          |          |        retry not expired            |     |
          |          |          v            |                        |     |
          +-----------------+--------+-------+------------------------+     |
                 +---+------+ TRYING +-------+                              |
                 |   |      +---+----+<----+                                |
                 |   |          |          |                                |
                 |   |          |          |                                |
          receive|   |         receive    send                          retry
          error RESP,|          200 OK    CONF                        expires
          retry  |   |          |          |                                |
          expired|   |          |          |                                |
                 |   |          |          |                                |
                 |   |          v          |                                |
                 |   |       +------+      |                                |
                 |   +-------+  IN  |      |                                |
                 |           | CALL +------+                                |
                 |           +--+---+                                       |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |            connection                                    |
                 |             closed                                       |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |
                 |              |                                           |

Presta & Romano          Expires April 11, 2014                [Page 12]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

                 |              |                                           |
                 |              v                                           |
                 |            +----------+<---------------------------------+
                 +----------->+TERMINATED|
                              +----------+

6.  Media Provider's state machine

   In the IDLE 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 CONF state.

   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 IDLE state
   too, 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.

   In the TIMEOUT state, if the number of trials does not exceed the
   retry threshold, the MC comes back to the IDLE state for sending a
   new ADV.  Otherwise, it goes to the TERMINATED state.

   The MP in the CONF RECEIVED state is processing the received CONF in
   order to produce a RESPONSE message.  If the MP is fine with the MC's
   configuration, then it sends back a 200 OK successful RESPONSE and
   moves to the IN CALL state.  If there are errors duting CONF
   processing, then the MC returns a RESPONSE carrying an error response
   code.  Finally, if there are changes in the telepresence settings, it
   goes back to the IDLE state to issue an updated ADV.

   When in the IN CALL state, the MP has successfully set up 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 IDLE state to issue
   the ADV.  When the channel is terminated, the MP falls into the
   TERMINATED state.

   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.

Presta & Romano          Expires April 11, 2014                [Page 13]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

 +------------------->+-----+-+<----------------------------+
 |   +--------------->| IDLE  |<-------------retry----------+---------+
 |   |       +------->+---+---+<----+         not           |         |
 |   |       |            |         |        expired        |         |
 |   |       |            |         |                       |         |
 |   |  change          send       receive                  |        ++------+
 |   |  telepresence     ADV       RE-ADV                   |        |TIMEOUT|
 |   |  settings          |         |                       |        ++--+---+
 |   |       |            |         |                       |         ^  |
 |   |       |            v         |                       |         |  |
 |   |       |    +-------------+---+                       |         |  |
 |   |       +----+  WAIT FOR   +------------timeout--------+---------+  |
 |   |            |    CONF     |                           |            |
 change           +-------+-----+<--+                       |            |
 telepresence             |         |                       |            |
 settings                 |         |                       |            |
 |   |                  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             |            |
     |       +-------+  IN CALL +--------telepresence-------+            |
     +---------------+----+-----+        settings                        |
                          |                |                             |
                          |                |                             |
                          |                |                             |
                          |                |                             |
                       connection          |                             |
                        closed             |                             |
                          |                |                             |
                          |                |                             |
                          v                |                             |
                       +------------+<-----+-----------------------------+

Presta & Romano          Expires April 11, 2014                [Page 14]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

                       | TERMINATED |      |
                       +------------+<-----+

7.  About CLUE protocol XML schema versioning

   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.

   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.

   The version of the XML schema contained in the standard document
   deriving from this draft will be 1.0.  The subsequet versions of the
   XML schema should be backward compatible.  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 5.0 of
   the protocol while the MC only understands version 4.0, the MP should
   have no problem in reverting the dialogue to version 4.0 without
   exploiting 5.0 features and functionality.

   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.

   Even though strongly discouraged, if a future version of the protocol
   is designed which breaks the backward compatibility constraint, this
   ascpect MUST be explicitely advertised in the corresponding new RFC
   document.  In such a case, it would up to developers to update their
   systems accordingly.

Presta & Romano          Expires April 11, 2014                [Page 15]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

8.  Extensibility issues

   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 in the future.  Such needs
   may relate to two main aspects of the protocol:

      the information carried in the existing messages (for example, we
      may want to add more fields within an existing message);

      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.

8.1.  Aspect 1 - new information within existing messages

   CLUE messages are envelopes carrying two types of information:

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

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

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

      elementFormDefault="qualified"

      attributeFormDefault="unqualified"

   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.

   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.  If brand
   new data model elements are needed, then there are three options:

Presta & Romano          Expires April 11, 2014                [Page 16]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   1.  writing down a new version of the data model schema, with the new
       elements added after the existing ones.  This is a possible
       solution.  However, we must state that telepresence applications
       are forced to check the version attribute of the schema they use.

   2.  putting all the new elements inside a brand new schema to be
       linked to a new URN that the most up to date telepresence system
       must be aware of.

   3.  designing a wildcard envelope for future data model elements.

8.2.  Aspect 2 - new messages

   New CLUE protocol messages, not envisioned in the standard version of
   the schema, are needed.  Also in that case we have three chances:

      writing down a new version of the protocol schema, with the new
      messages added after the existing ones.  The same considerations
      of the first option above hold here.

      putting all the new messages inside a brand new schema to be
      linked to a new URN that the most up to date telepresence system
      must be aware of.  [Editors' note: we strongly dislike this
      option!!]

      designing a wildcard envelope for future messages.  This is an
      approach used also within the CCMP protocol (Centralized
      Conferencing Manipulation Protocol, [RFC6503]).  In that case, a
      mechanism for the extension negotiation is also envisioned.

9.  Managing protocol version negotiation and extensions: the OPTIONS
    request

   In this section we provide a mechanism for handling protocol
   extension matters as those pointed out in the previous section, as
   well as version negotiation issues.

   We propose a new request message issued by the MC to the MP as soon
   as the CLUE channel is instatiated: the OPTIONS request.  This
   message carries:

      the CLUE protocol version spoken by the MC

      the data model extensions supported by the MC

      the protocol extensions supported by the MC

   When the MP receives the OPTIONS message, it reads the CLUE protocol

Presta & Romano          Expires April 11, 2014                [Page 17]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   version of the MC (the highest protocol version of the MC).  If the
   MC's version is higher than the MP's one, then the MP responds to the
   MC by using in the RESPONSE message its version.  The MC has to
   downgrade the CLUE dialogue to the version specified by the MP in the
   subsequent CLUE messages.  If the MC's version is equal to (case i)
   or lower than (case ii) the MP version, then the MP will use in the
   RESPONSE message the same version as the one in hthe OPTIONS message
   and all subsequent CLUE messages must carry that version number.  In
   the (ii) case, it is the MP who has to to downgrade the CLUE dialogue
   in order to be understood by the MC.

   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 MP and a MC, it means that
   both are aware of the associated XML schema and of the meanings of
   the elements defined within it.

   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 MP and a
   MC, it means that both are aware of the associated XML schema and of
   the meanings of the elements defined within it.

   When the MP receives the MC's OPTIONS message, it selects the data
   model extensions and the protocol extensions that it is able to
   support, and then provides them into the RESPONSE message back to the
   MC.  Only the extensions included in the RESPONSE message can be used
   during the telepresence session.

   The XML schema definition of the OPTIONS message is provided in the
   following.

Presta & Romano          Expires April 11, 2014                [Page 18]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

<!-- CLUE OPTIONS REQUEST -->
<xs:complexType name="optionsMessageType">
<xs:complexContent>
<xs:extension base="clueRequestMessageType">
<xs:sequence>
<!-- optional fields -->
<xs:element ref="options" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE OPTIONS -->
<xs:element name="options" type="optionsType"/>

<xs:complexType name="optionsType">
<xs:sequence>
<xs:element name="dm-exts" type="schemaRefList" minOccurs="0" maxOccurs="1"/>
<xs:element name="protocol-exts" type="schemaRefList" minOccurs="0"
            maxOccurs="1"/>
</xs:sequence>
</xs:complexType>

<!-- SCHEMA REF LIST TYPE -->
<xs:complexType name="schemaRefList">
<sequence>
<element name="schemaRef" type="xs:anyURI" maxOccurs="unbounded"/>
</sequence>
</xs:complexType>

9.1.  An example using OPTIONS

   An example of OPTIONS dialogue is provided in the following.

Presta & Romano          Expires April 11, 2014                [Page 19]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   +------+               +------+
   |  MP  |               |  MC  |
   |      |               |      |
   +--+---+               +--+---+
      |                      |
      | OPTIONS 3.0          |
      | dm-ext: s1, s2, s3   |
      | pr-ext: s4, s5       |
      |<--------------------+|
      |                      |
      |        RESPONSE 1.0  |
      |        dm-ext: s1    |
      |        pr-ext: -     |
      |+-------------------->|
      |                      |
      |                      |
      |             ADV 1.0  |
      |+-------------------->|
      |                      |
      |  CONFIGURE 1.0       |
      |<--------------------+|
      |                      |
      |                      |
      v                      v

   When the CLUE channel is ready, the MC issues an OPTIONS request to
   the MP.  The MC uses the 3.0 version of the CLUE protocol, and
   supports schemas s1, s2, s3 as data model extensions and schemas s4,
   s5 as protocol extensions.

   The MP speaks the 1.0 version of the CLUE protocol and supports only
   the first data model extension among those indicated by the MC.  It
   then issues a v. 1.0 RESPONSE to the MC copying only the supported
   option.  The MC is able to understand that it can use only the 1.0
   version of the protocol and the s1 extension.

10.  XML Schema of CLUE protocol messages

   In this section we paste the XML schema defining the ADVERTISEMENT,
   CONFIGURE and RESPONSE messages contained in
   [I-D.kyzivat-clue-signaling].  At the time of writing, it assumes
   that encodings are described in SDP as m-lines with a text
   identifier, and that the identifier has the same value as the
   encodingIDs embedded in the <encodingGroups>.  However, that
   assumption is still under discussion in the context of the CLUE-SDP
   coupling issues.

Presta & Romano          Expires April 11, 2014                [Page 20]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

<?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="clue-data-model-01.xsd"/>

<!-- ELEMENT DEFINITIONS -->
<xs:element name="response" type="responseMessageType"/>
<xs:element name="advertisement" type="advertisementMessageType"/>
<xs:element name="configure" type="configureMessageType"/>
<xs:element name="readv" type="readvMessageType"/>
<xs:element name="options" type="optionsMessageType"/>

<!-- CLUE MESSAGE TYPE -->
<xs:complexType name="clueMessageType" abstract="true">
<xs:sequence>
<!-- mandatory fields -->
<!-- TBS: version info -->
</xs:sequence>
</xs:complexType>

<!-- CLUE REQUEST MESSAGE TYPE -->
<xs:complexType name="clueRequestMessageType" abstract="true">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<!-- mandatory fields -->
<xs:element name="requestNumber" type="xs:integer"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE OPTIONS REQUEST -->
<xs:complexType name="optionsMessageType">
<xs:complexContent>
<xs:extension base="clueRequestMessageType">
<xs:sequence>
<!-- optional fields -->

Presta & Romano          Expires April 11, 2014                [Page 21]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

<xs:element ref="options" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE OPTIONS -->
<xs:element name="options" type="optionsType"/>

<xs:complexType name="optionsType">
<xs:sequence>
<xs:element name="dm-exts" type="schemaRefList" minOccurs="0" maxOccurs="1"/>
<xs:element name="protocol-exts" type="schemaRefList" minOccurs="0"
            maxOccurs="1"/>
</xs:sequence>
</xs:complexType>

<!-- SCHEMA REF LIST TYPE -->
<xs:complexType name="schemaRefList">
<sequence>
<element name="schemaRef" type="xs:anyURI" maxOccurs="unbounded"/>
</sequence>
</xs:complexType>

<!-- CLUE NOTIFICATION MESSAGE TYPE -->
<xs:complexType name="clueNotificationMessageType" abstract="true">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<!-- mandatory fields -->
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE RESPONSE MESSAGE TYPE -->
<xs:complexType name="clueResponseMessageType">
<xs:complexContent>
<xs:extension base="clueMessageType">
<xs:sequence>
<!-- mandatory fields -->
<xs:element name="requestNumber" type="xs:integer"/>
<xs:element name="reason" type="reasonType" minOccurs="1"/>
<!-- optional fields -->
<xs:any namespace="##other"

Presta & Romano          Expires April 11, 2014                [Page 22]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- RESPONSE MESSAGE TYPE -->
<xs:complexType name="responseMessageType">
<xs:complexContent>
<xs:extension base="clueRequestMessageType">
<xs:sequence>
<!-- mandatory fields -->
<!-- TBD. -->
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE ADVERTISEMENT MESSAGE TYPE -->
<xs:complexType name="advertisementMessageType">
<xs:complexContent>
<xs:extension base="clueNotificationMessageType">
<xs:sequence>
<!-- mandatory fields -->
<xs:element name="advNumber" type="xs:unsignedInt"/>
<xs:element name="mediaCaptures"
type="dm:mediaCapturesType"/>
<xs:element name="encodingGroups"
type="dm:encodingGroupsType"/>
<!-- The encodings are defined via identifiers in the SDP,
referenced in encodingGroups -->
<xs:element name="captureScenes"
type="dm:captureScenesType"/>
<!-- optional fields -->
<xs:element name="simultaneousSets"
type="dm:simultaneousSetsType" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- CLUE CONFIGURE MESSAGE TYPE -->
<xs:complexType name="configureMessageType">
<xs:complexContent>

Presta & Romano          Expires April 11, 2014                [Page 23]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

<xs:extension base="clueRequestMessageType">
<xs:sequence>
<!-- mandatory fields -->
<xs:element name="advNumber" type="xs:unsignedInt"/>
<!-- optional fields -->
<xs:element name="captureEncodings"
type="dm:captureEncodingsType" minOccurs="0"/>
<xs:any namespace="##other"
processContents="lax" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- REASON TYPE -->
<xs:complexType name="reasonType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:short" name="code" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>

</xs:schema>

11.  Examples

   TBD

12.  Handling channel errors

   TBD

13.  Diff with the -01 version

      XML Schema moved here from [I-D.kyzivat-clue-signaling]

      advNumber introduced to couple a configure with an advertisement
      message

      added introductory text

      added a version and extension negotiation proposal

Presta & Romano          Expires April 11, 2014                [Page 24]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

14.  Diff with -00 version

      MC and MP state diagrams have been updated for discussion in
      http://www.ietf.org/mail-archive/web/clue/current/msg02650.html

      Consideration about protocol extension and versioning have been
      added to foster discussion.

15.  Informative References

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

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

   [I-D.ietf-clue-telepresence-requirements]  Romanow, A., Botzko, S.,
                                              and M. Barnes,
                                              "Requirements for
                                              Telepresence Multi-
                                              Streams", draft-ietf-clue-
                                              telepresence-requirements-
                                              05 (work in progress),
                                              August 2013.

   [I-D.kyzivat-clue-signaling]               Kyzivat, P., Xiao, L.,
                                              Groves, C., and R. Hansen,
                                              "CLUE Signaling", draft-
                                              kyzivat-clue-signaling-05
                                              (work in progress),
                                              September 2013.

   [RFC5261]                                  Urpalainen, J., "An
                                              Extensible Markup Language
                                              (XML) Patch Operations
                                              Framework Utilizing XML
                                              Path Language (XPath)
                                              Selectors", RFC 5261,
                                              September 2008.

Presta & Romano          Expires April 11, 2014                [Page 25]
Internet-Draft        draft-presta-clue-protocol-02         October 2013

   [RFC6502]                                  Camarillo, G., Srinivasan,
                                              S., Even, R., and J.
                                              Urpalainen, "Conference
                                              Event Package Data Format
                                              Extension for Centralized
                                              Conferencing (XCON)",
                                              RFC 6502, March 2012.

   [RFC6503]                                  Barnes, M., Boulton, C.,
                                              Romano, S., and H.
                                              Schulzrinne, "Centralized
                                              Conferencing Manipulation
                                              Protocol", RFC 6503,
                                              March 2012.

Authors' Addresses

   Roberta Presta
   University of Napoli
   Via Claudio 21
   Napoli  80125
   Italy

   EMail: roberta.presta@unina.it

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

   EMail: spromano@unina.it

Presta & Romano          Expires April 11, 2014                [Page 26]