diff options
Diffstat (limited to 'doc/rfc/rfc8068.txt')
-rw-r--r-- | doc/rfc/rfc8068.txt | 1907 |
1 files changed, 1907 insertions, 0 deletions
diff --git a/doc/rfc/rfc8068.txt b/doc/rfc/rfc8068.txt new file mode 100644 index 0000000..7fed496 --- /dev/null +++ b/doc/rfc/rfc8068.txt @@ -0,0 +1,1907 @@ + + + + + + +Internet Engineering Task Force (IETF) R. Ravindranath +Request for Comments: 8068 Cisco Systems, Inc. +Category: Informational P. Ravindran +ISSN: 2070-1721 Nokia Networks + P. Kyzivat + Huawei + February 2017 + + + Session Initiation Protocol (SIP) Recording Call Flows + +Abstract + + Session recording is a critical requirement in many communications + environments, such as call centers and financial trading + organizations. In some of these environments, all calls must be + recorded for regulatory, compliance, and consumer-protection reasons. + The recording of a session is typically performed by sending a copy + of a media stream to a recording device. This document lists call + flows with metadata snapshots sent from a Session Recording Client + (SRC) to a Session Recording Server (SRS). + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Not all documents + approved by the IESG are a candidate for any level of Internet + Standard; see Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc8068. + + + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 1] + +RFC 8068 SIP Recording Call Flows February 2017 + + +Copyright Notice + + Copyright (c) 2017 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 + (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. Overview ........................................................3 + 2. Terminology .....................................................3 + 3. Metadata XML Instances ..........................................3 + 3.1. Sample Call Flow ...........................................3 + 3.2. Call Scenarios with SRC Recording Streams without Mixing ...5 + 3.2.1. Example 1: Basic Call ...............................5 + 3.2.2. Example 2: Hold/Resume ..............................9 + 3.2.3. Example 3:Call Transfer (RE-INVITE and + REFER Based) .......................................12 + 3.2.4. Example 4: Call Disconnect .........................19 + 3.3. Call Scenarios with SRC Recording Streams by Mixing .......20 + 3.3.1. Example 1: Basic Call with SRC Mixing Streams ......20 + 3.3.2. Example 2: Hold/Resume with SRC Recording + by Mixing Streams ..................................23 + 3.3.3. Example 3: Metadata Snapshot of + Joining/Dropping of a ..............................25 + 3.3.4. Example 4: Call Disconnect .........................28 + 3.4. Call Scenarios with Persistent RS between SRC and SRS .....28 + 3.4.1. Example 1: Metadata Snapshot during CS + Disconnect with ....................................29 + 3.5. Turret-Case: Multiple CS into Single RS with Mixed + Stream ....................................................30 + 4. Security Considerations ........................................32 + 5. IANA Considerations ............................................32 + 6. References .....................................................33 + 6.1. Normative References ......................................33 + 6.2. Informative References ....................................33 + Acknowledgements ..................................................34 + Authors' Addresses ................................................34 + + + + + +Ravindranath, et al. Informational [Page 2] + +RFC 8068 SIP Recording Call Flows February 2017 + + +1. Overview + + Session recording is a critical requirement in many communications + environments, such as call centers and financial trading + organizations. In some of these environments, all calls must be + recorded for regulatory, compliance, and consumer-protection reasons. + The recording of a session is typically performed by sending a copy + of a media stream to a recording device. [RFC7865] focuses on the + recording metadata that describes the Communication Session (CS). + This document lists few examples and shows the snapshots of metadata + sent from a Session Recording Client (SRC) to Session Recording + Server (SRS). For the sake of simplicity, the entire Session + Initiation Protocol (SIP) [RFC3261] messages are not shown, instead + only snippets of the SIP and Session Description Protocol (SDP) + [RFC4566] messages and the XML snapshot of metadata is shown. + +2. Terminology + + The terms used in this document are defined in [RFC7865] and + [RFC6341]. No new definitions are introduced in this document. + +3. Metadata XML Instances + + The following subsections have examples that contain the metadata + snapshot sent from the SRC to the SRS. + +3.1. Sample Call Flow + + The following is a sample call flow that shows the SRC establishing a + Recording Session (RS) towards the SRS. In this example, the SRC + could be part of any one of the architectures described in Section 3 + of [RFC7245]. + + + + + + + + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 3] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Figure 1: Sample Call Flow between SRC and SRS + + SRC SRS + | | + |(1) INVITE (metadata snapshot) F1 | + |---------------------------------------------------->| + | 200 OK | + |<----------------------------------------------------| + |(3) ACK | + |---------------------------------------------------->| + |(4) RTP | + |====================================================>| + |====================================================>| + |====================================================>| + |====================================================>| + |(5) UPDATE/RE-INVITE (metadata update 1) F2 | + |---------------------------------------------------->| + | 200 OK | + |<----------------------------------------------------| + | ................................................... | + | ................................................... | + | | + |====================================================>| + |====================================================>| + |(7) UPDATE/RE-INVITE (metadata update n-1) Fn-1 | + |---------------------------------------------------->| + | 200 OK | + |<----------------------------------------------------| + + For the sake of simplicity, ACKs to RE-INVITES and BYEs are not + shown. The subsequent sections describe the snapshot of metadata + sent from the SRC to the SRS for each of the above transactions (F1 + ... Fn-1). There may be multiple UPDATES/RE-INVITES mid call to + indicate snapshots of different CS changes. Depending on the + architecture described in Section 3 of [RFC7245], an SRC may be an + endpoint, a B2BUA, or part of the MEDIACTRL architecture or the + Conference focus. The subsequent sections in this document try to + list some example metadata snapshots for three major categories. + + o The SRC recording streams unmixed to the SRS. This includes cases + where the SRC is a SIP UA or B2BUA. + + o The SRC recording mixed streams to the SRS. This includes cases + where the SRC is part of SIP conference model, as explained in + [RFC4353]. + + o The SRC having a persistent RS with the SRS. + + + + +Ravindranath, et al. Informational [Page 4] + +RFC 8068 SIP Recording Call Flows February 2017 + + + o Special flows like turret flows (used on financial trading floors + to manage call activity). A trading turret is a specialized + telephony key system that has a highly distributed switching + architecture enabling parallel processing of calls. Figure 6 in + Section 4 of [RFC6341] has the turret use case. + + Note that only those examples where metadata changes are listed in + each category. For some of the call flows, the snapshots may be the + same (like in case of endpoint or B2BUA acting as SRC) and the same + is mentioned in the text preceding the example. + +3.2. Call Scenarios with SRC Recording Streams without Mixing + + This section describes example flows where SRC can be a SIP-UA or + B2BUA as described in Section 3 of [RFC7245]. The SRS here can be a + SIP-UA or an entity part of the MEDIACTRL architecture described in + Section 3 of [RFC7245]. + +3.2.1. Example 1: Basic Call + + Basic call between two participants, Alice and Bob, who are part of + the same CS. In this use case, each participant sends two media + streams (audio and video). Media streams sent by each participant + are received by the other participant in this use case. In this + example, the SRC is a B2BUA in the path between Alice and Bob, as + described in Section 3.1.1 of [RFC7245]. Below is the initial + snapshot sent by SRC in the INVITE to SRS. This snapshot has the + complete metadata. For the sake of simplicity, only snippets of SIP/ + SDP are shown. In this example, the SRCs records the streams of each + participant to SRS without mixing. + + + + + + + + + + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 5] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Metadata snapshot for CS setup: + + INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=00000000000000000000000000000000 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + m=video 49174 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:97 + a=sendonly + ... + m=audio 51372 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:98 + a=sendonly + ... + m=video 49176 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:99 + a=sendonly + .... +--foobar +Content-Type: application/rs-metadata +Content-Disposition: recording-session + + + + + +Ravindranath, et al. Informational [Page 6] + +RFC 8068 SIP Recording Call Flows February 2017 + + +<?xml version="1.0" encoding="UTF-8"?> +<recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>complete</datamode> + <group group_id="7+OTCyoxTmqmqyA/1weDAg=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + <!-- Standardized extension --> + <call-center xmlns='urn:ietf:params:xml:ns:callcenter'> + <supervisor>sip:alice@atlanta.com</supervisor> + </call-center> + <mydata xmlns='http://example.com/my'> + <structure>FOO!</structure> + <whatever>bar</whatever> + </mydata> + </group> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <sipSessionID>ab30317f1a784dc48ff824d0d3715d86; + remote=47755a9de7794ba387653f2099600ef2</sipSessionID> + <group-ref>7+OTCyoxTmqmqyA/1weDAg== + </group-ref> + <!-- Standardized extension --> + <mydata xmlns='http://example.com/my'> + <structure>FOO!</structure> + <whatever>bar</whatever> + </mydata> + </session> + <participant + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <nameID aor="sip:alice@atlanta.com"> + <name xml:lang="it">Alice</name> + </nameID> + <!-- Standardized extension --> + <mydata xmlns='http://example.com/my'> + <structure>FOO!</structure> + <whatever>bar</whatever> + </mydata> + </participant> + <participant + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <nameID aor="sip:bob@biloxy.com"> + <name xml:lang="it">Bob</name> + </nameID> + <!-- Standardized extension --> + <mydata xmlns='http://example.com/my'> + <structure>FOO!</structure> + <whatever>bar</whatever> + </mydata> + </participant> + + + + +Ravindranath, et al. Informational [Page 7] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <stream stream_id="UAAMm5GRQKSCMVvLyl4rFw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>96</label> + </stream> + <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>97</label> + </stream> + <stream stream_id="8zc6e0lYTlWIINA6GR+3ag==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>98</label> + </stream> + <stream stream_id="EiXGlc+4TruqqoDaNE76ag==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>99</label> + </stream> + <sessionrecordingassoc session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </sessionrecordingassoc> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <send>UAAMm5GRQKSCMVvLyl4rFw==</send> + <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> + <recv>EiXGlc+4TruqqoDaNE76ag==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>8zc6e0lYTlWIINA6GR+3ag==</send> + <send>EiXGlc+4TruqqoDaNE76ag==</send> + <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> +</recording> + + + + + + + +Ravindranath, et al. Informational [Page 8] + +RFC 8068 SIP Recording Call Flows February 2017 + + +3.2.2. Example 2: Hold/Resume + + A call between two participants Alice and Bob is established and an + RS is created for recording, as in example 1. Bob puts Alice on hold + and then resumes as part of the same CS. The 'send' and 'recv' XML + elements of a 'participantstreamassoc' XML element is used to + indicate whether or not a participant is contributing to a media + stream. SRC sends a snapshot with only the changed XML elements. + + During hold + + Metadata snapshot for CS hold: + + RE-INVITE SRC-------------------->SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + m=video 49174 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:97 + a=sendonly + ... + m=audio 51372 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:98 + a=sendonly + + + +Ravindranath, et al. Informational [Page 9] + +RFC 8068 SIP Recording Call Flows February 2017 + + + ... + m=video 49176 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:99 + a=sendonly + .... + + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> + <recv>EiXGlc+4TruqqoDaNE76ag==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>8zc6e0lYTlWIINA6GR+3ag==</send> + <send>EiXGlc+4TruqqoDaNE76ag==</send> + </participantstreamassoc> + </recording> + + In the above snippet, Alice with participant_id + srfBElmCRp2QB23b7Mpk0w== only receives media streams and does not + send any media. The same is indicated by the absence of a 'send' XML + element. On the other hand, Bob (participant_id + zSfPoSvdSDCmU3A3TRDxAw==) would be sending media, but he does not + receive any media from Alice; therefore, the 'recv' XML element is + absent in this instance. + + During resume + + The snapshot now has 'send' and 'recv' XML elements for both Alice + and Bob, indicating that both are receiving and sending media. + + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 10] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Metadata snapshot for CS resume: + + RE-INVITE SRC-------------------->SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + m=video 49174 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:97 + a=sendonly + ... + m=audio 51372 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:98 + a=sendonly + ... + m=video 49176 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:99 + a=sendonly + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + + + + +Ravindranath, et al. Informational [Page 11] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <send>UAAMm5GRQKSCMVvLyl4rFw==</send> + <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> + <recv>EiXGlc+4TruqqoDaNE76ag==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>8zc6e0lYTlWIINA6GR+3ag==</send> + <send>EiXGlc+4TruqqoDaNE76ag==</send> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> + </participantstreamassoc> + </recording> + +3.2.3. Example 3:Call Transfer (RE-INVITE and REFER Based) + + A basic call between two participants, Alice and Bob, is connected, + and SRC (a B2BUA acting as SRC as per Section 3.1.1 of [RFC7245]) has + sent a snapshot as described in example 1. Transfer is initiated by + one of the participants (Alice). After the transfer is completed, + the SRC sends a snapshot of the participant changes to the SRS. In + this transfer scenario, Alice drops out after transfer is completed, + Bob and Carol get connected, and recording of media between Bob and + Carol is done by the SRC. There are two flows that can happen here + as described below. + + Transfer within the same session (e.g., a RE-INVITE-based transfer): + Alice drops out and Carol is added to the same session. No change to + the session/group element is made. A 'participantsessassoc' XML + element indicating that Alice has disassociated from the CS will be + present in the snapshot. A new 'participant' XML element + representing Carol with mapping to the same RS SDP stream used for + mapping earlier Alice's stream is sent in the snapshot. A new + 'sipSessionID' XML element that has Universally Unique Identifier + (UUID) tuples and that corresponds to Bob and Carol is sent in the + snapshot from the SRC to the SRS. Note that one half of the session + ID, that which corresponds to Bob, remains the same. + + + + + + + + + +Ravindranath, et al. Informational [Page 12] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Metadata snapshot for INVITE based transfer in CS: + + RE-INVITE SRC-------------------->SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49180 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + m=video 49182 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:97 + a=sendonly + ... + m=audio 51374 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:98 + a=sendonly + ... + m=video 49178 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:99 + a=sendonly + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + + + + +Ravindranath, et al. Informational [Page 13] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <sipSessionID>3363127f0d084c10876dddd4f8e5eeb9 + ;remote=2272bb7e70fe41dba0025ae9a26d54cf</sipSessionID> + </session> + <participant + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ=="> + <nameID aor="sip:carol@example.com"> + <name xml:lang="it">Carol</name> + </nameID> + </participant> + <participantsessionassoc + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2013-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2013-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>8zc6e0lYTlWIINA6GR+3ag==</send> + <send>EiXGlc+4TruqqoDaNE76ag==</send> + <recv>60JAJm9UTvik0Ltlih/Gzw==</recv> + <recv>AcR5FUd3Edi8cACQJy/3JQ==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ=="> + <send>60JAJm9UTvik0Ltlih/Gzw==</send> + <send>AcR5FUd3Edi8cACQJy/3JQ==</send> + <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> + <recv>EiXGlc+4TruqqoDaNE76ag==</recv> + <associate-time>2013-12-16T23:42:07Z</associate-time> + </participantstreamassoc> + </recording> + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 14] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Transfer with a new session (e.g., REFER-based transfer): in this + case, a new session (CS) is created and shall be part of same CS- + group (done by the SRC). + + The SRC first sends an *optional* snapshot indicating disassociation + of the participant from the old CS. An SRC may choose to just send + an INVITE with a new 'session' XML element to implicitly indicate + that the participants are now part of a different CS without sending + disassociation from the old CS. In this example, the SRC uses the + same RS. In case the SRC wishes to use a new RS, it will tear down + the current RS using normal SIP procedures (BYE) with metadata, as in + example 4. + + Metadata snapshot for REFER based transfer in CS: + + RE-INVITE SRC-------------------->SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49180 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + m=video 49182 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:97 + a=sendonly + + + + + + +Ravindranath, et al. Informational [Page 15] + +RFC 8068 SIP Recording Call Flows February 2017 + + + ... + m=audio 51374 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:98 + a=sendonly + ... + m=video 49178 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:99 + a=sendonly + .... + + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <stop-time>2010-12-16T23:41:07Z</stop-time> + </session> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + </recording> + + In the above snapshot, the 'participantsessionassoc' XML element is + optional as indicating a 'session' XML element with a 'stop-time' XML + element implicitly means that all the participants associated with + that session have been disassociated. + + The SRC sends another snapshot to indicate the participant change + (due to REFER) and new session information after transfer. In this + example, it is assumed that the SRC uses the same RS to continue + recording the call. The 'sipSessionID' XML element in the metadata + snapshot now indicates Bob and Carol in the (local, remote) UUID + pair. + + + + + + +Ravindranath, et al. Informational [Page 16] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Metadata snapshot for REFER based transfer in CS: + + RE-INVITE SRC-------------------->SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49180 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + m=video 49182 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:97 + a=sendonly + ... + m=audio 51374 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:98 + a=sendonly + ... + m=video 49178 RTP/AVPF 96 + a=rtpmap:96 H.264/90000 + a=label:99 + a=sendonly + .... + + --foobar + Content-Type: application/rs-metadata + + + + + +Ravindranath, et al. Informational [Page 17] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>complete</datamode> + <session session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <sipSessionID>3363127f0d084c10876dddd4f8e5eeb9 + ;remote=2272bb7e70fe41dba0025ae9a26d54cf</sipSessionID> + <start-time>2010-12-16T23:41:07Z</start-time> + </session> + <participant + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <nameID aor="sip:Bob@biloxy.com"/> + </participant> + <participant + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ=="> + <nameID aor="sip:carol@example.com"/> + </participant> + <stream stream_id="60JAJm9UTvik0Ltlih/Gzw==" + session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <label>96</label> + </stream> + <stream stream_id="AcR5FUd3Edi8cACQJy/3JQ==" + session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <label>97</label> + </stream> + <stream stream_id="8zc6e0lYTlWIINA6GR+3ag==" + session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <label>98</label> + </stream> + <stream stream_id="EiXGlc+4TruqqoDaNE76ag==" + session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <label>99</label> + </stream> + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <associate-time>2010-12-16T23:32:03Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ==" + session_id="bfLZ+NTFEeCNxQTuRyQBmw=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>8zc6e0lYTlWIINA6GR+3ag==</send> + <send>EiXGlc+4TruqqoDaNE76ag==</send> + <recv>60JAJm9UTvik0Ltlih/Gzw==</recv> + <recv>AcR5FUd3Edi8cACQJy/3JQ==</recv> + + + +Ravindranath, et al. Informational [Page 18] + +RFC 8068 SIP Recording Call Flows February 2017 + + + </participantstreamassoc> + <participantstreamassoc + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ=="> + <send>60JAJm9UTvik0Ltlih/Gzw==</send> + <send>AcR5FUd3Edi8cACQJy/3JQ==</send> + <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> + <recv>EiXGlc+4TruqqoDaNE76ag==</recv> + </participantstreamassoc> + </recording> + +3.2.4. Example 4: Call Disconnect + + This example shows a snapshot of metadata sent by the SRC to the SRS + when a CS with Alice and Bob as participants is disconnected. + + SRC SRS + | | + |(1) BYE (metadata snapshot) F1 | + |---------------------------------------------------->| + | 200 OK F2 | + |<----------------------------------------------------| + + Metadata snapshot for a CS disconnect: + + F1 BYE SRC -----------> SRS + + BYE sip:2001@example.com SIP/2.0 + Via: SIP/2.0/UDP src.example.com;branch=z9hG4bK47c8eb30 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 102 BYE + Max-Forwards: 70 + Require: siprec + Accept: application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/rs-metadata + + + + + + + +Ravindranath, et al. Informational [Page 19] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <stop-time>2010-12-16T23:41:07Z</stop-time> + </session> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + </recording> + +3.3. Call Scenarios with SRC Recording Streams by Mixing + + This section describes a few example call flows where the SRC may be + part of conference model either as focus or a participant in + conference as explained in Section 3.1.5 of [RFC7245]. The SRS here + can be a SIP User Agent (UA) or an entity part of the MEDIACTRL + architecture. Note that the disconnect case is not shown since the + metadata snapshot will be same as for a non-mixing case. + +3.3.1. Example 1: Basic Call with SRC Mixing Streams + + A basic call between two participants, Alice and Bob, who are part of + one CS. In this use case, each participant calls into a conference + server (say, a Multipoint Control Unit (MCU)) to attend one of many + conferences hosted on or managed by that server. Media streams sent + by each participant are received by all the other participants in the + conference. Below is the initial snapshot sent by the SRC in the + INVITE to the SRS that has the complete metadata. For the sake of + simplicity, only snippets of SIP/SDP are shown. The SRC records the + streams of each participant to SRS by mixing in this example. The + SRC here is part of conference model described in Section 3 of + [RFC7245] as a focus and does mixing. The SRC here is not a + participant by itself and hence it does not contribute to media. + + + + + + + + + +Ravindranath, et al. Informational [Page 20] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Metadata snapshot with the SRC mixing streams to the SRS: + + F1 INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: a358d2b81a444a8c8fb05950cef331e7 + ;remote=00000000000000000000000000000000 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>complete</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <sipSessionID>fa3b60f27e91441e84c55a9a0095f075 + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <sipSessionID>ca718e1430474b5485a53aa5d0bea45e + ;remote=68caf509b9284b7ea45f84a049febf0a</sipSessionID> + <start-time>2010-12-16T23:41:07Z</start-time> + </session> + <participant + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <nameID aor="sip:alice@atlanta.com"> + <name xml:lang="it">Alice</name> + </nameID> + + + +Ravindranath, et al. Informational [Page 21] + +RFC 8068 SIP Recording Call Flows February 2017 + + + </participant> + <participant + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <nameID aor="sip:bob@biloxy.com"> + <name xml:lang="it">Bob</name> + </nameID> + </participant> + <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>96</label> + </stream> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> + + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> + </recording> + + In the above example, there are two participants, Alice and Bob, in + the conference. Among other things, the SRC sends Session-ID in the + metadata snapshot. There are two Session-IDs here: one that + corresponds to the SIP session between Alice and the Conference focus + and the other for the SIP session between Bob and the Conference + focus. In this use case, since Alice and Bob call into the + conference, these Session-IDs are different. + + + + + + + + + + +Ravindranath, et al. Informational [Page 22] + +RFC 8068 SIP Recording Call Flows February 2017 + + +3.3.2. Example 2: Hold/Resume with SRC Recording by Mixing Streams + + This is the continuation of example 1 (basic call with SRC mixing + streams). A call between two participants, Alice and Bob, is + established and an RS is created for recording, as in example 5. One + of the participants, Bob, puts Alice on hold, and then resumes as + part of the same CS. The 'send' and 'recv' XML elements of a + 'participant' XML element are used to indicate whether or not a + participant is contributing to a media stream. The metadata snapshot + is represented below: + + During hold + + Metadata snapshot when a CS participant goes on hold + and the SRC is mixing the streams: + + RE-INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: a358d2b81a444a8c8fb05950cef331e7 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + + + + +Ravindranath, et al. Informational [Page 23] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>96</label> + </stream> + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + </participantstreamassoc> + </recording> + + During resumption, a snapshot shown below will be sent from the SRC + to the SRS. + + Metadata snapshot when a CS participant resumes and + the SRC is mixing the streams: + + RE-INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: a358d2b81a444a8c8fb05950cef331e7 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + + + + + + + + + + +Ravindranath, et al. Informational [Page 24] + +RFC 8068 SIP Recording Call Flows February 2017 + + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>96</label> + </stream> + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> + </recording> + +3.3.3. Example 3: Metadata Snapshot of Joining/Dropping of a + Participant to a Session + + In a conference model, participants can join and drop a session any + time during the session. Below is a snapshot sent from the SRC to + the SRS in this case. Note the SRC here can be a focus or a + participant in the conference. In the case where the SRC is a + participant, it may learn the information required for metadata by + subscribing to a conference event package [RFC4575]. Assume Alice + and Bob were in the conference and a third participant (Carol) joins, + then the SRC sends the below snapshot with the indication of new + participant. + + + + + + + +Ravindranath, et al. Informational [Page 25] + +RFC 8068 SIP Recording Call Flows February 2017 + + + Metadata snapshot for a new participant joining CS: + + RE-INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: a358d2b81a444a8c8fb05950cef331e7 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <sipSessionID>fa3b60f27e91441e84c55a9a0095f075 + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <sipSessionID>ca718e1430474b5485a53aa5d0bea45e + ;remote=68caf509b9284b7ea45f84a049febf0a</sipSessionID> + <sipSessionID>497c0f13929643b4a16858e2a3885edc + ;remote=0e8a82bedda74f57be4a4a4da54167c4</sipSessionID> + </session> + <participant + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ=="> + <nameID aor="sip:carol@example.com"> + <name xml:lang="it">Carol</name> + + + +Ravindranath, et al. Informational [Page 26] + +RFC 8068 SIP Recording Call Flows February 2017 + + + </nameID> + </participant> + <participantsessionassoc + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2013-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantstreamassoc + participant_id="Atnm1ZRnOC6Pm5MApkrDzQ=="> + <send>i1Pz3to5hGk8fuXl+PbwCw==</send> + <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> + </participantstreamassoc> + </recording> + + After some time, Alice drops from the conference. The SRC generates + a new snapshot showing Alice disassociating from the session. + + Metadata snapshot for a participant dropping from CS: + + RE-INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: a358d2b81a444a8c8fb05950cef331e7 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/sdp, application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + + + + + + + +Ravindranath, et al. Informational [Page 27] + +RFC 8068 SIP Recording Call Flows February 2017 + + + .... + --foobar + Content-Type: application/rs-metadata + Content-Disposition: recording-session + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <sipSessionID>ca718e1430474b5485a53aa5d0bea45e + ;remote=68caf509b9284b7ea45f84a049febf0a</sipSessionID> + <sipSessionID>497c0f13929643b4a16858e2a3885edc + ;remote=0e8a82bedda74f57be4a4a4da54167c4</sipSessionID> + </session> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + </recording> + + +3.3.4. Example 4: Call Disconnect + + When a CS is disconnected, the SRC sends a BYE with a snapshot of + metadata having a session stop time and participant disassociation + times. The snapshot looks the same as listed in Section 3.2.4. + +3.4. Call Scenarios with Persistent RS between SRC and SRS + + This section shows the snapshots of metadata for the cases where a + persistent RS exists between the SRC and the SRS. An SRC here may be + a SIP UA or a B2BUA, or it may be part of a conference model as + either the focus or a participant in a conference. The SRS here + could be a SIP UA or an entity part of the MEDIACTRL architecture. + Except in the disconnect case, the snapshot remains same as mentioned + in previous sections. + + + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 28] + +RFC 8068 SIP Recording Call Flows February 2017 + + +3.4.1. Example 1: Metadata Snapshot during CS Disconnect with + Persistent RS between SRC and SRS + + Metadata snapshot for a CS disconnect with a persistent RS: + + RE-INVITE sent from SRC -----------> SRS + + INVITE sip:2001@example.com SIP/2.0 + Via: SIP/2.0/UDP src.example.com;branch=z9hG4bK47c8eb30 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: ab30317f1a784dc48ff824d0d3715d86 + ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 + CSeq: 101 INVITE + Max-Forwards: 70 + Require: siprec + Accept: application/rs-metadata, + application/rs-metadata-request + Contact: <sip:2000@src.example.com>;+sip.src + Content-Type: multipart/mixed;boundary=foobar + Content-Length: [length] + + --foobar + Content-Type: application/rs-metadata + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>partial</datamode> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <stop-time>2010-12-16T23:41:07Z</stop-time> + </session> + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <disassociate-time>2010-12-16T23:41:07Z</disassociate-time> + </participantsessionassoc> + </recording> + + + + + + + +Ravindranath, et al. Informational [Page 29] + +RFC 8068 SIP Recording Call Flows February 2017 + + +3.5. Turret-Case: Multiple CS into Single RS with Mixed Stream + + In trading-floor environments, in order to minimize storage and + recording system resources, it may be preferable to mix multiple + concurrent calls (each call is one CS) on different handsets/speakers + on the same turret into a single RS. This would mean media in each + CS is mixed and recorded as part of single media stream, and multiple + such CSs are recording in one RS from an SRC to an SRS. + + Taking an example where there are two CSs [CS1 and CS2]: assume + mixing is done in each of these CSs and both these CSs are recorded + as part of single RS from a single SRC, which is part of both the + CSs. There are three possibilities here: + + o CS1 and CS2 use the same focus for mixing, and that focus is also + acting as SRC in each of the CSs. + + o One CS (e.g. CS1) SRC is the focus and the other CS (e.g. CS2), + SRC is just one of the participants of the conference. + + o In both CS1 and CS2, the SRC is just a participant of conference. + + The following example shows the first possibility where CS1 and CS2 + use the same focus for mixing, and that focus is also acting as SRC + in each of the CSs. + + Metadata snapshot with two CSs recorded as part of the same RS: + + INVITE SRC --------------> SRS + + INVITE sip:recorder@example.com SIP/2.0 + Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 + From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 + To: <sip:recorder@example.com> + Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a + Session-ID: a358d2b81a444a8c8fb05950cef331e7 + ;remote=00000000000000000000000000000000 + Content-Type: application/SDP + ... + m=audio 49170 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=label:96 + a=sendonly + ... + + + + + + + +Ravindranath, et al. Informational [Page 30] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <?xml version="1.0" encoding="UTF-8"?> + <recording xmlns='urn:ietf:params:xml:ns:recording:1'> + <datamode>complete</datamode> + <group group_id="7+OTCyoxTmqmqyA/1weDAg=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </group> + <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <sipSessionID>fa3b60f27e91441e84c55a9a0095f075 + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <sipSessionID>ca718e1430474b5485a53aa5d0bea45e + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <sipSessionID>497c0f13929643b4a16858e2a3885edc + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <group-ref>7+OTCyoxTmqmqyA/1weDAg==</group-ref> + <start-time>2010-12-16T23:41:07Z</start-time> + </session> + <session session_id="e6370VVGEeWAG6886p18uA=="> + <sipSessionID>ae10731ca50343a5aaae2dd0904a65de + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <sipSessionID>33c77aac7deb414cbc8c10f363fccb71 + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <sipSessionID>fd6932e9e5fc489fae2d5b3779723b7e + ;remote=a358d2b81a444a8c8fb05950cef331e7</sipSessionID> + <group-ref>7+OTCyoxTmqmqyA/1weDAg==</group-ref> + <start-time>2010-12-16T23:43:07Z</start-time> + </session> + <participant + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <nameID aor="sip:alice@atlanta.com"> + <name xml:lang="it">Alice</name> + </nameID> + </participant> + <participant + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <nameID aor="sip:Bob@biloxy.com"> + <name xml:lang="it">Bob</name> + </nameID> + </participant> + <participant + participant_id="EiXGlc+4TruqqoDaNE76ag=="> + <nameID aor="sip:Carol@example.com"> + <name xml:lang="it">Carol</name> + </nameID> + </participant> + <stream stream_id="UAAMm5GRQKSCMVvLyl4rFw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <label>96</label> + </stream> + + + +Ravindranath, et al. Informational [Page 31] + +RFC 8068 SIP Recording Call Flows February 2017 + + + <participantsessionassoc + participant_id="srfBElmCRp2QB23b7Mpk0w==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="hVpd7YQgRW2nD22h7q60JQ=="> + <associate-time>2010-12-16T23:41:07Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw==" + session_id="e6370VVGEeWAG6886p18uA=="> + <associate-time>2010-12-16T23:43:07Z</associate-time> + </participantsessionassoc> + <participantsessionassoc + participant_id="EiXGlc+4TruqqoDaNE76ag==" + session_id="e6370VVGEeWAG6886p18uA=="> + <associate-time>2010-12-16T23:43:07Z</associate-time> + </participantsessionassoc> + + <participantstreamassoc + participant_id="srfBElmCRp2QB23b7Mpk0w=="> + <send>UAAMm5GRQKSCMVvLyl4rFw==</send> + <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> + <send>UAAMm5GRQKSCMVvLyl4rFw==</send> + <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> + </participantstreamassoc> + <participantstreamassoc + participant_id="EiXGlc+4TruqqoDaNE76ag=="> + <send>UAAMm5GRQKSCMVvLyl4rFw==</send> + <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> + </participantstreamassoc> + </recording> + +4. Security Considerations + + Security and privacy considerations mentioned in [RFC7865] and + [RFC7866] have to be followed by the SRC and the SRS for setting up + RS SIP dialogs and sending metadata. + +5. IANA Considerations + + This document does not require any IANA actions. + + + + +Ravindranath, et al. Informational [Page 32] + +RFC 8068 SIP Recording Call Flows February 2017 + + +6. References + +6.1. Normative References + + [RFC6341] Rehor, K., Ed., Portman, L., Ed., Hutton, A., and R. Jain, + "Use Cases and Requirements for SIP-Based Media Recording + (SIPREC)", RFC 6341, DOI 10.17487/RFC6341, August 2011, + <http://www.rfc-editor.org/info/rfc6341>. + + [RFC7865] Ravindranath, R., Ravindran, P., and P. Kyzivat, "Session + Initiation Protocol (SIP) Recording Metadata", RFC 7865, + DOI 10.17487/RFC7865, May 2016, + <http://www.rfc-editor.org/info/rfc7865>. + + [RFC7866] Portman, L., Lum, H., Ed., Eckel, C., Johnston, A., and A. + Hutton, "Session Recording Protocol", RFC 7866, + DOI 10.17487/RFC7866, May 2016, + <http://www.rfc-editor.org/info/rfc7866>. + + [RFC7245] Hutton, A., Ed., Portman, L., Ed., Jain, R., and K. Rehor, + "An Architecture for Media Recording Using the Session + Initiation Protocol", RFC 7245, DOI 10.17487/RFC7245, May + 2014, <http://www.rfc-editor.org/info/rfc7245>. + +6.2. Informative References + + [RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, Ed., "A + Session Initiation Protocol (SIP) Event Package for + Conference State", RFC 4575, DOI 10.17487/RFC4575, August + 2006, <http://www.rfc-editor.org/info/rfc4575>. + + [RFC4353] Rosenberg, J., "A Framework for Conferencing with the + Session Initiation Protocol (SIP)", RFC 4353, + DOI 10.17487/RFC4353, February 2006, + <http://www.rfc-editor.org/info/rfc4353>. + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, + A., Peterson, J., Sparks, R., Handley, M., and E. + Schooler, "SIP: Session Initiation Protocol", RFC 3261, + DOI 10.17487/RFC3261, June 2002, + <http://www.rfc-editor.org/info/rfc3261>. + + [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session + Description Protocol", RFC 4566, DOI 10.17487/RFC4566, + July 2006, <http://www.rfc-editor.org/info/rfc4566>. + + + + + + +Ravindranath, et al. Informational [Page 33] + +RFC 8068 SIP Recording Call Flows February 2017 + + +Acknowledgements + + Thanks to Ofir Rath, Charles Eckel, Yaron Pdut, Dmitry Andreyev, and + Charles Armitage for their review comments. + + Thanks to Alissa Cooper, Stephen Farrell, Kathleen Moriarty, Suresh + Krishnan, Benoit Claise, Carlos Pignataro, Dan Romascanu, and Derek + Atkins for their feedback and comments during IESG reviews. + +Authors' Addresses + + Ram Mohan Ravindranath + Cisco Systems, Inc. + Cessna Business Park, + Kadabeesanahalli Village, Varthur Hobli, + Sarjapur-Marathahalli Outer Ring Road + Bangalore, Karnataka 560103 + India + + Email: rmohanr@cisco.com + + + Parthasarathi Ravindran + Nokia Networks + Bangalore, Karnataka + India + + Email: partha@parthasarathi.co.in + + + Paul Kyzivat + Huawei + Hudson, MA + United States of America + + Email: pkyzivat@alum.mit.edu + + + + + + + + + + + + + + + +Ravindranath, et al. Informational [Page 34] + |