rfc-7866

Session Recording Protocol

L. Portman, H. Lum (Editor), C. Eckel, A. Johnston, A. Hutton
date2016-05 streamIETF areaart wgsiprec statusPROPOSED STANDARD pages45 canonicalhttps://www.rfc-editor.org/rfc/rfc7866 doi10.17487/RFC7866 errataview
This document specifies the use of the Session Initiation Protocol (SIP), the Session Description Protocol (SDP), and the Real-time Transport Protocol (RTP) for delivering real-time media and metadata from a Communication Session (CS) to a recording device. The Session Recording Protocol specifies the use of SIP, SDP, and RTP to establish a Recording Session (RS) between the Session Recording Client (SRC), which is on the path of the CS, and a Session Recording Server (SRS) at the recording device. This document considers only active recording, where the SRC purposefully streams media to an SRS and all participating user agents (UAs) are notified of the recording. Passive recording, where a recording device detects media directly from the network (e.g., using port-mirroring techniques), is outside the scope of this document. In addition, lawful intercept is outside the scope of this document.

updated by

Extracted elements (31)

design-rationale §8.4

The SRS base-mode requirement to support separate m-lines (one per CS media direction) was chosen to enable minimum interoperability without mandating full mixing support. It also allows SRS implementations targeting specific use cases (e.g., security cameras, one-way audio) without having to support all modalities.

rtp, realtime

design-rationale §9.2

The UPDATE method was chosen for the SRS to request a metadata snapshot (rather than re-INVITE) because UPDATE can be sent regardless of the state of the SIP dialog. This avoids requiring support for both UPDATE and re-INVITE for this single operation.

sip, realtime

interoperability-note §8.1.7.1

The SRS MUST support both FIR (Full Intra Request) and SIP INFO (RFC 5168 XML video fast update) for requesting video decoder refresh points, using FIR when successfully negotiated and SIP INFO for backward compatibility with implementations that predate FIR adoption.

rtp, realtime

normative-requirement §6.3 MUST

A recording-aware UA MUST indicate recording awareness by including the 'record-aware' option tag in the Supported header of the initial INVITE or response. It MUST also provide a recording indication to the end user showing whether recording is on, off, or paused for each medium.

sip, realtime

normative-requirement §8.3 MUST

For base interoperability, an SRC MUST support separate SDP m-lines (one per CS media direction). An SRS supporting audio recording MUST support receiving at least two audio m-lines; one supporting audio and video MUST support at least four total m-lines.

rtp, realtime

normative-requirement §6.1.2 MUST

For the Communication Session, the SRC MUST provide recording indications to all participants. When a participant UA includes the 'record-aware' option tag, the SRC MUST provide the indication via the SDP 'a=record' attribute; otherwise the SRC MUST use other means such as an in-band tone.

sip, realtime

normative-requirement §8.1.8 REQUIRED

Symmetric RTP and symmetric RTCP are REQUIRED: entities MUST use the same source port for sending RTP as they signal for receiving RTP, and likewise for RTCP.

rtp, realtime

normative-requirement §12 MUST

The SRC and SRS MUST support SIP with TLS version 1.2, SHOULD follow RFC 7525 best practices, and the RS MUST be at least as secure as the CS — meaning at least equivalent cipher suite strength. A CS using SIPS/SRTP may not be recorded over plain SIP/RTP without equivalent compensating controls.

sip, tls, security, realtime

normative-requirement §7.1.1 MUST

The SRC MUST include a SDP 'a=label' attribute (per RFC 4574) on each media stream in the Recording Session SDP offer to identify each recorded stream. The label name maps to the Media Stream Reference in the SIPREC metadata.

sip, realtime, rtp

normative-requirement §6.1.1 MUST

The SRC MUST include the '+sip.src' feature tag in the Contact URI for all Recording Sessions, so that an SRS can confirm the dialog is for the purpose of a Recording Session. When an SRC sends a REGISTER request, it MAY include this tag to advertise itself.

sip, realtime

normative-requirement §6.1.1 MUST

The SRC MUST include the 'siprec' option tag in the Require header when initiating a Recording Session, causing UAs that do not support the Session Recording Protocol to reject the INVITE with 420 (Bad Extension). The SRS MUST do likewise when it initiates an RS.

sip, realtime

normative-requirement §6.1.1 MUST

The SRC MUST only treat an incoming SIP session as a Recording Session when both the '+sip.srs' feature tag and the 'siprec' option tag are present in the INVITE request. The SRS applies the symmetric rule requiring both '+sip.src' and 'siprec'.

sip, realtime

normative-requirement §9.1 MUST

The SRC MUST send metadata to the SRS in a Recording Session. The SRC SHOULD include a full metadata snapshot in the initial INVITE; if not yet available, it SHOULD send one as soon as metadata becomes available. If the SRS requests a snapshot, the SRC MUST immediately provide a full metadata snapshot.

sip, realtime

normative-requirement §6.2 MUST

The SRS MUST include the '+sip.srs' feature tag in the Contact URI for all Recording Sessions. When an SRS sends a REGISTER request, it SHOULD include this tag to indicate it is an SRS.

sip, realtime

normative-requirement §7.2 MUST NOT

The SRS MUST NOT add recorded streams in an RS when the SRS sends a new SDP offer. When the SRS initiates an RS, it MUST send the INVITE without an SDP offer, allowing the SRC to generate the offer containing the streams to be recorded.

sip, realtime, rtp

normative-requirement §9.2 MUST NOT

The SRS MUST NOT request a full metadata snapshot in an UPDATE response or in any SIP transaction other than an UPDATE request. The snapshot request MUST contain a body with Content-Disposition 'recording-session' and MUST NOT contain an SDP body.

sip, realtime

normative-requirement §7.3.1 MUST

When each UA in a CS traversal (e.g., B2BUA or conference focus) is aware that the CS is being recorded, it MUST propagate the recording indication via the 'a=record' attribute to all other parties in the CS.

sip, realtime

normative-requirement §7.1.2 MUST

Whenever the recording state changes (e.g., recording terminates), the SRC MUST initiate a re-INVITE or UPDATE to update the SDP 'a=record' attribute in the Communication Session.

sip, realtime

protocol-element §9.1

Metadata is carried in the content type 'application/rs-metadata' with Content-Disposition 'recording-session'. When a SIP message contains both an SDP offer and metadata, the body MUST be 'multipart/mixed' with separate subordinate parts for SDP and metadata. Metadata may be a full snapshot or an incremental partial update.

sip, realtime

protocol-element §10

Persistent recording allows an RS to be established in the absence of a CS, with the SRC continuously sending media and updating metadata as new CSs are created. When no CS is active, the SRC and SRS SHOULD follow RFC 6263 keepalive procedures to maintain NAT bindings on the allocated RTP/RTCP ports.

rtp, realtime, nat

protocol-element §7.1.2

The 'a=record' SDP attribute is a session-level or media-level attribute used by the SRC to indicate recording state to recording-aware UAs in the CS. Values are 'on' (recording in progress), 'off' (no recording), and 'paused' (recording in progress but media is paused). Media-level overrides session-level.

sip, realtime

protocol-element §7.3.2

The 'a=recordpref' SDP attribute allows a CS participant to express a recording preference at the session or media level. Values are 'on', 'off', 'pause', and 'nopreference'. The SRC is not required to honor the preference but MUST report any resulting state change via 'a=record'.

sip, realtime

protocol-element §5

The Recording Session (RS) is a SIP session established between the Session Recording Client (SRC) and the Session Recording Server (SRS) to deliver replicated real-time media and metadata from a Communication Session (CS). The RS is independent of the CS and may span multiple CSs.

sip, rtp, realtime

protocol-element §8.2

The SRC may act as an RTP translator (forwarding or transcoding), RTP mixer, or RTP endpoint with respect to the RS. As a forwarding translator it preserves SSRCs; as a mixer it uses its own SSRC and conveys source SSRCs as CSRCs; as an endpoint the RS RTP session is completely independent of the CS.

rtp, realtime

registry §11.3

This document registers the Content-Disposition parameter value 'recording-session', indicating that the body contains either metadata about the RS or the reason for a metadata snapshot request, as determined by the Content-Type MIME value.

sip, registry, realtime

registry §11.4

This document registers two new SDP attributes: 'record' (session- or media-level; allowed values 'on', 'off', 'paused'; provides recording indication) and 'recordpref' (session- or media-level; allowed values 'on', 'off', 'pause', 'nopreference'; provides recording preference).

sip, registry, realtime

registry §11.2

This document registers two SIP media feature tags per RFC 3840: 'sip.src' (boolean; UA is a Session Recording Client) and 'sip.srs' (boolean; UA is a Session Recording Server). ASN.1 identifiers 1.3.6.1.8.4.27 and 1.3.6.1.8.4.28 respectively.

sip, registry, realtime

registry §11.1

This document registers two SIP option tags: 'siprec' (identifies the SIP session as a Recording Session; used in Require header) and 'record-aware' (indicates UA ability to receive recording indicators in SDP). Both are registered per RFC 3261.

sip, registry, realtime

security-consideration §12.3

Metadata in the RS may contain sensitive call details such as participant identities, call timing, and media attributes. The SRC may be configured to suppress certain metadata for privacy reasons; the SRS MUST protect stored metadata with appropriate access controls.

security, privacy, realtime

security-consideration §12

The RS MUST be at least as secure as the CS. The SRC and SRS MUST support TLS 1.2 for SIP signaling, and SRTP SHOULD be used for recorded media. Downgrading from SIPS/SRTP to plain SIP/RTP in the RS is not permitted unless equivalent compensating controls are in place.

security, tls, sip, rtp

security-consideration §12.1

The SRC and SRS MUST support mutual TLS authentication and SHOULD support SIP Digest authentication. An SRS MUST verify that it is authorized to receive recordings from the SRC; the SRC MUST verify the SRS identity before sending recorded media and metadata to prevent unauthorized capture.

security, tls, sip