Load and Enable an SPL Plug-in

Some System Programming Language (SPL) plug-ins require manual loading onto the Oracle® Enterprise Session Border Controller (E-SBC.

The process to load and enable an SPL includes the following steps.

  1. Upload the SPL to the E-SBC. See "Upload an SPL Plug-in."
  2. Add the SPL to the E-SBC configuration. See "Add an SPL Plug-in to your Configuration."
  3. In a High Availability (HA) deployment, synchronize the SPL files across the HA pair. See "Synchronize an SPL Plug-in File Across an HA Pair."

Upload an SPL Plug-in

Manually send the SPL plug-in to the /code/spl directory.

Add an SPL Plug-in to the Configuration

You must add an SBC Programming Language (SPL) plug-in file to the spl-config element before the system can execute the plug-in. The system ignores any SPL plug-in that exists in the /code/spl directory that is not included in the spl-config element.

Before You Begin
  • Confirm that you have Superuser permissions

In the following procedure, you add the name of one or more SPL plug-ins to the spl-config configuration element. Note that the system executes SPL plug-ins in the order in which they were configured.

Procedure
  1. Access the spl-config configuration element.
    ORACLE# configure terminal
    ORACLE(configure)# system
    ORACLE(system)# spl-config
    ORACLE(spl-config)# 
  2. Type plugins , and press Enter. The system prompt changes to let you know that you can begin configuring individual parameters.
    ACMESYSTEM(spl-config)# plugins
    ACMESYSTEM(spl-plugins)#
  3. Type name, a space, and the name of the SPL file.
    ACMESYSTEM(spl-plugins)#name MediaPlayback.1.0.spl
    ACMESYSTEM(spl-plugins)#name LyncEmergencyCall.1.0.spl
    ACMESYSTEM(spl-plugins)#name SipHeaderExtensionMetadata.1.2.spl
    ACMESYSTEM(spl-plugins)#name UniversalCallId.1.spl
    ACMESYSTEM(spl-plugins)#name ComfortNoiseGeneration.1.1.spl
  4. Type done to save your work.
  5. Save and activate the configuration.
Next Steps
  • If your deployment supports a High Availability (HA) pair configuration, see "Synchronize SPL Files Across HA Pairs."

Synchronize SPL Plug-in Files Across an HA Pair

In a High Availability (HA) configuration, both the active and the standby systems require the same version of the SBC Programming Language (SPL) plug-in script.

There is no means to synchronize SPL files automatically during a save and activate after you add SPL files to the configuration. To configure the standby system, execute the synchronize spl ACLI command. Note that the system only executes the synchronize spl command from the active system in a HA pair.

To copy all files in the /code/spl directory from the active system to the same directory on the standby do not include any arguments. Note that this procedure overwrites any existing files on the standby system with the same name.

To copy individual files, add the specific filename as an argument to the synchronize spl command, for example,

ACMEPACKET#synchronize spl MediaPlayback.1.0.spl
ACMEPACKET#synchronize spl LyncEmergencyCall.1.0.spl
ACMEPACKET#synchronize spl SipHeaderExtensionMetadata.1.2.spl
ACMEPACKET#synchronize spl UniversalCallId.1.spl
ACMEPACKET#synchronize spl ComfortNoiseGeneration.1.1.spl 

Procedure

  • In Superuser mode, type synchronize spl, and press Enter.
ACMEPACKET# synchronize spl

SBC Deployment Behind a NAT Device

Use the Support for SBC Behind NAT SPL plug-in for deploying the Oracle® Enterprise Session Border Controller (E-SBC) on the private network side of a Network Address Translation (NAT) device. The Support for SBC Behind NAT SPL plug-in changes information in SIP messages to hide the end point located inside the private network. The specific information that the Support for SBC Behind NAT SPL plug-in changes depends on the direction of the call, for example, from the NAT device to the E-SBC or from the E-SBC to the NAT device.

Configure the Support for SBC Behind NAT SPL plug-in for each SIP interface that is connected to a NAT device. One public-private address pair is required for each SIP interface that uses the SPL plug-in, as follows.

  • The private IP address must be the same as the SIP Interface IP address.
  • The public IP address must be the public IP address of the NAT device.

The following illustrations show the SBC deployed in the private network behind a NAT device, using the Support for SBC Behind NAT SPL plug-in. Examples follow each illustration to show where the Support for SBC Behind NAT SPL plug-in changes the SIP message information.

Call Initiated on the Access Side

In the following illustration, UA1 invites UA2 to a session and UA2 responds.

Illustration of call flow across the NAT from the access side.

#1. UA1 sends an INVITE through the NAT device to the Oracle® Enterprise Session Border Controller with the following message.

INVITE sip:service@10.0.0.99:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.1:5060;branch=z9hG4bK-3539-1-0
Contact: sip:sipp@10.0.0.1:5060
…
Content-Type: application/sdp

o=user1 53655765 2353687637 IN IP4 10.0.0.1
c=IN IP4 10.0.0.1
…

The Support for SBC Behind NAT SPL plug-in looks for the public SIP Interface IP address 10.0.0.99 in R-URI, Via, Contact, and SDP. The SPL plug-in finds 10.0.0.99 in R-URI and changes it to the private SIP Interface IP address 192.168.0.1.

INVITE sip:service@192.168.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.1:5060;branch=z9hG4bK-3539-1-0
Contact: sip:sipp@10.0.0.1:5060
…
Content-Type: application/sdp

o=user1 53655765 2353687637 IN IP4 10.0.0.1
c=IN IP4 10.0.0.1
…

#2. The Oracle® Enterprise Session Border Controller sends a Reply to UA1.

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.0.0.1:5060;received=192.168.0.70;branch=z9hG4bK-3539-1-0
Contact: <sip:192.168.0.1:5060;transport=udp>
Content-Type: application/sdp
…
o=user1 53655765 2353687637 IN IP4 192.168.0.1
c=IN IP4 192.168.0.1
…

The Support for SBC Behind NAT SPL plug-in looks for the private SIP interface IP address 192.168.0.1 in R-URI, Via, Contact, and SDP. The SPL plug-in finds 192.168.0.1 in Contact and SDP and changes it to the public IP 10.0.0.99.

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.0.0.1:5060;received=192.168.0.70;branch=z9hG4bK-3539-1-0
Contact: <sip:10.0.0.99:5060;transport=udp>
Content-Type: application/sdp
…
o=user1 53655765 2353687637 IN IP4 10.0.0.99
c=IN IP4 10.0.0.99
…

Call Initiated on the Core Side

In the folowing illustration, UA2 invites UA1 to a session and UA1 responds.

Ilustration of call flow across the NAT from the core side.

#1. The Oracle® Enterprise Session Border Controller sends an Invite to UA1.

INVITE sip:service@10.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.1:5060;branch=z9hG4bKbgs21h30a8kh8okcv790.1
Contact: <sip:sipp@192.168.0.1:5060;transport=udp>
Content-Type: application/sdp
…
o=user1 53655765 2353687637 IN IP4 192.168.0.1
c=IN IP4 192.168.0.1
…
The Support for SBC Behind NAT SPL plug-in looks for the private IP address 192.168.0.1 in R-URI, Via, Contact, and SDP. The SPL plug-in finds 192.168.0.1 in Via, Contact, and SDP and changes it to the public IP address 10.0.0.99.
INVITE sip:service@10.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.99:5060;branch=z9hG4bKbgs21h30a8kh8okcv790.1
Contact: <sip:sipp@10.0.0.99:5060;transport=udp>
Content-Type: application/sdp
…
o=user1 53655765 2353687637 IN IP4 10.0.0.99
c=IN IP4 10.0.0.99
…

#2. UA1 sends a Reply to the Oracle® Enterprise Session Border Controller.

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.0.0.99:5060;branch=z9hG4bKbgs21h30a8kh8okcv790.1
Contact: <sip: 10.0.0.1:5060;transport=UDP>
Content-Type: application/sdp
…
o=user1 53655765 2353687637 IN IP4 10.0.0.1
c=IN IP4 10.0.0.1
…

The Support for SBC Behind NAT SPL plug-in looks for the private SIP interface IP address 192.168.0.1 in R-URI, Via, Contact, and SDP. The SPL plug-in finds 192.168.0.1 in Via, changes it to the public IP 10.0.0.99.

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.1:5060;branch=z9hG4bKbgs21h30a8kh8okcv790.1
Contact: <sip: 10.0.0.1:5060;transport=UDP>
Content-Type: application/sdp
…
o=user1 53655765 2353687637 IN IP4 10.0.0.1
c=IN IP4 10.0.0.1
…

Configure the Session Border Controller (SBC) Behind a Network Address Translation (NAT) Device Option

Configure one public-private address pair for each SIP interface that uses the Support for SBC Behind NAT SPL plug-in, as follows.

  • The private IP address must be the same as the SIP interface IP address.
  • The public IP address must be the public IP address of the NAT device.

Before You Begin

  • Confirm that the SIP interface is configured.
  • Confirm that you are in the Superuser mode.

To configure the SIP interface IP addresses:

  1. Type configure terminal, and press <Enter>.
    ORACLE# configure terminal 
  2. Type system, and press <Enter>.
    ORACLE(configure)# system
    ORACLE(system)#  
  3. Type session-router, and press <Enter>.
    ORACLE(configure)# session-router
    ORACLE(session-router)#
  4. Type sip-interface, and press <Enter>.
    ORACLE(session-router)# sip-interface
    ORACLE(sip-interface)# 
    
  5. Select the SIP interface, and press <Enter>.
    ORACLE(sip-interface)# select
    <RealmID>:
    1: DefaultENT 172.16.1.100:5060
    2: DefaultSP  192.168.0.1:5060
    
    selection:2
    System_Primary(sip-interface)#
  6. Type spl-options +HeaderNatPrivateSipIfIp "<value>", where <value> is the private SIP interface IP address, and press <Enter>.
    ORACLE(sip-interface)#spl-options +HeaderNatPrivateSipIfIp=192.168.0.1
  7. Type spl-options +HeaderNatPublicSipIfIp "<value>", where <value> is the public IP address of the NAT device, and press <Enter>.
    ORACLE(sip-interface)#spl-options +HeaderNatPublicSipIfIp=10.0.0.99
  8. Type done, and press <Enter>.
  9. Save and activate the configuration.