This Application Note is a configuration guide for the Ribbon Core Session Border Controller (SBC) 5XX0 and 7XX0 series, and SBC SWe versions when connecting to Avoke Siprec Recorder.
This configuration guide supports features described on the Microsoft Technet http://www.avoke.com/ website.
The interoperability compliance testing focuses on verifying inbound and outbound call flows between Ribbon SBC Core and Avoke Siprec Recorder.
This technical document is intended for telecommunication engineers who are configuring both the Ribbon SBC and third-party product. Navigating the third-party product as well as the Ribbon SBC Command Line Interface (CLI) is required. Understanding the basic concepts of TCP/UDP, IP/Routing, and SIP/RTP are also necessary to complete the configuration and any needed troubleshooting.
This configuration guide is offered as a convenience to Ribbon customers. The specifications and information regarding the product in this guide are subject to change without notice. All statements, information, and recommendations in this guide are believed to be accurate, but are presented without warranty of any kind, express or implied, and are provided "AS IS." Users must take full responsibility for the application of the specifications and information in this guide.
The following equipment and software were used for the sample configuration provided:
Requirements
Equipment | Software Version | |
---|---|---|
Ribbon | Ribbon SBC 5200 | V05.01.00-R000 |
EMA | V05.01.00-R000 | |
SonusDB | V05.01.00-R000 | |
OS | V03.01.00-R000 | |
BIOS | V02.06.00 | |
BMC | V03.14.00 | |
PSX | V10.03.00-R000 | |
EMS | V10.03.00-R000 | |
Third-party Equipment | Grandstream GXP 1625 | 1.0.4.33 |
Grandstream GXP 1625 | 1.0.4.33 | |
Bria 4 | 4.7.1 Build 83451 | |
Avoke | ||
SIP Server, drachtio open source SIP application server | v0.7.3-rc1 | |
SIPREC app, drachtio open source siprec recording server | v2.0.0 | |
Media Server Freeswitch | 1.6.20+git~20180507T185611Z~43a9feb7f8~64bit | |
Avoke Browser | v.4.7 |
The following reference configuration shows connectivity between Avoke Siprec Recorder and Ribbon SBC Core.
Reference Configuration Topology
For any questions regarding this document or the content herein, contact your maintenance and support provider.
The testing was executed with the Ribbon test plan. The following features were tested:
An open source implementation of a SIPREC recording server based on dractio and using either
The following new configurations are included in this section:
This application requires a drachtio SIP server to be installed in your network. Please refer to the build and installation instructions here, or here.
config/default.json.example-rtpengine
or config/default.json.example-freeswitch
depending on which back-end media server you want to use (it is an either/choice, you cannot mix them) to config/local.json
and edit to provide the IP addresses/ports for your configuration (i.e., location of the drachtio server, and either the rtpengine or freeswitch media server).npm install
node app
to run.When using rtpengine as the recorder, there is minimal configuration you will need to do on the rtpengine server -- a vanilla install will do. The application will use the ng control protocol, so you will need to open the UDP port on the rtpengine server to allow commands from the server running the drachtio-siprec-recording-server application.
Also, rtpengine generates recordings in pcap file format, so you will need to do some post-processing to deliver a flac, wav, mp3 or whichever final format you prefer.
When using Freeswitch, some configuration is needed on the Freeswitch server. Specifically, you must implement a dialplan that
An example of a snippet of a dialplan might look like this:
<extension name="hairpin_and_record">
<condition field="${sip_h_X-Return-Token}" expression="^(.+)$">
<action application="export" data="sip_h_X-Return-Token=${sip_h_X-Return-Token}" />
<action application="export" data="_nolocal_jitterbuffer_msec=100"/>
<action application="set" data="RECORD_STEREO=true"/>
<action application="set" data="call_id=${strftime(%Y%m%d_%H%M%S)}_${sip_from_tag}"/>
<action application="set" data="outfile=$${base_dir}/recordings/${call_id}.wav"/>
<action application="record_session" data="${outfile}"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="bridge" data="sofia/external/${destination_number}@${network_addr}"/>
</condition>
</extension>
For an example docker image that implements, refer to davehorton/freeswitch-hairpin.
When using Freeswitch, the application requires access to a redis server. redis is used to track and correlate the A and B call legs, using the X-Return-Token header mentioned above. When using rtpengine as the back-end, redis not required.
If you have not built the drachtio server and rtpengine processes (and do not want to), you can run using these docker images:
For guidance, have a look at the test suite, which uses docker-compose to create a test environment, for example test/docker-compose-testbed.yaml.
The following new configurations are included in this section:
Codec Entry
Element Routing Priority
Recorder Profile
Call Recording Criteria
IP Peer Group A1
PSX configuration for A1 trunk
IP Peer Group A2
PSX Configuration for A2 trunk
Zone Index Profile
IP Peer Group B1
IP Peer Group B2
PSX Configuration for B2 trunk
PSX Configuration for Recorder trunk
A1 Routing Label
A2 Routing Label
B1 Routing Label
B2 Routing Label
Standard Route A1 to A2
Standard Route A1 to B1
Standard Route A2 to A1
Standard Route A2 to B1
Standard Route B1 to A1
Standard Route B1 to A2
Test Results
Interoperability | Test Scenario | Setup / Result Information | Result | Comment |
---|---|---|---|---|
Inbound Calls | ||||
2001 | B1 calls A1 device, A1 hangs up | call is completed with correct SIP and SDP syntax | Pass | |
2002 | B1 calls A1 device, B1 hangs up | call is completed with correct SIP and SDP syntax | Pass | |
2003 | A1 calls B1, A1 hangs up before call connects | call is completed with correct SIP and SDP syntax | Pass | |
Outbound Calls | ||||
3001 | A1 calls B1, B1 hangs up | call is completed with correct SIP and SDP syntax | Pass | |
3002 | A1 calls B1, A1 hangs up | call is completed with correct SIP and SDP syntax | Pass | |
3003 | A1 calls B1, A1 hangs up before call connects | call is completed with correct SIP and SDP syntax | Pass | |
Call Transfers | ||||
4001 | ATTENDED A1 calls B1, B1 transfers A1 to A2 -reinvite | call is transferred successfully with correct SIP and SDP syntax | Pass | |
4003 | BLIND A1 calls B1, B1 transfers A1 to A2 -reinvite | call is transferred successfully with correct SIP and SDP syntax | Pass | |
Conference Calls | ||||
5001 | A1 calls B1, A1 conferences in A2 | call is conferenced in successfully with correct SIP and SDP syntax | Pass | |
5002 | A2 calls A1, A1 conferences in B1 | call is conferenced in successfully with correct SIP and SDP syntax | Pass | |
5003 | B1 calls A1, A1 conferenecs in A2 | call is conferenced in successfully with correct SIP and SDP syntax | Pass | |
Call Forwarding | ||||
6001 | A1 sets call forwarding to A2 - reinvite | call is forwarded successfully with correct SIP and SDP syntax | Pass | |
6002 | A1 sets call forwarding to B1 - reinvite | call is forwarded successfully with correct SIP and SDP syntax | Pass | . |
Call Holds | ||||
8001 | A1 calls B1, A1 puts B1 on hold then resumes call | call is resumed successfully with correct SIP and SDP syntax | Pass | |
8002 | A1 calls B1, A1 puts B1 on hold for a long time (10min) then resumes call | call is resumed successfully with correct SIP and SDP syntax | Pass | |
8003 | A1 calls B1, B1 puts A1 on hold then resumes call - with music | call is resumed successfully with correct SIP and SDP syntax | Pass | |
8004 | A1 calls B1, B1 puts A1 on hold for a long time (10 min) then resumes call - with music | call is resumed successfully with correct SIP and SDP syntax | Pass | |
Long duration call | ||||
12001 | B1 calls A1. Call last for at least 30 minutes | call stays active until endpoint hangs up | Pass |
These Application Notes describe the configuration steps required for Ribbon to successfully interoperate with Avoke Siprec Recorder. All feature and serviceability test cases were completed and passed with the exceptions/observations noted in Test Results.