Message Session Relay Protocol

From Wikipedia, the free encyclopedia

In computer networking, the Message Session Relay Protocol (MSRP) is a protocol for transmitting a series of related instant messages in the context of a communications session. An application instantiates the session with the Session Description Protocol (SDP) over Session Initiation Protocol (SIP) or other rendezvous methods.

The MSRP protocol is defined in RFC 4975.[1] MSRP messages can also be transmitted by using intermediaries peers, by using the relay extensions defined in RFC 4976.[2]

MSRP is used in the RCS context, especially for the instant messaging, file transfer and photo sharing features.

Protocol design[edit]

MSRP syntax is similar to other IETF text based protocols such as SIP, HTTP and RTSP.

MSRP requires a reliable transport layer, like TCP. Each message is either a request or a response and uses URIs; a message contains headers and a body that can carry any type of data, including binary information.

The first 2 headers must be To-Path and From-Path and the last must be Content-Type; this significantly reduces the complexity of parsers. Messages must also end with 7 dash ('-') characters, followed by a transaction identifier which appears in the first line; these are followed by a continuation flag, which is a single character and end of line (CRLF). This last line at the end of messages makes it rather simple to find and detect the message boundaries.

An MSRP URI has a scheme (which is "msrp" or "msrps"), authority, as defined by RFC 3986, which holds the IP/domain name and possibly the port, an optional session identifier, the transport and additional optional parameters. For example:

msrp://atlanta.example.com:7654/jshA7weztas;tcp

  • msrp is the scheme
  • atlanta.example.com:7654 is the authority
  • jshA7weztas is the session identifier
  • tcp is the transport

Usage in SIP[edit]

MSRP can be used within a SIP session:

MSRP session is set up through SIP's offer-answer[3] model. The SDP m-line media type is message and the protocol is either TCP/MSRP for MSRP over TCP and TCP/TLS/MSRP for MSRP over secure TLS. Furthermore, the MSRP URI is specified in a path attribute.

A full SDP example, as provided by the RFC:

v=0
o=alice 2890844526 2890844527 IN IP4 alice.example.com
s= -
c=IN IP4 alice.example.com
t=0 0
m=message 7394 TCP/MSRP *
a=accept-types:text/plain
a=path:msrp://alice.example.com:7394/2s93i9ek2a;tcp

The address and port are contained in the c- and m-lines, but also in the path attribute on an a-line. Generally, other media types use the c-line and m-line to describe the address and port, but the MSRP RFC 4975 section 8.1 says the path attribute is the authoritative source for MSRP.

See also[edit]

References[edit]

  1. ^ RFC 4975, The Message Session Relay Protocol (MSRP), B. Campbell (Ed.), R. Mahy (Ed.), C. Jennings (Ed.), The Internet Society (September 2007)
  2. ^ RFC 4976, Relay Extensions for the Message Session Relay Protocol (MSRP), C. Jennings (Ed.), R. Mahy (Ed.), A. B. Roach (Ed.), The Internet Society (September 2007)
  3. ^ RFC 3264, An Offer/Answer Model with the Session Description Protocol (SDP), IETF, The Internet Society (2002)