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]