MMUSIC K. Drage, Ed.
Internet-Draft Unaffiliated
Intended status: Standards Track M. Makaraju
Expires: December 3, 2019 Nokia
J. Stoetzer-Bradler
R. Ejzak
J. Marcon
Unaffiliated
J. Recio, Ed.
CoSMo Software
June 1, 2019

MSRP over Data Channels
draft-ietf-mmusic-msrp-usage-data-channel-11

Abstract

This document specifies how the Message Session Relay Protocol (MSRP) can be instantiated as a data channel sub-protocol, using the SDP offer/answer exchange-based generic data channel negotiation framework. Two network configurations are documented: a WebRTC end-to-end configuration (connecting two MSRP over data channel endpoints), and a gateway configuration (connecting an MSRP over data channel endpoint with an MSRP over TCP or TLS endpoint).

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 https://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 December 3, 2019.

Copyright Notice

Copyright (c) 2019 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 (https://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

The Message Session Relay Protocol (MSRP) [RFC4975] is a protocol for transmitting a series of related instant messages in the context of a session. In addition to instant messaging, MSRP can also be used for image sharing or file transfer. MSRP is currently defined to work over TCP and TLS connections, and over a WebSocket subprotocol specified by [RFC7977].

This document defines the negotiation and transport of this MSRP protocol over data channels, where a data channel is a bi-directional communication channel running on top of SCTP/DTLS (as per [I-D.ietf-rtcweb-data-channel]) and where MSRP is instantiated as a sub-protocol of this data channel. The MSRP protocol negotiation defined in this document is based on the generic SDP offer/answer exchange based data channel negotiation as specified in [I-D.ietf-mmusic-data-channel-sdpneg].

Defining MSRP as a data channel sub-protocol has many benefits:

Compared to WebSockets, that provide a message passing protocol to applications with no direct access to TCP or TLS sockets, data channels provide a low latency transport, leverage NAT-aware connectivity and security features of WebRTC, and are increasingly available not only in modern browsers but in other applications that use WebRTC for media or other purposes (IoT or telemetry in general, non-media data exchange, etc).

Considering an MSRP endpoint being an MSRP application that uses data channel from WebRTC specifications [I-D.ietf-rtcweb-data-channel], this document describes two configurations where the other endpoint is respectively either another MSRP over data channel endpoint (e.g., a WebRTC application) or an MSRP endpoint using either TCP or TLS transport.

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:

Data channel: A WebRTC data channel as specified in [I-D.ietf-rtcweb-data-channel].
MSRP data channel: A data channel specifically used to transport the messages of one MSRP session.
External negotiation: Data channel negotiation based on out-of-band or in-band mechanisms other than the Data Channel Establishment Protocol specified in [I-D.ietf-rtcweb-data-protocol].
In-band: Transmission through the peer-to-peer SCTP association.
Out-of-band: Transmission through the call control signaling path, e.g., using 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.

4. Principles

4.1. MSRP Data Channel

In this document, an MSRP data channel is a data channel for which the instantiated sub-protocol is "MSRP", and where the MSRP-related negotiation is done as part of the SDP-based external negotiation method defined in [I-D.ietf-mmusic-data-channel-sdpneg].

4.2. Session Mapping

In this design, the MSRP session maps to the SCTP association and the "SCTP stream pair" assigned to the data channel, and each MSRP session maps to one data channel exactly.

4.3. MSRP URI

This document extends the MSRP URI syntax [RFC4975] by defining the new transport parameter value "dc":

transport  /= "dc" / 1*ALPHANUM
              ; Add "dc" to existing transports per [RFC4975]

MSRP design provides for new transport bindings, see Section 6 of [RFC4975], MSRP implementations are expected to allow unrecognized transports for which there is no need to establish a connection to the resource described by the URI, as it's the case of data channels (Section 5.1.2).

4.4. msrp-scheme

The msrp-scheme portion of the MSRP-URI that represents an MSRP data channel endpoint (used in the SDP path attribute and in the MSRP message headers) is always "msrps", which indicates that the MSRP data channel is always secured using DTLS as described in [I-D.ietf-rtcweb-data-channel].

5. End-to-End Configuration

This section describes the network configuration where each MSRP endpoint is running MSRP over a data channel.

5.1. Basic MSRP Support

5.1.1. Session Negotiation

5.1.1.1. Use of the dcmap Attribute

The SDP offer SHALL include a dcmap attribute line (defined in [I-D.ietf-mmusic-data-channel-sdpneg]) within the media description of the SCTP association for each MSRP data channel session to be negotiated.

The attribute includes the following data channel parameters:

The labelstring is set by the MSRP application according to [I-D.ietf-mmusic-data-channel-sdpneg]. Ordered and reliable data channels MUST always be used, so that the "max-retr" and "max-time" parameters SHALL NOT be used. If the "ordered" parameter is used, then its value MUST be equal to "true".

Rest of the SDP offer/answer procedures are per [I-D.ietf-mmusic-data-channel-sdpneg].

The following is an example of the dcmap attribute for an MSRP session to be negotiated with stream-id=2 and label="chat":

a=dcmap:2 label="chat";subprotocol="MSRP"

5.1.1.2. Use of the dcsa Attribute

The SDP offer SHALL also include within the media description for the SCTP association, a dcsa attribute line (defined in [I-D.ietf-mmusic-data-channel-sdpneg]) for each MSRP-specific SDP attribute to be negotiated for each MSRP data channel being negotiated.

The MSRP-specific items that can be negotiated include at least all of the following well-known attributes:

This document describes directly connecting to a data channel endpoint that is either a MSRP endpoint or an MSRP GW, as a result MSRP Connection Establishment for Media Anchoring (MSRP-CEMA) [RFC6714] is outside of the scope of this document. The msrp-cema attribute SHALL NOT be present.

As described in Section 5.1.2 the path attribute is not used for transport establiment.

The SDP answer SHALL include zero or more corresponding dcsa attribute lines for each negotiated MSRP session, according to the MSRP-specific attribute negotiation rules in the corresponding specifications.

A new SDP offer/answer MAY update the MSRP subprotocol attributes while keeping the same subprotocol a=dcmap description. The semantics for newly negotiated MSRP subprotocol attributes are per [RFC4975].

5.1.1.3. Use of the setup Attribute

A dsca embedded setup attribute, as defined in [RFC4145], MUST be used for MSRP sessions over data channels. It is used to negotiate which MSRP session endpoint assumes the active role as per Section 4.2.2 of [RFC6135] and Section 5.4 of [RFC4975]. It has no relationship with the DTLS connection establishment roles.

The dcsa embedded setup attribute is of the form "a=dcsa:x setup:<role>", with x being the data channel's SCTP stream identifier, so that such attribute is explicitly associated with an MSRP session over a specific data channel.

It is considered an error if an MSRP over data channel description does not contain a dcsa embedded setup attribute.

The SDP setup attribute can also be used in WebRTC data channel related SDP media descriptions as a media level attribute, which is associated with the corresponding UDP/DTLS/SCTP or TCP/DTLS/SCTP "m" line. Such an "a=setup" attribute is used as specified in [I-D.ietf-mmusic-sctp-sdp] in order to negotiate the establishment roles of the DTLS connection and has no relationship with the MSRP session.

5.1.1.4. Example SDP Negotiation

The following is an example of an "m" line for data channels in an SDP offer that includes the attributes needed to establish two MSRP sessions: one for chat and one for file transfer. The example is derived from a combination of examples in [RFC4975] and [RFC5547].

   m=application 54111 UDP/DTLS/SCTP webrtc-datachannel
   c=IN IP4 198.51.100.79
   a=max-message-size:100000
   a=sctp-port:5000
   a=setup:actpass
   a=fingerprint:SHA-1 \
       4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB
   a=tls-id:4a756565cddef001be82
   a=dcmap:0 label="chat";subprotocol="MSRP"
   a=dcsa:0 setup:active
   a=dcsa:0 accept-types:message/cpim text/plain
   a=dcsa:0 path:msrps://bob.example.com:54111/si438dsaodes;dc
   a=dcmap:2 label="file transfer";subprotocol="MSRP"
   a=dcsa:2 sendonly
   a=dcsa:2 setup:active
   a=dcsa:2 accept-types:message/cpim
   a=dcsa:2 accept-wrapped-types:*
   a=dcsa:2 path:msrps://bob.example.com:54111/jshA7we;dc
   a=dcsa:2 file-selector:name:"picture1.jpg" \
        type:image/jpeg size:1463440 hash:sha-1:\
        FF:27:0D:81:14:F1:8A:C3:35:3B:36:64:2A:62:C9:3E:D3:6B:51:B4
   a=dcsa:2 file-transfer-id:rjEtHAcYVZ7xKwGYpGGwyn5gqsSaU7Ep
   a=dcsa:2 file-disposition:attachment
   a=dcsa:2 file-date:creation:"Mon, 12 Jan 2018 15:01:31 +0800"
   a=dcsa:2 file-icon:cid:id2@bob.example.com
   a=dcsa:2 file-range:1-1463440

5.1.2. Session Opening

Section 5.1.1.3 describes how the active MSRP session endpoint role is negotiated. The active MSRP session endpoint uses the data channel established for this MSRP session by the generic data channel opening procedure defined in [I-D.ietf-mmusic-data-channel-sdpneg]. The path attribute SHALL NOT be used for transport negotiation.

As soon as this data channel is opened, the MSRP session is actually opened by the active MSRP session endpoint. In order to do this the active MSRP endpoint sends an MSRP SEND message (empty or not) to the other MSRP endpoint.

5.1.3. Data Framing

Each text-based MSRP message is sent on the corresponding SCTP stream using standard MSRP framing and chunking procedures, as defined in [RFC4975], with each MSRP chunk delivered in a single SCTP user message. Therefore all sent MSRP chunks including the MSRP chunk header MUST have lengths of less than or equal to the value of the peer's "a=max-message-size" attribute, which is associated with the data channel's SCTP association.

5.1.4. Data Sending and Reporting

Data sending and reporting procedures SHALL conform to RFC 4975.

5.1.5. Session Closing

The closure of an MSRP session MUST be signaled via an SDP offer/answer exchange which removes the "a=dcmap:" and "a=dcsa:" attribute lines associated with the MSRP session from the associated DTLS/SCTP based media description. This results in the associated data channel being closed as well as per [I-D.ietf-mmusic-data-channel-sdpneg], where the actual data channel closure procedure is typically initiated by the SDP answerer right after having accepted the SDP offer.

The port value for the "m" line SHOULD NOT be changed (e.g. to zero) when closing an MSRP session (unless all data channels are being closed and the SCTP association is no longer needed), since this would close the SCTP association and impact all of the data channels. In all cases in [RFC4975] where the procedure calls for setting the port to zero for the MSRP "m" line in an SDP offer for TCP transport, the SDP offerer of an MSRP session with data channel transport SHALL remove the corresponding dcmap and dcsa attributes.

The SDP answerer must ensure that no dcmap or dcsa attributes are present in the SDP answer if no corresponding attributes are present in the received SDP offer.

5.2. Support for MSRP File Transfer Function

[RFC5547] defines an end-to-end file transfer method based on MSRP and the SDP offer/answer mechanism. This file transfer method is also usable by MSRP endpoints using data channels, with the following considerations:

6. Gateway Configuration

This section describes the network configuration where one MSRP endpoint uses data channels as MSRP transport, the other MSRP endpoint uses TLS/TCP connections as MSRP transport, and the two MSRP endpoints interwork via an MSRP gateway.

Specifically, a gateway can be configured to interwork an MSRP session over a data channel with a peer that does not support data channel transport in one of two ways.

In one model, the gateway performs as a MSRP B2BUA to interwork all the procedures as necessary between the endpoints. No further specification is needed for this model.

Alternately, the gateway can use CEMA procedures to provide transport level interworking between MSRP endpoints using different transport protocols as follows. Path attributes SHALL NOT be used for transport level interworking.

When the gateway performs transport level interworking between MSRP endpoints, all of the procedures in Section 5 apply to each peer, with the following additions:

7. IANA Considerations

7.1. Subprotocol Identifier MSRP

NOTE to RFC Editor: Please replace "XXXX" with the number of this RFC.

This document adds the subprotocol identifier "MSRP" to the "WebSocket Subprotocol Name Registry" as follows:

Subprotocol Identifier: MSRP
Subprotocol Common Name: MSRP
Subprotocol Definition: RFCXXXX
Reference: RFCXXXX

7.2. setup Attribute

NOTE to RFC Editor: Please replace "XXXX" with the number of this RFC.

This document modifies the usage of the SDP setup attribute, if this attribute is embedded in a dcsa attribute and associated with an MSRP session over a data channel. The modified usage is described in Section 5.1.1.3.

Usage level "dcsa(MSRP)" should be added to the IANA registration of the SDP setup attribute as follows:

Contact name: MMUSIC Chairs
Contact email: mmusic-chairs@ietf.org
Attribute name: setup
Usage level: dcsa(MSRP)
Purpose: Negotiate the active role of an MSRP session over a data channel as per Section 5.1.1.3
Reference: RFCXXXX

8. Security Considerations

MSRP traffic over data channels is secured, including confidentiality, integrity and source authentication, as specified by [I-D.ietf-rtcweb-data-channel]

Note that discussion in [RFC4975] on MSRP message attribution to remote identities applies to data channel transport.

9. Acknowledgments

The authors wish to acknowledge the borrowing of ideas from another internet draft by Peter Dunkley and Gavin Llewellyn, and to thank Flemming Andreasen, Christian Groves, Christer Holmberg, Paul Kyzivat, Jonathan Lennox, Uwe Rauschenbach, Albrecht Schwarz and Keith Drage for their invaluable comments.

10. CHANGE LOG

10.1. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-10'

10.2. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-09'

10.3. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-08'

10.4. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-07'

10.5. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-06'

10.6. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-05'

10.7. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-04'

10.8. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-03'

10.9. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-02'

10.10. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-01'

10.11. Changes against 'draft-ietf-mmusic-msrp-usage-data-channel-00'

10.12. Changes against 'draft-ejzak-mmusic-msrp-usage-data-channel-01'

10.13. Changes against '-00'

11. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.
[I-D.ietf-rtcweb-jsep] Uberti, J., Jennings, C. and E. Rescorla, "JavaScript Session Establishment Protocol", Internet-Draft draft-ietf-rtcweb-jsep-26, February 2019.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, June 2002.
[I-D.ietf-rtcweb-data-protocol] Jesup, R., Loreto, S. and M. Tuexen, "WebRTC Data Channel Establishment Protocol", Internet-Draft draft-ietf-rtcweb-data-protocol-09, January 2015.
[I-D.ietf-rtcweb-data-channel] Jesup, R., Loreto, S. and M. Tuexen, "WebRTC Data Channels", Internet-Draft draft-ietf-rtcweb-data-channel-13, January 2015.
[I-D.ietf-mmusic-data-channel-sdpneg] Drage, K., Makaraju, M., Ejzak, R., Marcon, J. and R. Even, "SDP-based Data Channel Negotiation", Internet-Draft draft-ietf-mmusic-data-channel-sdpneg-28, May 2019.
[I-D.ietf-mmusic-sctp-sdp] Holmberg, C., Shpount, R., Loreto, S. and G. Camarillo, "Session Description Protocol (SDP) Offer/Answer Procedures For Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Security (DTLS) Transport.", Internet-Draft draft-ietf-mmusic-sctp-sdp-26, April 2017.
[RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in the Session Description Protocol (SDP)", RFC 4145, DOI 10.17487/RFC4145, September 2005.
[RFC4566] Handley, M., Jacobson, V. and C. Perkins, "SDP: Session Description Protocol", RFC 4566, DOI 10.17487/RFC4566, July 2006.
[I-D.ietf-mmusic-rfc4566bis] Begen, A., Kyzivat, P., Perkins, C. and M. Handley, "SDP: Session Description Protocol", Internet-Draft draft-ietf-mmusic-rfc4566bis-35, May 2019.
[RFC4975] Campbell, B., Mahy, R. and C. Jennings, "The Message Session Relay Protocol (MSRP)", RFC 4975, DOI 10.17487/RFC4975, September 2007.
[RFC5547] Garcia-Martin, M., Isomaki, M., Camarillo, G., Loreto, S. and P. Kyzivat, "A Session Description Protocol (SDP) Offer/Answer Mechanism to Enable File Transfer", RFC 5547, DOI 10.17487/RFC5547, May 2009.
[RFC6135] Holmberg, C. and S. Blau, "An Alternative Connection Model for the Message Session Relay Protocol (MSRP)", RFC 6135, DOI 10.17487/RFC6135, February 2011.
[RFC6714] Holmberg, C., Blau, S. and E. Burger, "Connection Establishment for Media Anchoring (CEMA) for the Message Session Relay Protocol (MSRP)", RFC 6714, DOI 10.17487/RFC6714, August 2012.
[RFC7977] Dunkley, P., Llewellyn, G., Pascual, V., Salgueiro, G. and R. Ravindranath, "The WebSocket Protocol as a Transport for the Message Session Relay Protocol (MSRP)", RFC 7977, DOI 10.17487/RFC7977, September 2016.

Authors' Addresses

Keith Drage (editor) Unaffiliated EMail: drageke@ntlworld.com
Maridi R. Makaraju (Raju) Nokia 2000 Lucent Lane Naperville, Illinois US EMail: Raju.Makaraju@nokia.com
Juergen Stoetzer-Bradler Unaffiliated EMail: Juergen.S-B.ietf@email.de
Richard Ejzak Unaffiliated EMail: richard.ejzak@gmail.com
Jerome Marcon Unaffiliated
Jose M. Recio (editor) CoSMo Software EMail: jose@ch3m4.com