Internet DRAFT - draft-marcon-rtcweb-data-channel-management

draft-marcon-rtcweb-data-channel-management






RTCWeb                                                         J. Marcon
Internet-Draft                                            Alcatel-Lucent
Intended status: Informational                         February 19, 2013
Expires: August 23, 2013


                     RTCWeb data channel management
             draft-marcon-rtcweb-data-channel-management-00

Abstract

   The Real-Time Communication in WEB-browsers (RTCWeb) working group is
   charged to provide protocols to support direct interactive rich
   communication using audio, video, and data between two peers' web-
   browsers.  For the support of data communication, the RTCWeb working
   group has in particular defined the concept of bi-directional data
   channels over SCTP.  How to transport application messages on these
   data channels seems straightforward (i.e. they can be carried as SCTP
   user messages), however it is yet to be decided how to establish and
   manage these data channels.  This document specifies a method for
   this, which relies first on a lightweight and scalable out-of-band
   negotiation of data channel configurations (within the SDP offer/
   answer exchange) and second on the signaling of the configuration in
   use in the SCTP user message itself.  Once these configurations are
   negotiated, further creations of data channels can occur purely in-
   band by simply sending user messages, which avoids to define a new
   in-band data channel protocol.

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 August 23, 2013.

Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the



Marcon                   Expires August 23, 2013                [Page 1]

Internet-Draft           RTCWeb data management            February 2013


   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.


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   5.  Data channel configuration and message properties  . . . . . .  6
   6.  Procedures . . . . . . . . . . . . . . . . . . . . . . . . . .  7
     6.1.  Initialization . . . . . . . . . . . . . . . . . . . . . .  7
     6.2.  Opening a data channel out-of-band . . . . . . . . . . . .  8
     6.3.  Opening a data channel in-band . . . . . . . . . . . . . .  9
     6.4.  Closing a data channel . . . . . . . . . . . . . . . . . . 10
     6.5.  Sending and Receiving Data . . . . . . . . . . . . . . . . 10
     6.6.  Out-of-band signaling  . . . . . . . . . . . . . . . . . . 12
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 13
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 13
   9.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 13
   10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
     10.1. Normative References . . . . . . . . . . . . . . . . . . . 13
     10.2. Informative References . . . . . . . . . . . . . . . . . . 14
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 15

















Marcon                   Expires August 23, 2013                [Page 2]

Internet-Draft           RTCWeb data management            February 2013


1.  Introduction

   [I-D.ietf-rtcweb-data-channel] provides use cases and requirements
   for the definition of RTCWeb data channels, and outlines how the
   Stream Control Transmission Protocol (SCTP) [RFC4960] encapsulated
   within Datagram Transport Layer Security (DTLS) [RFC6347] can be used
   for this purpose.  While some of these requirements easily map to
   existing capabilities of the SCTP protocol and extensions (e.g.
   application messages can be carried as SCTP user messages), SCTP and
   existing SCTP extensions do not natively support the following
   requirements:

   o  data channel bidirectionality (this can be achieved by pairing one
      SCTP outbound stream and one SCTP inbound stream)

   o  data channel priority

   o  partial reliability of delivery, based on a maximum number of
      retransmissions

   o  general data channel setup

   For setting up the SCTP association, the in-band SCTP association
   initialization is assisted out-of-band by JSEP [I-D.ietf-rtcweb-jsep]
   and the SDP Offer/Answer model [RFC3264].  For setting up each data
   channel, several approaches can be considered:

   1.  a purely in-band data channel setup - such a protocol does not
       exist today.

   2.  a hybrid in-band / out-of-band data channel setup, where the in-
       band signaling relies on a new protocol defined on top of SCTP
       user messages.  The proposal [I-D.jesup-rtcweb-data-protocol]
       follows this approach.

   3.  an out-of-band negotiation of data channel configurations,
       minimally assisted by some lightweight in-band signaling allowing
       further in-band creations of data channels.

   This document describes the latter approach, preferred by the author
   for the following reasons:

   o  Minimal need for SDP renegotiation: the initial offer/answer for
      establishing the SCTP association is often enough.

   o  Scalability of the SDP signaling: typically it is as light as a
      couple of attribute lines regardless of the number of data
      channels created in the session.



Marcon                   Expires August 23, 2013                [Page 3]

Internet-Draft           RTCWeb data management            February 2013


   o  Potential interoperability with other systems, due to the use of
      out-of-band signaling.

   o  Ability to create data channels purely in-band, once the data
      channel configurations are negotiated

   o  No need for a new in-band data channel control protocol.

   o  Speed: No control message overhead for the in-band creation of
      data channels: sending user messages automatically creates new
      data channels.

   o  Simplicity of implementation.

   As a result, the proposal can easily cope with strenuous data
   transmission scenarios, like:

   o  The transfer of a high number of files, eventually in parallel.

   o  The fast opening and closing of one data channel.


2.  Conventions

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


3.  Terminology

   This document uses the following terms:

      Agent: As defined in [RFC3264], an agent is the protocol
      implementation involved in the offer/answer exchange.  There are
      two agents involved in an offer/answer exchange.

      Configuration: a fixed set of data channel parameters,
      constraining the configuration of some or all the data channels
      created on top of a given SCTP association.

      Data channel: A bidirectional channel consisting of paired SCTP
      outbound and inbound streams.

      In-band: transmission through the peer-to-peer SCTP association.






Marcon                   Expires August 23, 2013                [Page 4]

Internet-Draft           RTCWeb data management            February 2013


      Out-of-band: transmission through the RTCWeb signaling path, using
      JSEP [I-D.ietf-rtcweb-jsep] and the SDP Offer/Answer model
      [RFC3264].

      Peer: From the perspective of one of the agents in a session, its
      peer is the other agent.  Specifically, from the perspective of
      the SDP offerer, the peer is the SDP answerer.  From the
      perspective of the SDP answerer, the peer is the SDP offerer.

      Stream: A unidirectional stream of an SCTP association.  It is
      uniquely identified by a stream identifier.


4.  Overview

   This section provides an overview of the approach detailed in this
   document.

   A data channel configuration is an identified fixed set of data
   channel parameters potentially applicable to some or all of the data
   channels created during the session.  These parameters include: order
   of delivery, reliability of delivery, subprotocol.

   Configurations are uniquely identified throughout the session, and
   negotatied out-of-band between the endpoints.  The configuration
   concept is transparent to the application, which sets up and handles
   each data channel individually.  Whenever the application creates a
   new data channel, the browser internally checks if the passed set of
   parameters strictly matches an existing configuration, and if not
   generates a new configuration identifier for this set.  In the latter
   case only does the browser trigger the application for an SDP
   renegotiation.

   In the SDP offer, the offerer associates to the m=application SDP
   line that defines the SCTP association one attribute line per data
   channel configuration.

   For each data channel configuration in the offer that is accepted by
   the answerer, the answerer echoes in the answer the configurations
   supported and accepted.  Once the offerer receives the answer and (in
   case of an initial offer) the SCTP initialization is complete, each
   data channel locally created using one of the accepted configurations
   is signaled to the application as open for transmission.

   Each created data channel is bound to to one negotiated
   configuration.

   By convention, the inbound and outbound streams of a data channel



Marcon                   Expires August 23, 2013                [Page 5]

Internet-Draft           RTCWeb data management            February 2013


   have the same SCTP stream number.  This stream number is selected by
   the first endpoint sending a user message on this channel.  Till this
   happens, an open data channel has no assigned stream number.

   Data channel messages are sent as SCTP user messages, preceded in the
   DATA chunk User Data field by two bytes specifying data channel
   configuration identifier as well as the message data framing type
   (textual or binary).

   A user message received on a stream number not assigned to any data
   channel automatically opens a data channel, set up according to the
   configuration signaled in the user message.

   Closing a data channel is done in-band by resetting the Stream
   Sequence Number (SSN) of the related SCTP inbound and outbound
   streams, as defined in [RFC6525].

   This proposal requires the registration of one SCTP Payload Protocol
   Identifier.


5.  Data channel configuration and message properties

   For the proposal in this document, a data channel configuration is
   characterized by the following properties:

   o  configuration identifier, a 12-bit integer unique across all the
      data channel configurations managed during the lifetime of an SCTP
      association.

   o  ownership: the configuration is owned by the endpoint which
      originated the very first offer that included this configuration,
      for a given SCTP association.

   o  reliability of delivery: full reliability (as per [RFC4960]) or
      partial reliability with max transmission lifetime (as per
      [RFC3758]) or partial reliability with max number of
      retransmissions.

   o  order of delivery: ordered or unordered

   o  subprotocol identifier

   o  subprotocol setup data, if applicable

   For the proposal in this document, a data channel is characterized
   from an endpoint viewpoint by the following properties:




Marcon                   Expires August 23, 2013                [Page 6]

Internet-Draft           RTCWeb data management            February 2013


   o  Configuration identifier.  It can bind multiple data channels at a
      time.

   o  Label: local human-readable description of the data channel.

   o  Data channel priority

   o  SCTP stream number: common to the SCTP outbound stream and inbound
      stream composing the data channnel.

   o  state, which can have the following values:

      *  Connecting: data channel opened locally, and awaiting opening
         acknowledgment by the peer.

      *  Open: data channel available for bidirectional data
         transmission.

      *  Closing: data channel closed locally, and awaiting closing
         acknowledgment by the peer.

      *  Closed: data channel closed by the agent, and acknowledged as
         closed by the peer.

   A message sent over a data channel inherits from the transmission
   properties configured to this data channel: reliability and order of
   delivery.  In addition, the message is characterized by the following
   message-specific property:

   o  transport format encoding: text or binary.

   Note that for API simplification purpose, reliability, order of
   delivery and payload protocol identifier are not configurable per
   user message, but per data channel only.

   The payload protocol identifier (PPID) field present in SCTP DATA
   chunks is used to signal the data framing described in this document.
   This value is to be obtained from the SCTP Payload Protocol
   Identifiers registry managed by IANA.


6.  Procedures

6.1.  Initialization

   The PeerConnection and underlying SCTP association are initialized
   with N data channels, all in Closed state, and with respective
   outbound and inbound stream numbers ranging from 0 to N-1.  The



Marcon                   Expires August 23, 2013                [Page 7]

Internet-Draft           RTCWeb data management            February 2013


   number N can be specified by the application or else defaults to 16.

6.2.  Opening a data channel out-of-band

   An application creating a data channel providing some data channel
   parameters to the agent's browser.  If the subset of these parameters
   composing a data channel configuration does not strictly match an
   existing configuration, the browser assigns a new configuration
   identifier to this subset, and binds it to the data channel.  The
   configuration identifier is generated incrementally, starting from
   zero for each SCTP association.  Identifiers of configurations
   rejected by the answerer must never be used again.

   In addition, if the application requests the creation:

   o  at a time where the endpoint is in a stable state with an SCTP
      association already set up, and if the match of configuration is
      successful, the browser then sets the data channel state to Open.

   o  Otherwise the browser sets the data channel state to Connecting.
      Moreover, unless the endpoint is in an init state and createOffer
      has not yet been called, the browser notifies to the application
      the need for an SDP renegotiation.

   The created data channel has no assigned SCTP stream number yet.  At
   this stage though the user agent can anticipate a shortage of
   available SCTP streams and send in-band the request to increase the
   number of SCTP streams.

   The new offer (if any) contains one 'm-line' for the SCTP assocation,
   and one attribute line per data channel configuration.  This list of
   configurations must include the new configurations as well as all the
   configurations successfully negotiated in previous offer/answer
   exchanges for this SCTP association.

   The peer's browser receiving the offer does the following:

   1.  for the data channels that are in Open state but which are bound
       to a configuration no longer present in the offer, change their
       state to Closed

   2.  for each newly offered configuration, the peer's browser then
       informs the application of a new offered data channel along with
       the configuration specifics.  The application can accept this
       data channel (intended: configuration) by creating a new data
       channel using the configuration parameters.  Not doing so will
       mean to reject the configuration in the answer.




Marcon                   Expires August 23, 2013                [Page 8]

Internet-Draft           RTCWeb data management            February 2013


      Note: for each new configuration, the offerer expectedly creates
      one data channel or more, whereas the answerer creates one data
      channel only.  How the final data channel pairing (and SCTP stream
      number assignment) is resolved is further explained in this
      document.

      Note: the answerer can only reject new configurations,
      configurations previously negotiated cannot be removed from the
      configuration list associated with the SCTP association.

   The agent's browser receiving the answer does the following:

   1.  for the data channels not in Closed state and bound to a
       configuration no longer listed in the answer, change their state
       to Closed.

   2.  for each newly offered data channel configuration accepted by the
       answerer, change the state of any data channel bound to this
       configuration from Connecting to Open.

6.3.  Opening a data channel in-band

   Each user message sent in a data channel includes the identifier of
   the configuration which this data channel is bound to.  This
   signaling allows to enable or speed up the opening of new data
   channels in-band:

   o  Case A: In a stable state, the local creation of a data channel
      with parameters mapping to a negotiated configuration creates the
      data channel in Open state immediately, and does not signal this
      to the peer.  Some time later, when the application sends its
      first message on this data channel:

      1.  the agent's browser selects for the lifetime of the data
          channel an SCTP outbound stream number not used by any
          channel.

      2.  it then sends the user message over this SCTP stream.

      3.  the peer's browser SACKnowledges the user message, using an
          SCTP stream of same stream number (expectedly unused).  It
          then notifies the peer's application of the data channel
          opening.

   o  Case B: Once the answerer has accepted a new offerer's
      configuration, and has subsequently opened a data channel bound to
      this configuration, the answerer's application may choose to send
      user messages on this channel immediately.  The offerer receiving



Marcon                   Expires August 23, 2013                [Page 9]

Internet-Draft           RTCWeb data management            February 2013


      this message should:

      1.  route this message to one of the Connecting-state data
          channels bound to the same configuration.

      2.  change its state to Open, and sets its SCTP outbound stream
          number (expectedly unused) to the SCTP inbound stream number
          of the message.

      3.  delivers the message to the application.

6.4.  Closing a data channel

   When the application requests to close a data channel, the agent's
   browser initiates an in-band Stream Sequence Number (SSN) reset of
   the related SCTP inbound and outbound streams.  These streams are
   then available for further reuse.

6.5.  Sending and Receiving Data

   To expose to upper layers an API similar to the Web Socket API
   [WSAPI], the agent's browser needs to specify to the peer's browser
   the framing type of each data channel message, amongst binary or text
   (UTF-8).

   In addition, each user message needs to carry the identifier of the
   configuration which the data channel is bound to.

   For the sending of a user message over an opened data channel, the
   agent's browser:

   1.  converts the message data from UTF-16 to UTF-8 if provided by the
       application as a DOMString.

   2.  sets in the DATA chunk the Unordered bit, Payload Protocol
       Identifier and Stream Number as per data channel configuration.

   3.  constructs the User Data field as the framing type byte(s)
       followed by the (converted) message data












Marcon                   Expires August 23, 2013               [Page 10]

Internet-Draft           RTCWeb data management            February 2013


    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
   +------------------------+------+-------------------------------+
   |       Config ID        | Type |          Payload Data         |
   +------------------------+------+ - - - - - - - - - - - - - - - +
   :                     Payload Data continued ...                :
   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
   |                     Payload Data continued ...                |
   +---------------------------------------------------------------+

                            RTCWeb data framing

   Config ID : 12 bits

      Identifies a data channel configuration negotiated out of band
      between the two endpoints.

         Note: to be considered if the Config ID should be included in
         all user messages.

   Type : 4 bits

      Defines the data framing type of "Payload data".  If an unknown
      type is received, the receiving endpoint must reject the user
      message.  The following values are defined:

      *  x0 denotes a binary frame

      *  x1 denotes a UTF-8 encoded text frame

      *  x2-xFFF are reserved for further use

   An agent's browser receiving a user message on a data channel behaves
   as follows:

   o  If the configuration identifier in the message does not map to any
      negotiated configuration, or if the data channel (identified by
      the message stream number) is in Closing or Connecting state,
      reject (or discard?) the message.

   o  Otherwise (i.e. supported configuration identifier and Open
      state):

         If the endpoint has just sent the very first user message on
         this data channel and has not yet received the SACK, it means
         that both endpoints attempt to dynamically create a data
         channel by the sending of a user message.  In this case, if the
         endpoint has ownership of the signaled configuration, the



Marcon                   Expires August 23, 2013               [Page 11]

Internet-Draft           RTCWeb data management            February 2013


         browser must discard (reject?) the message.

            Note: another way of avoiding this conflict is to state by
            convention that the endpoint which initiated the offer for
            the SCTP association establishment owns all the even stream
            numbers, while the other endpoint owns all the odd stream
            numbers.

         Otherwise deliver the message.

   o  Otherwise (i.e. supported configuration identifier and Closed
      state):

         If a Connecting-state data channel exists with no assigned
         stream number, open it with a stream number set to the message
         stream number.

         If not, open a new data channel with a stream number set to the
         message stream number

         Finally, deliver the message.

6.6.  Out-of-band signaling

   To signal the data channel configurations intended for use during the
   lifetime of an SCTP association, the agent completes the SDP <fmt>
   section of the m=application SDP line defined for the SCTP
   association.  For each data channel configuration previously
   negotiated or newly added at the time of offer generation, the
   agent's browser:

   o  must specify: configuration identifier.

   o  may specify: order of delivery, reliability of delivery,
      subprotocol, subprotocol configuration data.

   As an example in the offer (line split for readability):

   m=application 54111 DTLS/SCTP 5000
   a=sctpmap:5000 webrtc-DataChannel 16
   a=sctp-protocol:5000 config=1;label="channel 1";subprotocol="chat";
   a=sctp-protocol:5000 config=2;label="channel 2";
   subprotocol="file transfer";max_retr=3

               data channel configuration setup in SDP offer

   An in the returned answer (line split for readability):




Marcon                   Expires August 23, 2013               [Page 12]

Internet-Draft           RTCWeb data management            February 2013


   m=application 54111 DTLS/SCTP 5000
   a=sctpmap:5000 webrtc-DataChannel 16
   a=sctp-protocol:5000 config=2;label="channel 2";
   subprotocol="file transfer";max_retr=3

              data channel configuration setup in SDP answer

   In reply to this offer, the peer constructs in the answer the data
   channel configuration list of the SCTP association as follows:

   o  drop any unwanted or unsupported data channel configuration

   o  echo the other configurations, and preserve the following
      properties at least: configuration identifier, subprotocol (if
      any).  Specifies also the peer-specific properties (subprotocol
      setup data).

   This may need to be specified via MMUSIC.


7.  Security Considerations

   To be completed.


8.  IANA Considerations

   To be completed.


9.  Acknowledgments

   The authors wish to thank Richard Ejzak, ... for their invaluable
   comments.


10.  References

10.1.  Normative References

   [I-D.ietf-rtcweb-jsep]
              Uberti, J. and C. Jennings, "Javascript Session
              Establishment Protocol", draft-ietf-rtcweb-jsep-02 (work
              in progress), October 2012.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.




Marcon                   Expires August 23, 2013               [Page 13]

Internet-Draft           RTCWeb data management            February 2013


   [RFC3758]  Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P.
              Conrad, "Stream Control Transmission Protocol (SCTP)
              Partial Reliability Extension", RFC 3758, May 2004.

   [RFC4960]  Stewart, R., "Stream Control Transmission Protocol",
              RFC 4960, September 2007.

   [RFC6347]  Rescorla, E. and N. Modadugu, "Datagram Transport Layer
              Security Version 1.2", RFC 6347, January 2012.

   [RFC6525]  Stewart, R., Tuexen, M., and P. Lei, "Stream Control
              Transmission Protocol (SCTP) Stream Reconfiguration",
              RFC 6525, February 2012.

10.2.  Informative References

   [I-D.ietf-rtcweb-data-channel]
              Jesup, R., Loreto, S., and M. Tuexen, "RTCWeb Datagram
              Connection", draft-ietf-rtcweb-data-channel-02 (work in
              progress), October 2012.

   [I-D.jesup-rtcweb-data-protocol]
              Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel
              Protocol", draft-jesup-rtcweb-data-protocol-03 (work in
              progress), September 2012.

   [ITU.T140.1998]
              "Protocol for Multimedia Application Text Conversation",
              ITU-T Recommendation T.140, February 1998.

   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264,
              June 2002.

   [WebRtcAPI]
              Bergkvist, A., Burnett, D., Narayanan, A., and C.
              Jennings, "WebRTC 1.0: Real-time Communication Between
              Browsers", World Wide Web Consortium WD WD-webrtc-
              20120821, August 2012,
              <http://www.w3.org/TR/2012/WD-webrtc-20120821>.

   [WebSocketAPI]
              Hickson, I., "The WebSocket API", World Wide Web
              Consortium LastCall WD-websockets-20120809, August 2012,
              <http://www.w3.org/TR/2012/WD-websockets-20120809>.






Marcon                   Expires August 23, 2013               [Page 14]

Internet-Draft           RTCWeb data management            February 2013


Author's Address

   Jerome Marcon
   Alcatel-Lucent
   Route de Villejust
   Nozay  91620
   France

   Email: jerome.marcon@alcatel-lucent.com










































Marcon                   Expires August 23, 2013               [Page 15]