Session recordings are used for various purposes such as complying with regulations, monitoring quality of service of representatives, and storing call information for quality analysis.
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
supports the following SIP recording interfaces:
- SIPREC SIP-based session recording
- Call monitoring MCT
- NICE session recording
- UDP/TCP towards the recording server
Include Page |
---|
| NICE_vs_MediaPacketCapture |
---|
| NICE_vs_MediaPacketCapture |
---|
|
Multiexcerpt include |
---|
MultiExcerptName | Recording Limit |
---|
PageWithExcerpt | Session Recording Support |
---|
|
Caption |
---|
0 | Table |
---|
1 | Supported ieft-draft Versions |
---|
|
Category | ieft-draft Version |
---|
Media Recording Architecture | draft-ietf-siprec-architecture-06 | Protocol | draft-ietf-siprec-protocol-06 | Recording Metadata | Fixed version of draft-ietf-siprec-metadata-07 |
|
The overall
SIPREC strategy is depicted in the following diagram (this example uses SBC 5000 series platform):
Caption |
---|
0 | Figure |
---|
1 | SBC SIP Recording Strategy |
---|
3 | SBC SIP Recording Strategy |
---|
|
|
The
can act as a
Session Recording Client ( SRC
) and an RTP translator. As an SRC, the
initiates SIP recording session (RS) towards
Session Recording server ( SRS
) with metadata. Unlike NICE, it is the responsibility of the
to determine if a call requires recording.
Info |
---|
|
- The SBC supports transmitting only the signaling data to the SRS over TCP.
- LSWU is supported for SIPREC SIP-based session recording from 5.1.1 version on-wards.
|
In the SBC SIP Recording Strategy figure, the basic call is established between SIP phone 1 and SIP phone 2 through the
and called as communication session (CS). The
establishes a
Recording session ( RS
) based on CS towards SRS. The
and SRS may exist in the same or different administrative domains. Each
Recording session RS is mapped to a single call (communication session), and the communication session is based on called or calling party number.
The two methods to trigger a call recording are:
- A call matches call recording criteria causing the PSX to trigger the to record the call.
- Initiate recording via CLI using GCID.
The need to record a call is decided from the PSX based on the following criteria in the given order of priority:
- Recorder type
- Next hop signaling IP address
- Previous hop signaling IP address
- Calling Party Number
- Called Party number
- Ingress TG ID
- Egress TG ID
The PSX/ERE uses the following configurable objects when determining whether a call needs to be recorded:
- Recording Entity—contains information about recording criterion
- Recorder—contains information about the recorder to use for a particular Recording Entity.
Include Page |
---|
| Recordertype_recordingtype |
---|
| Recordertype_recordingtype |
---|
|
Supported SIPREC features include:
Recording RTP session for a call by providing its GCID via CLI. The user provides the IP Address/port for the corresponding session recorder via the same CLI command.
Listing the calls currently being recorded using a CLI command. The
displays their GCID, and the RTP destinations and the SRS IP address.Record any type of call leg (SIP, SIP-I ) by specifying the call to be recorded via CLI.
The called and calling party numbers in the recording criteria may be configured as a prefix.
PSX support provisioning 128 Recording criteria and 128 Recorder profiles.
Sending and receiving “+sip.src” feature tag extension in the Contact URI
Options Tag “siprec” in INVITE towards SRS.
Sending and receiving the rs-call specific data in the rs-metadata XML body
If a INVITE is received from a SRS or UE with a options tag “require: siprec”, the
rejects the request with a 4xx message.Transparently passing the SIPREC specific feature tags from the UE to the registrar.
If the original call uses any codecs other than the above, it is assumed that the SRS will terminate the recording sessionRS. So SRC shall still continue continues operating the CS and RS until this happens.
The
transparently duplicates the packets coming/going to the UE towards the SRS using the same Codec as the Original stream.If any request except session keepalive Re-INVITE/UPDATE or BYE is received in the context of a recording sessionRS, the
rejects the request with a 405 "Method Not Allowed" message.If Options PING mechanism is configured on the IP peer, it is used as a keep-alive mechanism for all the recording sessionsRSs.
- Stop recording a call in one of three ways:
- Providing GCID via CLI
- Via normal CS Sessions disconnect
- Receiving Bye from SRS
Troubleshooting a SIPREC recorded call using MCT is only possible when initiated via CLI.
The SBC supports SIPREC on the multiple recorders based on the Internet Engineering Task Force (IETF) standard.The SBC acts as an SRC and a Real-time Transport Protocol (RTP) to initiate SIP RS on the SRS(s).
- Once the recording criteria are met, the SBC receives SRS IP group along with the number of streams (one or two) from the ERE.
- The SRS IP group contains a maximum of eight SRS IP addresses along with the Trunk Group and the transport information, which the ERE sends (either round-robin or sequential).
- The SBC decides the type of INVITE message to be sent to SRS based on:
- If the value of the parameter for
numOfStreams
received is 1
, the SBC sends the INVITE to the first reachable SRS IP address and uses the rest of the IP addresses for SRS redundancy. - If the value received is
2
, the SBC sends the Fork INVITE to the first two reachable SRS IP addresses.
- Once the SRS IP sends the response, the SBC starts streaming media towards the SRS.
Refer to NICE Session Recording for the list of supported codecs.
Info |
---|
|
The SIPREC feature is controlled by a system-wide license (-SIPREC). If the license is not available, any SIPREC recording returned by a PSX is ignored. |
To enable/disable SIPREC feature, use following syntax:
Code Block |
---|
|
% set addressContext <ADDRESS-CONTEXT> zone <ZONE> sipSigPort <SIP SIGNALLING PORT> siprec <disabled|enabled> |
To start/stop a recording, the following CLI syntax applies:
Code Block |
---|
|
% 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> srsIpAddresssrsIpAddress2 <SRS IP ADDRESS> srsPortsrsPort2 <SRS PORT> Port> transport2 <tcp | udp> trunkGroup2 <SIP Trunk Group>
% request global sipRec stopRecord gcid <GCID> recorderAddress <IP Address> recorderPort <Port Number> |
Info |
---|
|
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:
Code Block |
---|
|
%> show table global sipRecStatus 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.