In this section:
The SIPREC protocol defines the interaction between a Session Recording Client (SRC) and a Session Recording Server (SRS), and controls the recording of media transmitted in the context of a communications session (CS) between multiple user agents. The Recoding Session (RS) is established over SIP from SRC to SRS.
The
Session recording is used for various purposes such as complying with regulation, monitoring quality of service of representatives as well as storing call information for quality analysis. The SBC Core supports the following proprietary SIP recording interfaces: Access to the Media Capture Tool is restricted to privileged, password-protected user accounts. Tracking of its use is tracked by AUD logging. The SBC can record all the calls in the system. The number of recording sessions depends on the available interface bandwidth.
In the figure SBC SIP Recording Strategy, the basic call is established between SIP phone 1 and SIP phone 2 through the
The two methods to trigger a call recording are:
The recording-criteria determine, which sessions to record, SRS information along with other operational options.
The PSX/ERE uses the following configurable objects when determining whether a call needs to be recorded or not:
The PSX/ERE supports provisioning 128 Recording criteria , 256 SRS Group Profiles and 256 SRS Cluster Profiles.
The need to record a call is decided from the PSX based on the following criteria in the given order of priority:
For detailed configuration information, refer to the section Deploying SBC For SIPREC
To enable/disable SIPREC feature, use following syntax:
% set addressContext <ADDRESS-CONTEXT> zone <ZONE> sipSigPort <SIP SIGNALLING PORT> siprec <disabled|enabled>
To start/stop a recording, the following CLI syntax applies:
% request global sipRec startRecord gcid <GCID> callLeg ingress numOfStreams <Number of recorders 1 or 2> srsIpAddress <SRS IP ADDRESS> srsPort <SRS PORT> transport <tcp | udp> trunkGroup <TRUNK GROUP NAME> srsIpAddress2 <SRS IP ADDRESS> srsPort2 <SRS Port> transport2 <tcp | udp> trunkGroup2 <SIP Trunk Group> % request global sipRec stopRecord gcid <GCID> recorderAddress <IP Address> recorderPort <Port Number>
If only the GCID value is mentioned in the stopRecord
, all the multiple recordings for that GCID are stopped at once.
To view SIPREC status, use CLI syntax:
> show table global SipRecStatus RECORDER RX RTP TX RTP RECORDING GCID ADDRESS ADDRESS ADDRESS LEG 1 10.11.12.13:5060 10.11.12.13:8000 10.11.12.13:8002 ingress
Refer to Zone - SIP Sig Port - CLI and Request Global - CLI pages for CLI command details.
Once the
The
For configuring SIPREC feature, refer to the section Deploying SBC For SIPREC.
The
The
The SIPREC feature is controlled by a system-wide
The
SRS Redundancy is supported only when numOfStreams
is set to "1" in an SRS Group. When numOfStreams
= "2'", the
The
The
recordingType
to "both legs" or "all legs".Below is a diagram illustrating the use case of a simultaneous SIPREC, with first two recordings on Ingres call-leg, and the next two recordings on egress call-leg.
For more information on parameter configurations and CDR field descriptions refer to:
CLI and EMA:
Alarms:
CDR:
The
With this feature, the
srsGroupData
.srsGroupData.
srsGroupData
.The following two options are added to the srsGroupData
:
srtp
: Specifies whether SRTP is enabled for the SRS or not.cryptoSuiteProfile
: If SRTP is enabled, encrypt recording session using this crypto details.srsGroupData
crypto suite profile.When SRTP is disabled for the SRS, the
When SRTP is enabled for the SRS and if the CS leg that is recorded is not using SRTP:
cryptoSuiteProfile
is configured for the SRS, the cryptoSuiteProfile
on the recorded leg towards the SRS. cryptoSuiteProfile
is not configured for the SRS, the When the CS is using SRTP pass-through:
cryptoSuiteProfile
is configured, the SBC re-encrypts the media using the configured cryptoSuiteProfile
.When the CS is an SRTP terminated call:
cryptoSuiteProfile
is configured for the SRS, the SBC sends the SRTP packets using the cryptoSuiteProfile
on the recorded leg towards the SRS. cryptoSuiteProfile
is not configured for the SRS, the SBC uses the cryptoSuiteProfile
from the CS and sends SRTP packets.The SIPREC functionality fails and the alarm sonusSbxSipRecSrsSelectionFailedNotification is generated in case of following scenarios:
The
sipRecMetaDataProfile
is introduced to the services to provide the capability to configure the headers that are mapped from the target call leg to the XML and the corresponding metadata XML element name.The following call flow diagram displays the XML tag name.
An example SIP INVITE is shown below:
INVITE sip:SIPREC-SRS@10.54.80.8:51802 SIP/2.0 Via: SIP/2.0/UDP 10.34.171.39:5060;branch=z9hG4bK00B00021f4cdc2590c2 From: "SIPREC-SRC" <sip:SIPREC-SRC@10.34.171.39>;tag=gK00000237 To: "SIPREC-SRS" <sip:SIPREC-SRS@10.54.80.8> Call-ID: 35651585_16777218_133945398@10.34.171.39 CSeq: 787532 INVITE Max-Forwards: 70 Allow: INVITE,ACK,CANCEL,BYE,REGISTER,REFER,INFO,SUBSCRIBE,NOTIFY,PRACK,UPDATE,OPTIONS,MESSAGE,PUBLISH Accept: application/sdp, application/rs-metadata-request,application/rs-metadata Contact: "SIPREC-SRC" <sip:SIPREC-SRC@10.34.171.39:5060>;+sip.src Require: siprec Supported: timer,100rel Session-Expires: 1800 Min-SE: 90 Content-Length: 4560 Content-Type: multipart/mixed;boundary=sonus-content-delim MIME-Version: 1.0 --sonus-content-delim Content-Disposition: session; handling=required Content-Length: 296 Content-Type: application/sdp v=0 o=Sonus_UAC 748003 60371 IN IP4 10.34.171.39 s=SIP Media Capabilities t=0 0 m=audio 1052 RTP/SAVP 0 c=IN IP4 10.54.4.51 a=label:1 a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:k3NkQB3Tkr23twOMMjd8YjvLI/XPdgE+a1D8FDho a=rtpmap:0 PCMU/8000 a=sendonly a=maxptime:10 m=audio 1050 RTP/SAVP 0 c=IN IP4 10.54.4.51 a=label:2 a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:k3NkQB3Tkr23twOMMjd8YjvLI/XPdgE+a1D8FDho a=rtpmap:0 PCMU/8000 a=sendonly a=maxptime:10 --sonus-content-delim Content-Disposition: recording-session Content-Length: 3976 Content-Type: application/rs-metadata+xml <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>complete</datamode> <group group_id="OTIxYzk4MDAtN2RkYy0xMA=="> <associate-time>2018-08-09T08:31:44Z</associate-time> <callData xmlns='http://ribboncommunications.com/siprec/calldata'> <xTo><sip:+1999@10.54.80.8:51801;user=phone>;tag=1</xTo> <xVia>SIP/2.0/UDP 10.34.171.34:5060;branch=z9hG4bK00B0000a25afeb7eee5</xVia> <xCSeq>844797 INVITE</xCSeq> <xFrom>"sipp" <sip:sanrayana@10.34.171.34>;tag=gK0000011e</xFrom> <xContentType>application/sdp</xContentType> <xMaxForwards>70</xMaxForwards> <srsgrpId>GR1</srsgrpId> <xAcceptContact>*;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"</xAcceptContact> <xPPreferredIdentity>"sipp" <sip:sanrayana@10.54.80.8:5061></xPPreferredIdentity> <mprofileVers>v1.0</mprofileVers> <gcid>35651585</gcid> </callData> </group> <session session_id="OTIxYzlhM2UtN2RkYy0xMA=="> <group-ref>OTIxYzk4MDAtN2RkYy0xMA==</group-ref> <start-time>2018-08-09T08:31:44Z</start-time> </session> <participant participant_id="OTIxYzk4MDEtN2RkYy0xMA=="> <nameID aor="sanrayana@10.34.171.34:5060"> <name xml:lang="en">sipp</name> </nameID> </participant> <participant participant_id="OTIxYzk4MDItN2RkYy0xMA=="> <nameID aor="+1999@10.54.80.8"> <name xml:lang="en"> </name> </nameID> </participant> <stream stream_id="OTIxYzk4MDQtN2RkYy0xMA==" session_id="OTIxYzlhM2UtN2RkYy0xMA=="> <label>1</label> <associate-time>2018-08-09T08:31:44Z</associate-time> </stream> <stream stream_id="OTIxYzk4MDUtN2RkYy0xMA==" session_id="OTIxYzlhM2UtN2RkYy0xMA=="> <label>2</label> <associate-time>2018-08-09T08:31:44Z</associate-time> </stream> <sessionrecordingassoc session_id="OTIxYzlhM2UtN2RkYy0xMA=="> <associate-time>2018-08-09T08:31:44Z</associate-time> </sessionrecordingassoc> <participantsessionassoc participant_id="OTIxYzk4MDEtN2RkYy0xMA==" session_id="OTIxYzlhM2UtN2RkYy0xMA=="> <associate-time>2018-08-09T08:31:44Z</associate-time> </participantsessionassoc> <participantsessionassoc participant_id="OTIxYzk4MDItN2RkYy0xMA==" session_id="OTIxYzlhM2UtN2RkYy0xMA=="> <associate-time>2018-08-09T08:31:44Z</associate-time> </participantsessionassoc> <participantstreamassoc participant_id="OTIxYzk4MDEtN2RkYy0xMA=="> <send>OTIxYzk4MDQtN2RkYy0xMA==</send> <recv>OTIxYzk4MDUtN2RkYy0xMA==</recv> </participantstreamassoc> <participantstreamassoc participant_id="OTIxYzk4MDItN2RkYy0xMA=="> <send>OTIxYzk4MDUtN2RkYy0xMA==</send> <recv>OTIxYzk4MDQtN2RkYy0xMA==</recv> </participantstreamassoc> </recording>