rtcweb K. Li
Internet-Draft Huawei Technologies
Intended status: Standards Track July 30, 2012
Expires: January 31, 2013
RTCWeb JSEP XMPP/Jingle Mapping
draft-li-rtcweb-jsep-xmpp-mapping-00
Abstract
This document proposes mapping message representations between RTCWeb
Javascript Session Establishment Protocol(JSEP) scheme and XMPP/
Jingle [XEP-0166] messaging scheme. Such a signaling mapping is
intended to enable Javascript to use XMPP/Jingle to establish a
session between two RTCWeb enabled browsers.
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 31, 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
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Li Expires January 31, 2013 [Page 1]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Media Setup Overview . . . . . . . . . . . . . . . . . . . 3
2.1. Initiating the Session . . . . . . . . . . . . . . . . . . 4
2.2. Exchange the ICE . . . . . . . . . . . . . . . . . . . . . 4
2.2.1. Transport Information . . . . . . . . . . . . . . . . . . . 4
2.3. Receiving the Session . . . . . . . . . . . . . . . . . . . 5
2.3.1. Accept the Session . . . . . . . . . . . . . . . . . . . . 5
2.3.2. Terminate the Session . . . . . . . . . . . . . . . . . . . 5
2.4. Updates to the Session . . . . . . . . . . . . . . . . . . 5
2.4.1. Add Media . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.2. Modify Media . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.3. Remove Media . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.4. Accept Media . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.5. Reject Media . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.6. Description Information . . . . . . . . . . . . . . . . . . 6
2.4.7. Result . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.8. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5. Other Actions . . . . . . . . . . . . . . . . . . . . . . . 6
3. Example Message Flows . . . . . . . . . . . . . . . . . . . 6
3.1. Exchange Candidates . . . . . . . . . . . . . . . . . . . . 6
3.2. Add Contents . . . . . . . . . . . . . . . . . . . . . . . 7
3.3. Exchange Description Information . . . . . . . . . . . . . 8
4. Security Considerations . . . . . . . . . . . . . . . . . . 9
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . 9
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . 9
7. Normative References . . . . . . . . . . . . . . . . . . . 9
Author's Address . . . . . . . . . . . . . . . . . . . . . 9
Li Expires January 31, 2013 [Page 2]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
1. Introduction
In draft [I-D.ietf-rtcweb-jsep], it is mentioned that there are
several options for the signalling mechanisms: ROAP, SIP or XMPP/
Jingle.
This document focuses on XMPP/Jingle and tries to explain how to use
JSEP and XMPP/Jingle to exchange session descriptions.
1.1. 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 [RFC2119].
2. Media Setup Overview
The example here shows a typical call setup using the JSEP model. We
assume the following architecture in this example, where UA is
synonymous with "browser", and JS is synonymous with "web
application".
In Figure 1, it shows the overall mapping architecture.
Li Expires January 31, 2013 [Page 3]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
+----------------------+
| Web |
| |
| Server |
+----------------------+
/ \
/ \
Jingle / \ Jingle
/ \
/ \
/ \
+-------------+ +--------------+
| Web | | Web |
| Application | | Application |
+ ----------- + + ------------ +
^ ^
| SDP | SDP
| |
V (JSEP) V (JSEP)
+-------------+ +--------------+
| Caller | | Callee |
| | <====== Media =======> | |
| Browser | | Browser |
+-------------+ +--------------+
Figure 1: JSEP-XMPP/Jingle Mapping Architecture
2.1. Initiating the Session
To initiate a session, the Caller can send the offer to the Callee by
using Jingle "session-initiate" action.
CallerJS->CalleeJS: .
2.2. Exchange the ICE
2.2.1. Transport Information
To perform the ICE process, the Caller can exchange the ICE
candidates with the Callee by using Jingle "transport-info" action.
CallerJS->CalleeJS: .
CalleeJS->CallerJS: .
Li Expires January 31, 2013 [Page 4]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
2.3. Receiving the Session
2.3.1. Accept the Session
If the Callee accepts a session, it can send back the answer by using
Jingle "session-accept" action.
CalleeJS->CallerJS: .
2.3.2. Terminate the Session
To terminate a session, the Caller can send the offer to the Callee
by using Jingle "session-terminate" action.
CallerJS->CalleeJS: .
2.4. Updates to the Session
2.4.1. Add Media
To add media (e.g.video) to an existing session, the Caller can use
Jingle "content-add" action.
CallerJS->CalleeJS: .
2.4.2. Modify Media
To modify media (e.g.change audio to video) to an existing session,
the Caller can use Jingle "content-modify" action.
CallerJS->CalleeJS: .
2.4.3. Remove Media
To remove media (e.g.video) to an existing session, the Caller can
use Jingle "content-remove" action.
CallerJS->CalleeJS: .
2.4.4. Accept Media
If the Callee accepts the "content-add" action to an existing session
from the Caller, Callee can send back answer by using Jingle
"content-accept" action.
CalleeJS->CallerJS: .
Li Expires January 31, 2013 [Page 5]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
2.4.5. Reject Media
If the Callee rejects the "content-add" action to an existing session
from the Caller, Callee can send back answer by using Jingle
"content-reject" action.
CalleeJS->CallerJS: .
2.4.6. Description Information
To send informational hints about parameters related to an existing
session, for example, add new video sources to a call that already
has video, the Caller can indicate that by using Jingle "description-
info" action.
CallerJS->CalleeJS: .
2.4.7. Result
To acknowledge the description information to an existing session
from the Caller, Callee can send back answer by using IQ stanza of
"result" type. See [RFC6120].
CalleeJS->CallerJS: .
2.4.8. Error
If there are errors occurred during an existing session, the Callee
can send back answer by using IQ stanza of "error" type. See
[RFC6120].
CalleeJS->CallerJS: .
2.5. Other Actions
TBD 1: do we have usage for the following actions: "security-info",
"session-info"?
TBD 2: do we need to redefine a transport method? If yes, we can use
"transport-replace", "transport-accept", "transport-reject".
3. Example Message Flows
3.1. Exchange Candidates
In Figure 2, CallerJS uses Jingle "session-initiate" action to
initiate a session with CalleeJS, and uses Jingle "transport-info" to
Li Expires January 31, 2013 [Page 6]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
exchange ICE candidates with CalleeJS. Then CalleeJS accepts the
session using Jingle "session-accept" action. After the media
session, CallerJS uses "session-terminate" action to terminate the
session, and CalleeJS acknowledges with IQ stanza of "result" type.
Caller JS Callee JS
| |
| |
|-------------------------------------->|
| |
| |
|-------------------------------------->|
| |
| |
|<--------------------------------------|
| |
| |
|<--------------------------------------|
| |
| Media Session |
|<=====================================>|
| |
| |
|-------------------------------------->|
| |
| |
|<--------------------------------------|
| |
Figure 2: Exchange Candidates
Message details go here...
3.2. Add Contents
In Figure 3, CallerJS uses Jingle "content-add" action to add video
media to an existing session. CalleeJS accepts that by using Jingle
"content-accept" action. For simplicity, candidate exchange is not
shown.
Li Expires January 31, 2013 [Page 7]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
Caller JS Callee JS
| |
| |
|-------------------------------------->|
| |
| |
|<--------------------------------------|
| |
| Media Session |
|<=====================================>|
| |
Figure 3: Add Contents
Message details go here...
3.3. Exchange Description Information
In Figure 4, CallerJS uses Jingle "description-info" action to add
new video sources at the same time to a call that already has video.
CalleeJS also uses Jingle "description-info" action to indicate the
new sources to the remote side. After that, they uses IQ stanza of
"result" type to acknowledge each other.
Caller JS Callee JS
| |
| |
|-------------------------------------->|
| |
| |
|<--------------------------------------|
| |
| |
|-------------------------------------->|
| |
| |
|<--------------------------------------|
| |
| Media Session |
|<=====================================>|
| |
Figure 4: Exchange Description Information
Message details go here...
Li Expires January 31, 2013 [Page 8]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
4. Security Considerations
TBD.
5. IANA Considerations
This document requires no actions from IANA.
6. Acknowledgements
The author would like to thank Kiran Kumar and Bert greevenbosch for
the reviews and feedbacks.
7. Normative References
[I-D.ietf-rtcweb-jsep]
Uberti, J. and C. Jennings, "Javascript Session
Establishment Protocol", draft-ietf-rtcweb-jsep-01 (work
in progress), June 2012.
[I-D.jennings-rtcweb-signaling]
Jennings, C., Rosenberg, J., and R. Jesup, "RTCWeb Offer/
Answer Protocol (ROAP)",
draft-jennings-rtcweb-signaling-01 (work in progress),
October 2011.
[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.
[RFC6120] Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Core", RFC 6120, March 2011.
[XEP-0166]
XMPP Standards Foundation, "Jingle", Dec 2009.
Li Expires January 31, 2013 [Page 9]
Internet-Draft RTCWeb-JSEP-XMPP-Mapping July 2012
Author's Address
Kepeng Li
Huawei Technologies
Huawei Base, Bantian, Longgang District
Shenzhen, Guangdong 518129
P. R. China
Phone: +86-755-28971807
Email: likepeng@huawei.com
Li Expires January 31, 2013 [Page 10]