Description
The Multiple Stream Registration Protocol (MSRP) is an application-level protocol defined within the 3GPP IMS framework, standardized in cooperation with the IETF (RFC 4975, RFC 4976). It is designed for the transmission of a series of related instant messages or media chunks, such as files or real-time text, within an established IMS session. MSRP operates over reliable transport protocols like TCP or TLS, using SIP (Session Initiation Protocol) for session establishment and negotiation, but then switches to MSRP for the actual bulk data transfer.
MSRP works by establishing one or more MSRP sessions between endpoints. These sessions are logical channels for sending discrete messages or large content broken into chunks. A key mechanism is the use of MSRP URIs (Uniform Resource Identifiers) to identify endpoints and sessions. During the SIP/SDP (Session Description Protocol) offer/answer exchange, endpoints negotiate MSRP parameters such as the path, port, and acceptance of chunked transmission. Once the SIP session is established, the endpoints open a direct TCP (or TLS) connection for MSRP traffic, independent of the SIP signaling path.
Within an MSRP session, content is sent in SDP-carried MSRP messages. A sender can break a large piece of content (like a file) into multiple chunks, each sent in a separate SEND request. The receiver acknowledges each chunk with a 200 OK response, providing flow control and reliability. MSRP also supports report delivery notifications for successful reception. The protocol includes mechanisms for session keep-alive, error reporting, and graceful session termination. Its design allows it to traverse Network Address Translators (NATs) and firewalls when used in conjunction with techniques like Interactive Connectivity Establishment (ICE).
Purpose & Motivation
MSRP was created to address the limitations of using SIP message bodies for transmitting large amounts of content or a continuous stream of related instant messages. SIP, while excellent for session signaling, is not optimized for bulk data transfer. Embedding large files in SIP MESSAGE requests could lead to performance issues, fragmentation, and difficulties with intermediate proxies. MSRP provides a separate, more efficient channel for this content, allowing SIP to focus on session control.
It solves the problem of managing multiple media streams or discrete content items within a single multimedia session. Before MSRP, applications like file transfer within a chat session or multi-stream video conferencing required ad-hoc solutions or separate out-of-band mechanisms. MSRP standardizes this process, enabling interoperable, reliable, and negotiable content delivery. Its creation was motivated by the growth of rich communication services (RCS) and IMS-based multimedia applications requiring more than just simple voice or single-image exchange.
Key Features
- Manages transmission of a series of related messages or large content chunks
- Uses reliable transport (TCP/TLS) for data transfer separate from SIP signaling
- Supports chunked transmission with individual acknowledgment (200 OK per chunk)
- Negotiated via SDP within a SIP session establishment
- Includes mechanisms for NAT/firewall traversal (e.g., with ICE)
- Provides delivery reports and error notification for sent content
Evolution Across Releases
Initially introduced to support IMS-based Messaging and file transfer services. Defined the core protocol for establishing MSRP sessions within a SIP-controlled multimedia session. Enabled the transmission of instant messages and content beyond the limits of SIP MESSAGE, forming a basis for Rich Communication Suite (RCS) services.
Defining Specifications
| Specification | Title |
|---|---|
| TS 22.832 | 3GPP TS 22.832 |
| TS 23.279 | 3GPP TS 23.279 |
| TS 23.333 | 3GPP TS 23.333 |
| TS 23.334 | 3GPP TS 23.334 |
| TS 23.701 | 3GPP TS 23.701 |
| TS 24.229 | 3GPP TS 24.229 |
| TS 24.247 | 3GPP TS 24.247 |
| TS 26.114 | 3GPP TS 26.114 |
| TS 26.980 | 3GPP TS 26.980 |
| TS 29.162 | 3GPP TS 29.162 |
| TS 29.165 | 3GPP TS 29.165 |
| TS 29.238 | 3GPP TS 29.238 |
| TS 29.311 | 3GPP TS 29.311 |
| TS 29.333 | 3GPP TS 29.333 |
| TS 29.334 | 3GPP TS 29.334 |
| TS 29.828 | 3GPP TS 29.828 |
| TS 33.127 | 3GPP TR 33.127 |
| TS 33.180 | 3GPP TR 33.180 |
| TS 33.328 | 3GPP TR 33.328 |