Internet DRAFT - draft-romanow-clue-call-flow
draft-romanow-clue-call-flow
CLUE R. Hansen
Internet-Draft A. Krishna
Intended status: Standards Track A. Romanow
Expires: January 18, 2013 Cisco Systems
July 17, 2012
Call Flow for CLUE
draft-romanow-clue-call-flow-02
Abstract
This draft shows the CLUE call flow demonstrating the use of CLUE in
SIP. It also provides information about the message and syntax for
CLUE transport establishment and other extensions in SDP. In CLUE
participants act as both providers and consumers. The draft includes
a detailed example of a typical use case which includes both static
and switched captures.
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 January 18, 2013.
Copyright Notice
Copyright (c) 2012 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
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
Hansen, et al. Expires January 18, 2013 [Page 1]
Internet-Draft Call Flow for CLUE July 2012
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 5
4. Transport for carrying CLUE signaling protcol . . . . . . . . 7
4.1. SCTP over DTLS over UDP or SCTP over UDP . . . . . . . . . 7
5. Initial Call Establishment . . . . . . . . . . . . . . . . . . 8
5.1. First offer-answer exchange . . . . . . . . . . . . . . . 8
5.2. RTP-header extension and SDP support for CLUE calls . . . 9
5.2.1. RTP extension header to associate RTP stream with
CLUE capture, CLUE demux id . . . . . . . . . . . . . 10
5.2.2. RTP extension header for audio rendering tag . . . . . 11
5.3. CLUE channel establishment using SDP . . . . . . . . . . . 12
5.4. Bandwidth considerations for CLUE . . . . . . . . . . . . 14
5.4.1. Allocate as-you-go . . . . . . . . . . . . . . . . . . 14
5.4.2. Pre-allocation of bandwidth . . . . . . . . . . . . . 17
5.5. CLUE message exchange . . . . . . . . . . . . . . . . . . 17
5.5.1. Message sequencing . . . . . . . . . . . . . . . . . . 18
5.5.2. Signalling bandwidth allocation . . . . . . . . . . . 20
5.6. Sending and receiving media . . . . . . . . . . . . . . . 20
5.6.1. RTP . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.6.2. RTCP . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.7. Interoperability with non-CLUE systems . . . . . . . . . . 21
5.7.1. Backward compatibility with non-CLUE endpoints . . . . 22
6. Mid-call CLUE messages and feature interactions . . . . . . . 24
6.1. CLUE messages triggered due to change in device
capabilities . . . . . . . . . . . . . . . . . . . . . . . 24
6.2. Closure and Re-establishment of the SCTP channel . . . . . 26
7. Case study: example call flow . . . . . . . . . . . . . . . . 27
8. Security Considerations . . . . . . . . . . . . . . . . . . . 30
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 31
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 31
11.1. Normative References . . . . . . . . . . . . . . . . . . . 31
11.2. Informative References . . . . . . . . . . . . . . . . . . 31
Appendix A. Example call flow messages . . . . . . . . . . . . . 33
A.1. INVITE from Alice . . . . . . . . . . . . . . . . . . . . 33
A.2. 200 OK from Bob . . . . . . . . . . . . . . . . . . . . . 34
A.3. CLUE advertisement A (from Alice) . . . . . . . . . . . . 34
A.4. CLUE advertisement B (from Bob) . . . . . . . . . . . . . 36
A.5. CLUE response A (from Alice) . . . . . . . . . . . . . . . 42
A.6. CLUE response B (from Bob) . . . . . . . . . . . . . . . . 43
Appendix B. Changes From Earlier Versions . . . . . . . . . . . . 43
Hansen, et al. Expires January 18, 2013 [Page 2]
Internet-Draft Call Flow for CLUE July 2012
B.1. Changes From Draft -00 . . . . . . . . . . . . . . . . . . 43
B.2. Changes From Draft -01 . . . . . . . . . . . . . . . . . . 43
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 43
Hansen, et al. Expires January 18, 2013 [Page 3]
Internet-Draft Call Flow for CLUE July 2012
1. Background
The purpose of this draft is to examine the call flow for
implementing the CLUE framework using SIP and other IETF protocols.
Although much of the CLUE Framework [I-D.ietf-clue-framework] is
reasonably well agreed upon in the CLUE WG, in order to develop a
feasible call flow, we had to make assumptions about many aspects of
CLUE that have not yet been decided: what the transport will be, what
the message format will be, etc. While these assumptions are not
definitive final answers, we have tried to make sensible decisions
based on existing drafts and common sense. Perhaps by examining in
more detail how the call flow could be handled some light will be
shed light on some of the proposals.
The following assumptions related to UDP are being made: these are
also stated in [I-D.romanow-clue-sdp-usage]
o For each CLUE media type and content type (audio, video-main, or
video-slides) , there will be at most one corresponding SDP media
stream ("m=" line). Note: video-main and video-slides are both
using SDP "video" media type.
o Multiple media captures of the same CLUE media and content type,
or different encodings of a given media capture will all use the
same SDP media stream, i. e., via RTP multiplexing.
o It is acceptable to use more than one offer/answer exchange to
setup the whole Telepresence session.
o The Telepresence session is established by setting up sets of
unidirectional streams (not bidirectional streams).
Today telepresence endpoints actively negotiate audio and video SDP
media streams using the SDP offer/answer model during call
establishment and during mid-call features, such as hold resume. The
CLUE framework adds additional parameters to a telepresence session.
Each party in the CLUE conference is usually both a provider and a
consumer, whether the conference is point-to-point or multipoint.
The CLUE parameter values for one provider may well not be the same
values for the other provider. Thus each party needs to advertise
its provider encoding parameter values to the other side. This is
not the typical communication model for SDP offer/answer, which is
more often a bidirectional agreement on parameter values.
As specified in the CLUE framework, parties in a telepresence
conference do not negotiate a single value between them; therefore
Offer Answer Model with SDP [RFC3264] is not used for the full
negotiation of all encoding related values. Rather, we propose,
sending CLUE parameter values via a new CLUE signaling protocol which
will be negotiated via SIP. The CLUE messages consist of provider
advertisements and consumer requests. [Edt. We use consumer request
Hansen, et al. Expires January 18, 2013 [Page 4]
Internet-Draft Call Flow for CLUE July 2012
and consumer configuration interchangeably. The framework uses the
term "configuration", we tend to use "request" here because we are
talking about the message usually, rather than the concept.
Hopefully, it will not cause any confusion.]
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119] and
indicate requirement levels for compliant implementations.
3. Solution Overview
A number of aspects of CLUE remain to be fully defined, including
major issues such as the transport mechanism and message structure.
In order to provide illustrative examples, this draft makes a number
of assumptions and guesses about the final format of CLUE. Where
possible an attempt has been made to use existing drafts (such as for
the multiplexing methodology), or similar developments in other
working groups (such as the use of SCTP over UDP as a transport from
RTCWeb). As such, this draft should not be taken as an attempt to
specify such aspects, but merely to illustrate how they would be used
to convey the necessary data: were other decisions to be made on
aspects such as transport, the mechanisms would be different, but the
data needing to be conveyed would remain the same.
We have assumed about the call flow that:
1. SIP is used to establish the telepresence conference, similarly
to using SIP for non-CLUE video conferencing.
2. The media parameters for the call are established using SDP.
3. A new and separate CLUE signaling protocol is used for carrying
CLUE messages.(Investigation of SDP for CLUE
[I-D.romanow-clue-sdp-usage] looked at carrying CLUE messages in
SDP and concluded it was infeasible.)
4. Usage of the CLUE protocol is established through SDP
5. The transport for the CLUE protocol is SCTP over UDP, or SCTP
over DTLS over UDP, following the RTCWeb specification.
6. The transport for CLUE protocol, SCPT over UDT or SCTP over DTLS
over UDP is setup in SDP, as illustrated in the following diagram
and discussed below.
Hansen, et al. Expires January 18, 2013 [Page 5]
Internet-Draft Call Flow for CLUE July 2012
The following illustration Figure 1 shows a high level diagram of a
call flow between a 3 screen endpoint and an MCU, for example. [Edt.
The diagram shows SCTP over UDP, it could also show SCTP over DTLS
over UDP.]
Alice (3-screen Bob (switching
3-camera) MCU)
| |
| INVITE |
+--------------------->|
| 200 OK |
<----------------------+
| ACK |
|---------------------->
| |
| single-stream media |
| <..................> |
| |
+----SCTP over UDP established----+
| ----CLUE Advertisment A---> |
| <---CLUE Advertisment B---- |
| ------ CLUE Request A-----> |
| <----- CLUE Request B-----> |
+---------------------------------+
| |
| multistream media |
| <..................> |
+ +
Figure 1: Call setup overview
The next Section 4 discusses the transport for carrying CLUE
signaling protocol, following the direction that RTCWeb has taken.
Then the telepresence call establishment using SDP is considered in
Section 5, including RTP header extension, initial offer answer
exchange, and bandwidth considerations. Then Section 5.5 describes
CLUE message exchange following the call setup, including provider
advertisements and consumer requests. A more detailed coverage of
sending and receiving media follows. Interoperability with non-clue
implementations is considered in Section 5.7 Then mid-call changes in
provider advertisements and consumer requests are considered in
Section 6. Section 7 describes a case study which includes both
static and dynamic switched captures. Security considerations
follows, and there is an appendix with example call flow messages.
Hansen, et al. Expires January 18, 2013 [Page 6]
Internet-Draft Call Flow for CLUE July 2012
4. Transport for carrying CLUE signaling protcol
This section discusses a feasible choice for the transport of CLUE
signaling protocol. We are not suggesting the decision on transport
be made in this document, but rather we made an assumption based on
the requirements and discussion in [I-D.wenger-clue-transport] and
what RTCWeb has specified. Most of this section gives a brief
overview of the choices made in RTCWeb- SCTP over DTLS over UDP. In
this document we have also included the possibility of SCTP over UDP.
4.1. SCTP over DTLS over UDP or SCTP over UDP
There have been several discussion in the CLUE WG suggesting that the
transport requirements for CLUE and RTCWeb are sufficiently similar
so that CLUE should consider following what RTCWeb has decided. This
section briefly reviews RTCWeb's transport specification relevant for
CLUE.
RTCWeb WG has reached a general consensus on using SCTP Stream
Control Transmission Protocol [RFC4960] encapsulated on DTLS Datagram
Transport Layer Security Version 1.2 [RFC6347] encapsulated on UDP
for handling non-media data types in the context of RTCWeb. The
approach is described in RTCWeb Datagram Connection
[I-D.ietf-rtcweb-data-channel].
The transport protocol stack is illustrated in the diagram below
Figure 2.
+-----------+
|CLUE/RTCWeb|
+-----------+
| SCTP |
+-----------+
| DTLS |
+-----------+
| ICE/UDP |
+-----------+
Figure 2: Protocol layers
The services offered by this stack are described in
[I-D.ietf-rtcweb-data-channel].
The encapsulation of SCTP over DTLS over ICE over UDP provides a
NAT traversal solution together with confidentiality, source
authenticated, integrity protected transfers. This data transport
Hansen, et al. Expires January 18, 2013 [Page 7]
Internet-Draft Call Flow for CLUE July 2012
service operates in parallel to the media transports, and all of
them can eventually share a single transport-layer port number.
SCTP provides multiple streams natively with reliable, unreliable
and partially-reliable delivery modes.
DTLS Encapsulation of SCTP Packets for RTCWEB
[I-D.tuexen-tsvwg-sctp-dtls-encaps] describes the encapsulation of
SCTP by DTLS.
The Stream Control Transmission Protocol (SCTP) is a transport
protocol originally defined to run on top of the network protocols
IPv4 or IPv6. This memo document specifies how SCTP can be used
on top of the Datagram Transport Layer Security (DTLS) protocol.
SCTP over DTLS is used by the RTCWeb protocol suite for
transporting non-media data between browsers.
In addition a third RTCWeb related draft, Stream Control Transmission
Protocol (SCTP)Based Media Transport in the Session Description
Protocol (SDP) [I-D.ietf-mmusic-sctp-sdp] describes in detail how SDP
can handle setting up SCTP and DTLS. (The draft does not consider
SCTP over UDP.)
SCTP (Stream Control Transmission Protocol) is a transport
protocol used to establish associations between two endpoints.
This document describes how to express media transport over SCTP
in SDP (Session Description Protocol). This document defines the
'SCTP', 'SCTP/DTLS' and 'DTLS/SCTP' protocol identifiers for SDP.
We have followed the syntax in this document.
We have followed this syntax here.
5. Initial Call Establishment
This section is not intended to prescribe the flows and messages
precisely as they are shown, but rather illustrates the principles.
5.1. First offer-answer exchange
The flow illustrated below shows Alice calling Bob offering SDP
parameters that are typical of an offer. The new extensions related
to CLUE are highlighted below in Figure 3.
Hansen, et al. Expires January 18, 2013 [Page 8]
Internet-Draft Call Flow for CLUE July 2012
Alice Bob
| |
|(1) INVITE |
| SDP-Offer { |
| session-attributes |
| <<< rtp-header extensions for CLUE >>> *new* |
| m=audio .... |
| m=video .... |
| m=video .... |
| m=application...UDP/BFCP * |
| <<< CLUE transport m-line >>> *new* |
| } |
|---------------------------------------------------------------->|
| |
|(2) 200OK |
| SDP-Answer { |
| session attributes |
| <<< rtp-header extensions for CLUE >>> *new* |
| m=audio .... |
| m=video .... |
| m=video .... |
| m=application...UDP/BFCP * |
| <<< CLUE transport m-line >>> *new* |
|<----------------------------------------------------------------|
| |
Figure 3: First SDP offer answer exchange
In order to support CLUE using SIP several issues need to be
considered during the initial call setup. These include:
1. Extension of the RTP header for telepresence calls. As part of
CLUE usage, two such potential requirements are under
consideration. Refer to sec 5.2.
2. Establishment of CLUE signaling channel using a separate
application m-line. Sec 5.3
3. Bandwidth considerations during initial setup. Sec.5.4
5.2. RTP-header extension and SDP support for CLUE calls
Currently 2 proposals are under consideration for mechanisms that
require using RTP extension headers A General Mechanism for RTP
Header Extensions [RFC5285]. Although neither proposal has been
accepted, we are showing how each would be handled if they are added
to the CLUE framework [I-D.ietf-clue-framework].
The first mechanism that requires an RTP header extension is for
Hansen, et al. Expires January 18, 2013 [Page 9]
Internet-Draft Call Flow for CLUE July 2012
associating RTP streams with CLUE captures as described in RTP Usage
for Telepresence Sessions [I-D.lennox-clue-rtp-usage]. The second
mechanism is using an audio rendering tag to associate audio captures
with video captures as described in
[I-D.romanow-clue-audio-rendering-tag]. Both use session-level SDP
parameters as recommended by [RFC5285].
5.2.1. RTP extension header to associate RTP stream with CLUE capture,
CLUE demux id
Telepresence calls multiplex encoded streams from multiple similar
media sources on a single RTP session for the same media-type/and
content-type. For example, Alice has a 3 camera system but in SDP
she negotiates a single RTP session for main video. How does she
associate these separate RTP streams with the CLUE capture ids to
enable Bob, the receiver, to know where to send the audio and video
streams? How do the RTP streams get routed to the appropriate
decoders and output devices? This is considered in detail in
[I-D.lennox-clue-rtp-usage].
The proposal is to extend the RTP header to embed a unique id in each
RTP packet, referred to here as the CLUE demux id. This requires
negotiating a unique "id" out of band in SDP so that multiple such
extensions could co-exist. This is achieved by using the extmap
extension in SDP as specified in [RFC5285].
The diagram in Figure 5 illustrates the call flow for the identifier
being used to signal the CLUE demux id information in RTP extension
header. In this diagram and subsequent ones, we have used the
following drawing to represent a camera, by a circle, and a screen,
by a square.
o
+--+
| |
+--+
Figure 4: Representation of and endpoint camera and screen
Hansen, et al. Expires January 18, 2013 [Page 10]
Internet-Draft Call Flow for CLUE July 2012
Alice (3-screen Bob (3-screen
3-camera) 3-camera)
o o o o o o
+--+ +--+ +--+ +--+ +--+ +--+
|1 | |2 | |3 | | 1| |2 | |3 |
+--+ +--+ +--+ +--+ +--+ +--+
+ +
| INV - SDP extmap:1 - CLUE demux
+------------------------>|
| 200 OK - SDP extmap:1 - CLUE demux
|<------------------------+
| . . . . . . . . . . . |
| |
| -----------------------\
|/ Main Video - RTP Session
|\_______________________/|
| --------- CLUE demux id
| | ----------- extmap tag
| v v |
| +------+-+-+ |
| | data |3|1|-->|
| +------+-+-+ |
| +-------+-+-+ |
| | data |1|1|--> | RTP Packets
| +-------+-+-+ |
| +-------+-+-+ |
| | data |2|1|--> |
| +-------+-+-+ |
Figure 5: SDP example using extmap id-1
The extmap is a SDP session level attribute in the following example
using extmap-1:
v=0
o=3ss 40471 40471 IN IP4 10.47.197.103
c=IN IP4 10.47.197.103
t=0 0
a=extmap:1 urn:ietf:params:clue:demux
5.2.2. RTP extension header for audio rendering tag
As explained in [I-D.romanow-clue-audio-rendering-tag], to support
directional audio the receiver needs to know where to render audio in
relationship to video captures. In some circumstances the spatial
Hansen, et al. Expires January 18, 2013 [Page 11]
Internet-Draft Call Flow for CLUE July 2012
information is not available in the provider advertisement, so the
association cannot be made in that way. The proposal for these cases
is that the consumer optionally tells the provider an audio tag value
corresponding to each of its chosen video captures, which enables
received audio to be associated with the correct video stream, even
when the set of audible participants changes.
In the example provided below, the packet shows dual header
extensions - one for associating RTP stream with capture as above,
and one for associating audio capture with video capture.
The SDP session level attribute extmap id-3 below depicts the
identifier being used to signal the audio tag field in the RTP
extension header.
a=extmap:3 urn:ietf:params:clue:audiotag
5.3. CLUE channel establishment using SDP
Most importantly, the initial offer/answer negotiates the port and
transport information for establishing a CLUE signaling channel. The
new application m-line details the necessary information. As
explained in Section 4, the CLUE signaling protocol will ride on top
of SCTP transport.
Figure 6 shows an example call flow for establishing an unsecure CLUE
channel.
Alice Bob
| INV m=application 6736 UDP/SCTP/CLUE *
+--------------------->|
| |
| |
| 200 OK m=application 4536 UDP/SCTP/CLUE *
<----------------------+
| |
| |
|CLUE Signaling Channel|
+------------------------------------+
| ............ |
| |
+------------------------------------+
| |
Figure 6: CLUE transport channel establishment
Hansen, et al. Expires January 18, 2013 [Page 12]
Internet-Draft Call Flow for CLUE July 2012
SDP Offer:
INVITE bob@biloxi.net SIP/2.0
...
Content-Length: 1000
v=0
....
m=audio...
...
m=video...
...
m=application 6736 UDP/SCTP/CLUE *
a=setup:actpass
a=connection:new
SDP Answer:
SIP/2.0 200 OK
...
Content-Length: 1000
v=0
....
m=audio...
m=video...
....
m=application 4534 UDP/SCTP/CLUE *
a=setup:active
a=connection:new
The same example encrypted with DTLS shall look as shown in Figure 7.
A fingerprint hash attribute is included at the SDP session level in
order for the other side to authenticate the identity while
exchanging the certificate during the connection setup.
Hansen, et al. Expires January 18, 2013 [Page 13]
Internet-Draft Call Flow for CLUE July 2012
SDP Offer:
a=fingerprint:
SHA-1 64:02:2A:20:92:CD:DB:80:9F:68:0D:EF:AC:99:95:34:89:C6:7D:34
...
m=application 6736 UDP/DTLS/SCTP/CLUE *
a=setup:actpass
a=connection:new
SDP Answer:
a=fingerprint:
SHA-1 4B:AC:B7:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:BA
...
m=application 4534 UDP/DTLS/SCTP/CLUE *
a=setup:passive
a=connection:new
Figure 7: Secure CLUE channel establishment
In an unencrypted call the 'setup' parameter in SDP is used to
negotiate which participant will listen for an incoming SCTP
connection, while the other participant initiates the connection. In
an encrypted call using DTLS the 'setup' parameter negotiates which
participant will establish the DTLS connection (the same participant
then establishes SCTP over the DTLS channel once DTLS has been
established).
5.4. Bandwidth considerations for CLUE
We discuss two models of bandwidth allocation for CLUE telepresence
calls. In the first mechanism bandwidth is allocated as needed
through successive re-INVITEs. This has the advantage of being
bandwidth efficient but may require multiple re-INVITEs. In the
second approach the maximum allowable bandwidth is allocated
initially. This saves on re-INVITEs but may allocate bandwidth not
needed. If desired the participant can-reinvite with a lower
bandwidth.
5.4.1. Allocate as-you-go
The bandwidth initially offered by Alice is set to some default value
(say for a single-screen system). The bandwidth requirement is bound
to change as the call progresses on learning the remote end
capabilities and the selections made thereafter. Any increase in the
usage of bandwidth based on the selected captures will result in the
telepresence endpoint sending out a new re-INVITE requesting the
intermediaries to allocate extra bandwidth from their pool. The call
flow is illustrated in Figure 8.
Hansen, et al. Expires January 18, 2013 [Page 14]
Internet-Draft Call Flow for CLUE July 2012
Alice (3-screen Bob (3-screen
3-camera) 3-camera)
o o o o o o
+--+ +--+ +--+ +--+ +--+ +--+
| | | | | | | | | | | |
+--+ +--+ +--+ +--+ +--+ +--+
| |
| INV (video TIAS bw = 4mb) - Default single stream bw
+--------------------->|
| 200 OK (video TIAS bw = 4mb) - Default single stream bw
<----------------------+
|----------------------> ACK
| CLUE Signaling |
+---------------------------------+
| --------------> Exchange both sides
| <-------------- Provider capabilities
+---------------------------------+
| |
| .................. |
| |
Alice Chooses to view 3 |
Video captures of Bob; |
New bw request = 3*4mb = 12mb |
| |
Bandwidth re-INVITE |
| |
| INV (video TIAS bw = 12mb)
+--------------------->|
| 200 OK (video TIAS bw = 4mb)
|<---------------------+
|----------------------> ACK
| |
| .................. |
| |
+ +
Figure 8: Allocate bandwidth as needed
The advantage of this approach is the usage efficiency, as during the
initial call setup the remote endpoint's capabilities are still
unknown. Also, even after learning the remote end's capabilities
through CLUE, there is no guarantee that Alice shall decide to view
all or a subset of the captures thereafter. So the reserved network
bandwidth is the amount that is currently being used.
The drawback is the potential need for one or more re-INVITEs for re-
negotiating new bandwidth numbers from either side if they choose to
Hansen, et al. Expires January 18, 2013 [Page 15]
Internet-Draft Call Flow for CLUE July 2012
view additional captures or choose captures in additional encoding
formats. Also due to the asynchronous nature of the consumer
requests, the flow is susceptible to glare re-INVITEs.
The glare would be more pronounced in the case after the first CLUE
provider advertisement exchange. This may be due to these systems
being pre-programmed to re-configure themselves immediately after
learning each other's capabilities. Figure 9 illustrates the glare
condition issue.
Alice (3-screen Bob (3-screen
3-camera) 3-camera)
o o o o o o
+--+ +--+ +--+ +--+ +--+ +--+
| | | | | | | | | | | |
+--+ +--+ +--+ +--+ +--+ +--+
| |
| Call Setup (Initial offer/ans)
| . . . . . . . . |
| |
| CLUE - Provider advertisement exchanges
| . . . . . . . . |
| |
| |
Alice chooses Bob chooses
to view 3 captures to view 3 captures
| |
| INV (video bw = 12mb)|
+----------------------> xxxx
| INV (video bw = 12mb)| xx
|<---------------------+ x
| 491 Request Pending | x Glare
|<---------------------+ x
| 491 Request Pending | xx
+--------------------->| xxxx
| . . . . . . . . . |
| |
| INV (video TIAS bw = 12mb)
+--------------------->|
| 200 OK (video TIAS bw = 12mb)
|<---------------------+
| |
Figure 9: Glare condition in allocate bandwidth as needed
Hansen, et al. Expires January 18, 2013 [Page 16]
Internet-Draft Call Flow for CLUE July 2012
5.4.2. Pre-allocation of bandwidth
An alternate method to avoid the need for multiple re-INVITEs to
increase bandwidth is to offer maximum bandwidth size that this
device is capable of handling in the initial offer/answer. The call
flow is illustrated in Figure 10. However this approach risks
unnecessary call failures in the case the network bandwidth is
provisioned and policed.
Alice (3-screen Bob (3-screen
3-camera) 3-camera)
o o o o o o
+--+ +--+ +--+ +--+ +--+ +--+
| | | | | | | | | | | |
+--+ +--+ +--+ +--+ +--+ +--+
| |
| Call Setup (Initial offer/ans negotiated 12 mb
| to begin with)
| . . . . . . . . |
| |
| CLUE - Provider advertisement exchanges
| . . . . . . . . |
| |
| Since each telepresence systems are operating at
| max bandwidth usage, no re-INVITE is required
Figure 10: Maximum bandwidth pre-allocation
Implementations must be able to cope with the remote endpoints
operating in either mode.
5.5. CLUE message exchange
This section describes the call flow for CLUE messages following call
setup.
Following the SIP and SDP call setup, CLUE messages are exchanged.
There are only 2 types of CLUE messages: provider advertisements and
consumer requests.
Each participant in a CLUE telepresence conference, whether an
endpoint or an MCU, is most likely to act as both provider and
consumer, as discussed above. Thus each will send provider
advertisements and receive consumer requests for those
advertisements; and each will also receive provider advertisements
Hansen, et al. Expires January 18, 2013 [Page 17]
Internet-Draft Call Flow for CLUE July 2012
and send consumer requests.
The provider advertisements will consist of the following data
elements:
o captures
o capture scenes
o encoding groups
o encodings
o simultaneous transmission set
The consumer requests will consist of the following data elements:
o captures
o encodings
5.5.1. Message sequencing
In considering the sequencing of messages, either participant could
be first to send a provider advertisement. The next message, sent by
the other participant, could be either a provider advertisement or a
consumer request in response to the provider advertisement. This is
illustrated in the 2 examples below. The first example shows Bob's
provider advertisement sent before he responds to Alice's provider
advertisement. The second example shows Bob sending a consumer
request in response to Alice's provider advertisement before sending
his own provider advertisement.
The important thing to keep in mind is that these messages are sent
asynchronously and can be sent not only at the beginning of a call,
but any time throughout the call when a parameter value has changed.
Figure 11 shows an example of CLUE messages with provider
advertisements from each side following one another.
Hansen, et al. Expires January 18, 2013 [Page 18]
Internet-Draft Call Flow for CLUE July 2012
Alice Bob
| SIP call setup |
| <------------------->|
| |
| CLUE Signaling |
+---------------------------------+
| Provider Advertisement |
| --------------------> |
| Provider Advertisement |
| <-------------------- |
| Consumer Request |
| <-------------------- |
| Consumer Request |
| --------------------> |
+---------------------------------+
| |
| .................. |
Figure 11: Back-to-back provider advertisements
Figure 12 shows an example of CLUE messages with provider
advertisement directly followed by consumer request.
Alice Bob
| SIP call setup |
| <------------------->|
| |
| CLUE Signaling |
+---------------------------------+
| Provider Advertisement |
| --------------------> |
| Consumer Request |
| <-------------------- |
| Provider Advertisement |
| <-------------------- |
| Consumer Request |
| --------------------> |
+---------------------------------+
| |
| .................. |
Figure 12: Provider advertisement followed by consumer request
Hansen, et al. Expires January 18, 2013 [Page 19]
Internet-Draft Call Flow for CLUE July 2012
Appendix A shows example provider advertisement and consumer request
messages related to Section 7. Keep in mind these are not proposals,
just examples using data elements taken from the current versions of
the [I-D.romanow-clue-data-model] and [I-D.ietf-clue-framework].
5.5.2. Signalling bandwidth allocation
Call agents and other intermediaries responsible for bandwidth
allocation may grant the bandwidth requested in the consumer request.
Or, an intermediary may not allow the requested bandwidth. In this
case, a feedback mechanism is desirable so that the receiver can
adjust accordingly. This is a more generic SIP issue and is thus
beyond the scope of this document.
5.6. Sending and receiving media
This section discusses CLUE's use of RTP extension header and RTCP.
5.6.1. RTP
CLUE allows multiple media streams to be multiplexed onto a single
RTP session, to reduce the complexity of negotiating independent
ports for an asymmetric and variable number of media streams, and aid
NAT and SBC traversal [I-D.lennox-clue-rtp-usage]. Demultiplexing
these media streams is achieved via the urn:ietf:params:clue:demux
RTP header extension negotiated in the SIP messages. The provider
MUST include this header extension in all media packets sent due to a
successfully processed CLUE consumer request.
The value of the header extension for a given stream MUST match the
value of the 'CLUE demux id' element for the associated stream in the
consumer request. Figure 13 shows an example of an RTP packet
containing an RTP header extension
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xBE | 0xDE | length=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID=1 | len=3 | CLUE demux id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|CLUE demux id | 0 (pad) | 0 (pad) | 0 (pad) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 13: RTP packet showing extension header for CLUE demux id
Hansen, et al. Expires January 18, 2013 [Page 20]
Internet-Draft Call Flow for CLUE July 2012
See [I-D.lennox-clue-rtp-usage] for the specifics of the
demultiplexing process.
A receiving device which has sent at least one CLUE consumer request
MUST examine RTP packet headers for the presence of this header
extension. If it is not present then the packet should be treated as
part of a single-stream media stream. If the extension header is
present then the value of the CLUE demux id allows the various
multiplexed streams to be differentiated. Packets with a CLUE demux
id that does not correspond to one of the ids sent in the most recent
valid CLUE consumer request MUST be discarded.
5.6.2. RTCP
As described in the preceding session, multiple media streams are
multiplexed onto a single RTP session. This RTP session SHOULD be
matched by a single set of RTCP messages, sent in a conventional
fashion. A device SHOULD send RTCP receiver reports, sender reports,
SDES and other packets as it would in the single-stream case.
However, when multiple media streams are present each RTCP packet
SHOULD contain multiple chunks; each chunk can be used to identify a
specific SSRC and include the information relevant to that media
stream. This allows standard statistics, packet loss indications and
other RTCP metrics to be used. CNAME, as part of the RTCP SDES
message, can be used to indicate synchronization between multiple
multiplexed media streams when they are generated by encoders sharing
a common clock, in the same way it can be used to synchronize streams
received on different ports.
5.7. Interoperability with non-CLUE systems
CLUE support in a remote device is identified by the presence of a
valid SDP media stream advertising the ability to negotiate the SCTP-
based CLUE protocol - absence of this requirement indicates that
either the remote device does not support CLUE, or that a middle box
in the signaling path has suppressed the ability to do so. A device
that receives an SDP offer or answer without a valid media stream
advertising the CLUE protocol MUST fall back to a single-stream call
until such time as new SDP messages are able to negotiate a CLUE
protocol media stream between the devices - see Section 5.7 for
details on interoperability with non-CLUE devices. If both sides
successfully support CLUE then the call flow proceeds as shown in
this draft.
Note that as per Offer Answer Model with SDP [RFC3264], both devices
MUST be prepared to receive media for any media streams they have
advertised as recvonly or sendrecv. The devices SHOULD also begin
sending single-stream media once the initial SDP negotiation is
Hansen, et al. Expires January 18, 2013 [Page 21]
Internet-Draft Call Flow for CLUE July 2012
complete, while the SCTP channel is being set up and before any CLUE
messages are sent or received. This minimizes the time in which a
basic single-stream call is established to match that of a
conventional non-CLUE system, and ensures a baseline level of
interoperability. Once CLUE messages have been received and
processed the call will then be 'upgraded' to multistream.
5.7.1. Backward compatibility with non-CLUE endpoints
One of the requirements of CLUE is that it allows backwards
compatibility with devices that are not CLUE-aware, ensuring that a
call between a CLUEful device and a conventional non-CLUEful SIP will
result in a conventional, single-stream call.
5.7.1.1. Handling of CLUE SDP by conventional SIP devices
The SIP messages sent by CLUEful endpoint are compatible with
conventional SIP compliant devices. Audio and video remain on
seperate ports, which not only allows non-CLUE devices to establish
calls as normal, but allows seperate QoS settings to be applied to
the different media types if desired. All the CLUE-specific changes
are in the form of SDP extensions which must either be ignored (new
attributes) or answered back appropriately indicating their lack of
support (new media line) by the non-CLUE recipient. As such a
compliant SIP device without CLUE support will be able to establish a
conventional audio-video call on receiving a CLUEful INVITE.
5.7.1.2. CLUE Option Tag usage
It may prove useful to explicitly signal CLUE support; the use of a
'clue' option-tag makes the SIP devices explicit about CLUE support.
Endpoints could use this tag to make the registrar aware of their
ability to support CLUE, as shown in Figure 14.
+----------+ REGISTER sip:1.2.3.4 SIP/2.0
| | Supported: clue,... +--------------+
|Registrar |<-------------------------------| CLUE-capable |
| |------------------------------->| Endpoint |
+----------+ SIP/2.0 200 OK +--------------+
Figure 14: CLUE option tag for registration
Further, the option-tag also allows CLUE endpoints to specify that
they do not wish to fall back to single stream behaviour (by
including the 'clue' option-tag in a Require field) in cases where
Hansen, et al. Expires January 18, 2013 [Page 22]
Internet-Draft Call Flow for CLUE July 2012
they contact a non-CLUE endpoint:
INVITE sip:1.2.3.4 SIP/2.0
+--------------+ Require: clue +--------------+
| CLUE-capable |------------------------------->| non-CLUE |
| Endpoint |<-------------------------------| Endpoint |
+--------------+ SIP/2.0 420 Bad Extension +--------------+
Unsupported: clue
Figure 15: CLUE option tag for require
Finally, the option-tag may be used in an OPTIONS message to signal
that a device supports CLUE even without the presence of an SDP, as
show in Figure 16.
+----------+ OPTIONS sip:1.2.3.4 SIP/2.0
| |------------------------------->+--------------+
| Device |------------------------------->| CLUE-capable |
| | SIP/2.0 200 OK | Endpoint |
+----------+ Supported: clue,... +--------------+
Figure 16: CLUE option tag for options
5.7.1.3. Non-compliant devices and usage of CLUE option-tag
There are non-compliant SIP devices which may react badly when
receiving SDP extensions they do not understand, responding with a
400 Bad Request or in some other fashion. While the principal aim of
this document is not to work around devices that do not implement
specified behaviour, there are a number of potential strategies for
dealing with such legacy devices:
1. The calling device may attempt to send a second INVITE without
any CLUE parameters.
2. A back-to-back-user-agent in the call path to the legacy device
may recognise its lack of CLUE support (via static configuration,
lack of a 'Supported: clue' options tag in a REGISTER message or
lack of CLUE parameters in the response to an OPTIONS message)
and strip CLUE parameters from INVITE messages directed to that
device.
Hansen, et al. Expires January 18, 2013 [Page 23]
Internet-Draft Call Flow for CLUE July 2012
6. Mid-call CLUE messages and feature interactions
A provider may send a new advertiesment at any time, and a consumer
may send a new request at any time (once it has received an initial
advertisement). There is not a one-to-one mapping between
advertisements and requests - a consumer may send multiple requests
to a single advertisement. Advertisements contain a sequence number,
while consumer requests contain both a sequence number and a
reference to the sequence number of the advertisement to which they
correspond - the provider can use these to detect and discard
requests relating to a previous, now invalid advertisement.
Consumer re-configuration can occur anytime during the course of a
call. Possible triggers include but are not restricted to:
o New provider advertisement to indicate a changes in captures or
encodings.
o Change in device configuration (such as availability of new
screen) or user selection at the consumer end.
o Invocation of features such as Hold/Resume can potentially alter
the call topology/view.
The bandwidth requirement and need for re-INVITE are based on the
increase or decrease in usage. Implementations can choose an
appropriate bandwidth strategy as discussed previously. However,
they must ensure necessary bandwidth is in place before choosing any
new captures.
6.1. CLUE messages triggered due to change in device capabilities
The following is a mid-call CLUE provider advertisement from Bob
advertising capture-scene with 3 captures as opposed to 2 previously
(could be triggered by turning on the 3rd camera. In order to keep
the call-flow simple we assume both Alice and Bob allocate a large
bandwidth (20Mb). The consumer request is within that bandwidth
boundary. The call flow is shown in Figure 17.
Hansen, et al. Expires January 18, 2013 [Page 24]
Internet-Draft Call Flow for CLUE July 2012
Alice-3 screen,3 camera Bob-3 screen, 2 camera
o o o o o OFF
+--+ +--+ +--+ +--+ +--+ +--+
| | | | | | | | | | | |
+--+ +--+ +--+ +--+ +--+ +--+
| |
| Call Setup (Initial offer/ans negotiated max bw
| of 20Mb from either side to begin)
+-----------------------------------------------------------+
| | CLUE Provider Advertisement Exchange |
| | | |
| |adv{[capt-id 1,enc max-bw=8M][capt-id 2,enc max-bw=8M]}
| |<---------------------+ |First
| | | |CLUE
| |adv{[capt-id 1,enc max-bw=6M][capt-id 2,enc maxbw=4M]Provider
| +--------------------->| |Exchange
| | [capt-id 3,enc max-bw=10M]} |
+-----------------------------------------------------------+
| |
+-----------------------------------------------------------+
| | CLUE Consumer Request Message |
| | | |Initial
| |conf{[capt-id 1,enc max-bw=8M][capt-id 2,enc maxbw=8M]}Req
| +--------------------->| |
| |conf{[capt-id 1,enc max-bw=6M][capt-id 2,enc maxbw=4M]}Note:
| |<---------------------+ |Alice
| | | |has 2
+-----------------------------------------------------------+captures
| | to choose
| . . . . . . . . . . .|
| . . . . . . . . . . .|
| |
| Bob turns On 3rd camera
| o o ON
| +--+ +--+ +--+
| | | | | | |
| +--+ +--+ +--+
|adv{[capt-id 1,enc max-bw=8M][capt-id 2,enc maxbw=8M]Midcall
| | [capt-id 3,enc maxbw=4M]}Provider
|<---------------------+ |adv Bob
| | |
| conf{[capt-id 1,enc max-bw=8M][capt-id 2,enc max-bw=4M]
+--------------------->| [capt-id 3,enc max-bw=8M]}
| | |Conf
| | |msg
| | |Alice 3
| | |captures
Hansen, et al. Expires January 18, 2013 [Page 25]
Internet-Draft Call Flow for CLUE July 2012
Figure 17: Mid-call change in provider advertisement
6.2. Closure and Re-establishment of the SCTP channel
A mid-call SDP offer or response may result in the closure of the
SCTP channel, or a re-establishment of a channel that is either
active or inactive. Reasons for these changes may include an
endpoint going on or coming off hold, a device re-routing media to a
different recipient, or an endpoint no longer wishing to continue to
use multistream functionality. If the SCTP channel is reestablished
it is not safe to assume that the other end of the SCTP channel has
knowledge of the previous state of CLUE messaging - in some cases the
new recipient of the channel may be an entirely new individual.
Depending on the intention of the initiator of hold, the CLUE
connection could be preserved or re-established. For the shared-line
and presence scenarios it is recommended to teardown and re-
establish. If the connection was preserved across hold-resume the
previous CLUE advertisements and configuration state continues to be
valid. The offerer/and or answerer could choose to reuse the
existing connection by setting a=connection:existing. If not the
connection could be re-established by either piggybacking on the same
SDP offer/answer for resume or seperately. The CLUE provider
advertisment and configuration is exchanged all over again for
establishing multistream.
Figure 18 depicts the Hold-Resume in which the CLUE signaling channel
is re-established.
Alice Bob
| SIP call setup |
|<-------------------->|
| |
| CLUE Signaling |
+--------------------------------+
| . . . . . . . . . . . . |
| . . . . . . . . . . . . |
| . . . . . . . . . . . . |
+--------------------------------+
| |
| Multistream RTP established
|<====================>|
| |
| . . . . . . . . . . .|
| |
| INVITE (Hold) |
Hansen, et al. Expires January 18, 2013 [Page 26]
Internet-Draft Call Flow for CLUE July 2012
|<---------------------+
| m=application 0 UDP/DTLS/SCTP/CLUE *
| |
| 200 OK (Hold) |
+--------------------->|
| m=application 0 UDP/DTLS/SCTP/CLUE *
| |
| ACK |
|<---------------------+
<<< CLUE Signaling Channel Destroyed >>>
| |
| |
| INVITE (Resume) |
|<---------------------+
| m=application 6435 UDP/DTLS/SCTP/CLUE *
| a=setup:actpass |
| a=connection:new |
| |
| 200 OK (Resume) |
+--------------------->|
| m=application 2587 UDP/DTLS/SCTP/CLUE *
| a=setup:passive |
| a=connection:new |
| |
<<< CLUE Signaling Channel Established >>>
+----------------------------------+
| | Provider Advertisement |
| +--------------------->| |
| | Consumer Request | |
| |<---------------------+ |
| | Provider Advertisement |
| |<---------------------+ |
| | Consumer Request | |
| +--------------------->| |
+----------------------------------+
| |
|Multistream RTP established
|<====================>|
| |
Figure 18: HOLD/RESUME with re-establish
7. Case study: example call flow
To help illustrate how all the aspects of a multistream call using
CLUE tie together, a complete set of SIP and CLUE message is provided
Hansen, et al. Expires January 18, 2013 [Page 27]
Internet-Draft Call Flow for CLUE July 2012
for a sample call between two participants. In this example one
participant is an endpoint and the other is an MCU. If both
participants were endpoints, the call flow wold be the same although
some of the content may be different.
Alice in this example is a three-screen endpoint, with three cameras.
She is able to send all three camera streams individually, or can
send a single switched video stream (based on the current active
speaker, or most recent speaker if no one in her room is speaking).
Her system also has three microphones, but only advertises a single,
composed audio stream made up of the streams of three microphones
mixed together. Bob, in contrast, is an MCU that switches media
between different participants in a conference. Bob advertises up to
three video streams and three audio streams, with alternate offerings
for one- and two-screen systems. Figure 19 shows an overview of the
call flow.
Alice (3-screen Bob (switching
3-camera) MCU)
| |
| INVITE |
+--------------------->|
| 200 OK |
<----------------------+
| ACK |
|---------------------->
| |
| single-stream media |
| <..................> |
| |
+----SCTP over UDP established----+
| ----Advertisement A---> |
| <---Advertisement B---- |
| ------ Request A-----> |
| <----- Request B-----> |
+---------------------------------+
| |
| multistream media |
| <..................> |
+ +
Figure 19: Example call flow
The flow begins with Alice sending an INVITE to Bob (Appendix A.1.)
The SDP includes an audio stream, offering AAC and G.711(u), and a
video stream offering H264. Alice is limited to receiving 6M of
Hansen, et al. Expires January 18, 2013 [Page 28]
Internet-Draft Call Flow for CLUE July 2012
bandwidth. Alice also includes a media line for CLUE over SCTP over
UDP (for simplicity in this example the stream is unencrypted). The
attributes for the stream show that this is a new connection, and
that Alice is willing to be either active or passive with respect to
establishment of the media session. Finally, Alice includes an SDP
'extmap' parameter, advertising that she understands the multiplex id
RTP header extension, and that Bob should use an ID of 1 to identify
such extensions; this parameter is included at the session level, as
it applies to both audio and video media streams.
Bob responds with a 200 OK (Appendix A.2. - any prior 1xx messages
have been elided for brevity). The SDP also includes an audio stream
supporting AAC and G.711(u) and a video stream offering H264. Bob is
able to receive up to 10M of media. Bob includes a media line for
CLUE over SCTP over UDP that matches Alice's; the 'connection:new'
attribute corresponds to hers, and Bob chooses to be passive in
establishment of the stream. Bob also includes an SDP 'extmap'
parameter, in this case specifying that Alice should send multiplexed
media with an RTP extension header with an ID of 3.
Alice sends an ACK, not included in the appendix.
Having completed the initial SIP call setup, Alice and Bob begin
sending H264 video and AAC audio in a conventional single-stream
fashion. Further, Alice initiates a STCP connection to Bob on port
3782, encapsulated in UDP, as was negotiated in the SDP exchange.
With the CLUE transport established both sides are free to begin
sending CLUE messages. The call flow shows Alice sending an
advertisement before Bob, but in practice there is no correlation
between the sending of these messages; Bob may send his message
first, or both may be sent simultaneously. Both sides of the CLUE
message exchange are independent of one another.
Alice's CLUE advertisement includes four video captures (Appendix
A.3.) The first three are static captures that correspond to the
three cameras of the system, while the final one is a switched
capture to show the current active speaker. The static captures give
the physical coordinates of the area of capture, in millimetres,
while the switched capture does not include an area of capture.
There is a single, mixed audio capture, again with no area of
capture. The entries for the capture scene allow the recipient to
understand which captures provide 'equivalent' views. In this case
it illustrates that to get a 'complete' view of the scene the
recipient should subscribe to either captures 1, 2 and 3, or to
capture 4. Finally, the information in the encoding groups shows
that while Alice can supply any given video stream at up to 4M, she
can only supply a total of 6M of video.
Hansen, et al. Expires January 18, 2013 [Page 29]
Internet-Draft Call Flow for CLUE July 2012
In contrast, as a switching MCU Bob has no static captures (Appendix
A.4.) Instead, Bob wants to be able to supply one-, two- and three-
screen switched capture views. He does this by advertising six video
captures with non-physical area of capture coordinates; these
coordinates are used to illustrate the fraction of the overall scene
a capture represents (and how to render the captures to ensure their
adjacency is correct and no multi-screen systems are rendered back-
to-front). A similar approach is taken for audio. This is
reinforced in the entries, which illustrate the captures to which a
recipient should subscribe to receive a 'correct' view of the
conference. The encoding information supplied by Bob shows that he
is able to supply up to three video streams, with the only encoding
maximum that of the 10M advertised in his SDP for the stream total.
Having received Bob's CLUE advertisement, Alice then sends her
consumer request (Appendix A.5.) As she is a three-screen system she
requests video captures 4, 5 and 6, which correspond to the switched
captures for a three-screen system. She includes a 'max-bandwidth'
element, limiting each stream to 2M. Having two speakers she
subscribes to audio captures 8 and 9, which correspond to the two-
channel audio advertised by Bob.
Having received Alice's CLUE advertisement, Bob sends his initial
consumer request (Appendix A.6.) Bob's request is straightforward,
requesting the three static camera streams and the mixed audio
stream, and adds no additional encoder limitations beyond those
already imposed by his SDP.
Both Bob and Alice now send multistream audio and video, the RTP
packets including the multiplex extension header with CLUE demux ids
specified in the consumer requests. Note again that, though the
example illustrates Alice and Bob sending their CLUE messages in
order, this is not a requirement; Alice might send her advertisement,
receive Bob's request and begin sending multistream media before ever
receiving Bob's advertisement. At any time Alice or Bob may send
further CLUE advertisement or request messages, which invalidate
previous messages. They may also send SIP messages to update or
alter media parameters.
8. Security Considerations
This document provides an overview of the call-flow of a CLUE
multistream telepresence call, and hence is not an appropriate place
to definitively identify and deal with security considerations.
However, it should be clear from the above that CLUE does pose a
number of security challenges: for example, the transport conveying
CLUE messages must be encryptable in a fashion that limits the
Hansen, et al. Expires January 18, 2013 [Page 30]
Internet-Draft Call Flow for CLUE July 2012
potential for man-in-the-middle attacks, while the multiplexing of
RTP streams must not interfere with the ability to secure these
streams against interception or spoofing. These security
considerations will be addressed as part of the specification of
these aspects of CLUE, but it is believed that well-understood
methods (such as DTLS for the CLUE protocol and SRTP for the media)
can be used to secure these channels.
9. Acknowledgements
10. IANA Considerations
This draft includes examples of a number of features which, if agreed
on by consensus, would have IANA considerations as part of their
specification. The examples used here are purely for illustrative
purposes, and do not represent the final format of these features; as
such this draft has no IANA considerations.
11. References
11.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
June 2002.
[RFC4960] Stewart, R., "Stream Control Transmission Protocol",
RFC 4960, September 2007.
[RFC5285] Singer, D. and H. Desineni, "A General Mechanism for RTP
Header Extensions", RFC 5285, July 2008.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, January 2012.
11.2. Informative References
[I-D.ietf-clue-framework]
Romanow, A., Duckworth, M., Pepperell, A., and B. Baldino,
"Framework for Telepresence Multi-Streams",
draft-ietf-clue-framework-06 (work in progress),
July 2012.
Hansen, et al. Expires January 18, 2013 [Page 31]
Internet-Draft Call Flow for CLUE July 2012
[I-D.ietf-mmusic-sctp-sdp]
Loreto, S. and G. Camarillo, "Stream Control Transmission
Protocol (SCTP)-Based Media Transport in the Session
Description Protocol (SDP)", draft-ietf-mmusic-sctp-sdp-01
(work in progress), March 2012.
[I-D.ietf-rtcweb-data-channel]
Jesup, R., Loreto, S., and M. Tuexen, "RTCWeb Datagram
Connection", draft-ietf-rtcweb-data-channel-00 (work in
progress), March 2012.
[I-D.lennox-clue-rtp-usage]
Lennox, J., Witty, P., and A. Romanow, "Real-Time
Transport Protocol (RTP) Usage for Telepresence Sessions",
draft-lennox-clue-rtp-usage-04 (work in progress),
June 2012.
[I-D.romanow-clue-audio-rendering-tag]
Romanow, A., Hansen, R., Pepperell, A., and B. Baldino,
"The need for audio rendering tag mechanism in the CLUE
Framework", draft-romanow-clue-audio-rendering-tag-00
(work in progress), May 2012.
[I-D.romanow-clue-data-model]
Romanow, A. and A. Pepperell, "Data model for the CLUE
Framework", draft-romanow-clue-data-model-01 (work in
progress), June 2012.
[I-D.romanow-clue-sdp-usage]
Romanow, A., Andreasen, F., and A. Krishna, "Investigation
of Session Description Protocol (SDP) Usage for
ControLling mUltiple streams for tElepresence (CLUE)",
draft-romanow-clue-sdp-usage-01 (work in progress),
March 2012.
[I-D.tuexen-tsvwg-sctp-dtls-encaps]
Jesup, R., Loreto, S., Stewart, R., and M. Tuexen, "DTLS
Encapsulation of SCTP Packets for RTCWEB",
draft-tuexen-tsvwg-sctp-dtls-encaps-01 (work in progress),
July 2012.
[I-D.wenger-clue-transport]
Wenger, S., Eubanks, M., Even, R., and G. Camarillo,
"Transport Options for Clue",
draft-wenger-clue-transport-02 (work in progress),
March 2012.
Hansen, et al. Expires January 18, 2013 [Page 32]
Internet-Draft Call Flow for CLUE July 2012
Appendix A. Example call flow messages
These message examples are entirely illustrative - they are not meant
as a proposal for messages. As much as possible they follow the
nomenclature in the [I-D.ietf-clue-framework]. However, there are a
few elements in the messages which are not in the framework, such as
"mixed" for audio, and sequence numbers which will be necessary in
any independent signaling protocol. [Edt. Hopefully, these few
additions will not be distracting from the benefit of an example.]
A.1. INVITE from Alice
INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP 10.47.197.7:5060;branch=z9hG4bK7251784nf
Call-ID: 3ebf09e73b83408f@10.47.197.7
CSeq: 1 INVITE
Contact: <sip:alice@example.com>
From: "Alice" <sip:alice@example.com>;tag=6d1e0bf6d948f0b8
To: <sip:bob@example.com>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 525
v=0
o=alice 1 3 IN IP4 10.47.197.7
s=-
c=IN IP4 10.47.197.7
b=AS:6000
t=0 0
a=extmap:1 urn:ietf:params:clue:demux
m=audio 1000 RTP/AVP 101 0
b=TIAS:64000
a=rtpmap:101 MP4A-LATM/90000
a=fmtp:101 profile-level-id=25;object=23;bitrate=64000
a=rtpmap:0 PCMU/8000
a=sendrecv
m=video 1002 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42e016;max-mbps=35000;max-fs=3600
a=sendrecv
m=application 1004 UDP/SCTP/CLUE *
a=setup:actpass
a=connection:new
Hansen, et al. Expires January 18, 2013 [Page 33]
Internet-Draft Call Flow for CLUE July 2012
A.2. 200 OK from Bob
SIP/2.0 200 OK
Via: SIP/2.0/TCP 10.47.197.7:5060;branch=z9hG4bK7251784nf
Call-ID: 3ebf09e73b83408f@10.47.197.7
CSeq: 1 INVITE
From: "Alice" <sip:alice@example.com>;tag=6d1e0bf6d948f0b8
To: <sip:bob@example.com>;tag=b91d0ea4
Contact: <sip:bob@example.com>;isfocus
Content-Type: application/sdp
Content-Length: 474
v=0
o=bob 45727 45727 IN IP4 10.47.196.161
s=-
c=IN IP4 10.47.196.161
b=AS:10000
t=0 0
a=extmap:3 urn:ietf:params:clue:demux
m=audio 3778 RTP/AVP 101 0
a=rtpmap:101 MP4A-LATM/90000
a=fmtp:101 profile-level-id=25;object=23;bitrate=64000
a=sendrecv
m=video 3780 RTP/AVP 98 99 34 31
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42e016;max-mbps=244800;max-fs=8160
a=sendrecv
m=application 3782 UDP/SCTP/CLUE *
a=setup:passive
a=connection:new
A.3. CLUE advertisement A (from Alice)
<advertisement sequence='100'>
<capture-scene id='1'>
<spatial-description>
<scale>millimeters</scale>
</spatial-description>
<capture id='1'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<spatial-description>
<point-of-capture>
<point x='0' y='0' z='0'/>
Hansen, et al. Expires January 18, 2013 [Page 34]
Internet-Draft Call Flow for CLUE July 2012
</point-of-capture>
<capture-area>
<point x='-1000' y='0' z='3000'/>
<point x='1000' y='-1125' z='3000'/>
<point x='-1000' y='-1125' z='3000'/>
<point x='1000' y='0' z='3000'/>
</capture-area>
</spatial-description>
</capture>
<capture id='2'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<spatial-description>
<point-of-capture>
<point x='0' y='0' z='0'/>
</point-of-capture>
<capture-area>
<point x='1000' y='0' z='3000'/>
<point x='2600' y='-1125' z='1800'/>
<point x='1000' y='-1125' z='3000'/>
<point x='2600' y='0' z='1800'/>
</capture-area>
</spatial-description>
</capture>
<capture id='3'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<spatial-description>
<point-of-capture>
<point x='0' y='0' z='0'/>
</point-of-capture>
<capture-area>
<point x='-1000' y='0' z='3000'/>
<point x='-2600' y='-1125' z='1800'/>
<point x='-1000' y='-1125' z='3000'/>
<point x='-2600' y='0' z='1800'/>
</capture-area>
</spatial-description>
</capture>
<capture id='4'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
</capture>
<capture id='5'>
Hansen, et al. Expires January 18, 2013 [Page 35]
Internet-Draft Call Flow for CLUE July 2012
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<mixed>true</mixed>
</capture>
<entries>
<entry>
<capture id='1' />
<capture id='2' />
<capture id='3' />
</entry>
<entry>
<capture id='4' />
</entry>
<entry>
<capture id='5' />
</entry>
</entries>
</capture-scene>
<simultaneous-transmission-set />
<encoding-group id='1'>
<max-bandwidth>6000000</max-bandwidth>
<encoding id='1'>
<max-bandwidth>4000000</max-bandwidth>
</encoding>
<encoding id='2'>
<max-bandwidth>4000000</max-bandwidth>
</encoding>
<encoding id='3'>
<max-bandwidth>4000000</max-bandwidth>
</encoding>
</encoding-group>
<encoding-group id='2'>
<encoding id='4'>
<max-bandwidth>64000</max-bandwidth>
</encoding>
</encoding-group>
</advertisement>
A.4. CLUE advertisement B (from Bob)
<advertisement sequence='1'>
<capture-scene id='1'>
<spatial-description>
<scale>No Scale</scale>
<scene-area>
Hansen, et al. Expires January 18, 2013 [Page 36]
Internet-Draft Call Flow for CLUE July 2012
<point x='0' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</scene-area>
</spatial-description>
<capture id='1'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='2'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0' y='0' z='0'/>
<point x='0.5' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='0.5' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='3'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0.5' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0.5' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
Hansen, et al. Expires January 18, 2013 [Page 37]
Internet-Draft Call Flow for CLUE July 2012
<capture id='4'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0' y='0' z='0'/>
<point x='0.33' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='0.33' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='5'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0.33' y='0' z='0'/>
<point x='0.67' y='1' z='0'/>
<point x='0.33' y='1' z='0'/>
<point x='0.67' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='6'>
<media-type>video</media-type>
<content-type>main</content-type>
<encoding-group-id>1</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0.67' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0.67' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='7'>
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<switched>true</switched>
<spatial-description>
Hansen, et al. Expires January 18, 2013 [Page 38]
Internet-Draft Call Flow for CLUE July 2012
<capture-area>
<point x='0' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='8'>
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0' y='0' z='0'/>
<point x='0.5' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='0.5' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='9'>
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0.5' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0.5' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='10'>
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0' y='0' z='0'/>
<point x='0.33' y='1' z='0'/>
<point x='0' y='1' z='0'/>
<point x='0.33' y='0' z='0'/>
</capture-area>
Hansen, et al. Expires January 18, 2013 [Page 39]
Internet-Draft Call Flow for CLUE July 2012
</spatial-description>
</capture>
<capture id='11'>
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0.33' y='0' z='0'/>
<point x='0.67' y='1' z='0'/>
<point x='0.33' y='1' z='0'/>
<point x='0.67' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<capture id='12'>
<media-type>audio</media-type>
<content-type>main</content-type>
<encoding-group-id>2</encoding-group-id>
<switched>true</switched>
<spatial-description>
<capture-area>
<point x='0.67' y='0' z='0'/>
<point x='1' y='1' z='0'/>
<point x='0.67' y='1' z='0'/>
<point x='1' y='0' z='0'/>
</capture-area>
</spatial-description>
</capture>
<entries>
<entry>
<capture id='1' />
</entry>
<entry>
<capture id='2' />
<capture id='3' />
</entry>
<entry>
<capture id='4' />
<capture id='5' />
<capture id='6' />
</entry>
<entry>
<capture id='7' />
</entry>
<entry>
<capture id='8' />
Hansen, et al. Expires January 18, 2013 [Page 40]
Internet-Draft Call Flow for CLUE July 2012
<capture id='9' />
</entry>
<entry>
<capture id='10' />
<capture id='11' />
<capture id='12' />
</entry>
</entries>
</capture-scene>
<simultaneous-transmission-set />
<encoding-group id='1'>
<encoding id='1' />
<encoding id='2' />
<encoding id='3' />
</encoding-group>
<encoding-group id='2'>
<encoding id='1' />
<encoding id='2' />
<encoding id='3' />
</encoding-group>
</advertisement>
Hansen, et al. Expires January 18, 2013 [Page 41]
Internet-Draft Call Flow for CLUE July 2012
A.5. CLUE response A (from Alice)
<configure sequence='10' advertise-sequence='1'>
<capture id='4'>
<multiplex-id>11</multiplex-id>
<encoding-id>1</encoding-id>
<max-bandwidth>2000000</max-bandwidth>
</capture>
<capture id='5'>
<multiplex-id>22</multiplex-id>
<encoding-id>2</encoding-id>
<max-bandwidth>2000000</max-bandwidth>
</capture>
<capture id='6'>
<multiplex-id>44</multiplex-id>
<encoding-id>3</encoding-id>
<max-bandwidth>2000000</max-bandwidth>
</capture>
<capture id='8'>
<multiplex-id>111</multiplex-id>
<encoding-id>1</encoding-id>
</capture>
<capture id='9'>
<multiplex-id>222</multiplex-id>
<encoding-id>2</encoding-id>
</capture>
</configure>
Hansen, et al. Expires January 18, 2013 [Page 42]
Internet-Draft Call Flow for CLUE July 2012
A.6. CLUE response B (from Bob)
<configure sequence='1' advertise-sequence='100'>
<capture id='1'>
<multiplex-id>1</multiplex-id>
<encoding-id>1</encoding-id>
</capture>
<capture id='2'>
<multiplex-id>2</multiplex-id>
<encoding-id>2</encoding-id>
</capture>
<capture id='3'>
<multiplex-id>3</multiplex-id>
<encoding-id>3</encoding-id>
</capture>
<capture id='5'>
<multiplex-id>1</multiplex-id>
<encoding-id>4</encoding-id>
</capture>
</configure>
Appendix B. Changes From Earlier Versions
Note to the RFC-Editor: please remove this section prior to
publication as an RFC.
B.1. Changes From Draft -00
o Editorial changes including proper references.
B.2. Changes From Draft -01
o More editorial changes.
o Edited mid-call messages and feature interactions section.
Introduced option tags.
o Cleaned up discussion of tags in RTP
Hansen, et al. Expires January 18, 2013 [Page 43]
Internet-Draft Call Flow for CLUE July 2012
Authors' Addresses
Robert Hansen
Cisco Systems
Langley,
UK
Email: rohanse2@cisco.com
Arun Krishna
Cisco Systems
San Jose, CA
USA
Email: arukrish@cisco.com
Allyn Romanow
Cisco Systems
San Jose, CA 95134
USA
Email: allyn@cisco.com
Hansen, et al. Expires January 18, 2013 [Page 44]