Skip to main content

RTCWeb JSEP XMPP/Jingle Mapping
draft-li-rtcweb-jsep-xmpp-mapping-00

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Expired".
Author Kepeng Li
Last updated 2012-07-30
RFC stream (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-li-rtcweb-jsep-xmpp-mapping-00
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: <jingle action="session-initiate"/> .

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: <jingle action="transport-info"/>.

   CalleeJS->CallerJS: <jingle action="transport-info"/>.

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: <jingle action="session-accept"/>.

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: <jingle action="session-terminate"/>.

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: <jingle action="content-add"/>.

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: <jingle action="content-modify"/>.

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: <jingle action="content-remove"/>.

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: <jingle action="content-accept"/>.

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: <jingle action="content-reject"/>.

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: <jingle action="description-info"/>.

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: <iq type="result"/>.

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: <iq type="error"/>.

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
                     |                                       |
                     |  <jingle action="session-initiate"/>  |
                     |-------------------------------------->|
                     |                                       |
                     |  <jingle action="transport-info"/>    |
                     |-------------------------------------->|
                     |                                       |
                     |  <jingle action="transport-info"/>    |
                     |<--------------------------------------|
                     |                                       |
                     |  <jingle action="session-accept"/>    |
                     |<--------------------------------------|
                     |                                       |
                     |           Media Session               |
                     |<=====================================>|
                     |                                       |
                     |  <jingle action="session-terminate"/> |
                     |-------------------------------------->|
                     |                                       |
                     |        <iq type="result"/>            |
                     |<--------------------------------------|
                     |                                       |

                       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
                     |                                       |
                     |  <jingle action="content-add"/>       |
                     |-------------------------------------->|
                     |                                       |
                     |  <jingle action="content-accept"/>    |
                     |<--------------------------------------|
                     |                                       |
                     |           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
                     |                                       |
                     |  <jingle action="description-info"/>  |
                     |-------------------------------------->|
                     |                                       |
                     |  <jingle action="description-info"/>  |
                     |<--------------------------------------|
                     |                                       |
                     |          <iq type="result"/>          |
                     |-------------------------------------->|
                     |                                       |
                     |          <iq type="result"/>          |
                     |<--------------------------------------|
                     |                                       |
                     |           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]