4 Service Logic Controller (SLC)
This chapter explains how and why the SLC is used.
Service Logic Controller Overview
The SLC is used to handle calls using compiled control plan logic which is initially defined on the SMS and replicated to each SLC node.
All the main processing takes place inside the SLEE. On the SLC, this processing is primarily handled by slee_acs. Depending on the protocols involved on the network, a number of Network Connectivity Agent processes will also be running.
Service Logic Execution Environment
The main process working to handle requests between the network and the SLEE is slee_acs. slee_acs is part of the Oracle Communications Convergent Charging Controller, and is located in /IN/service_packages/ACS/
For more information on configuration options, refer to the appropriate product technical guide.
SLEE.cfg
Configuration for the SLEE in general is contained in /IN/service_packages/SLEE/etc/SLEE.cfg. This contains configuration for the resources allocated to the SLEE, and the applications, services and servicekeys of applications running on the SLEE.
- MAX<Parameter>: Contains the maximum resources allocated to the
SLEE, such as:
- Applications
- Services
- Dialogs
- Events
- Calls
- APPLICATION: Contains the location of the application startup scripts, and how many instances to run.
- INTERFACE: Contains the definitions for interfaces on the SLEE, their startup scripts and interface type.
- SERVICE: Defines the applications/interfaces as a service (can be done multiple times for each application/interface).
- SERVICEKEY: Defines the service to be triggered for received service keys.
ACS.conf
Configuration for other ACS components are contained in /IN/service_packages/ACS/etc/acs.conf. This contains general configuration options for the following processes:
- acsStatisticsDBInserter
- acsStatsMaster
- acsStatsLocal
- acsCompilerDaemon
It also contains configuration for acsChassis, which specifies:
- Plug-ins
- Services
- Normalization
- ACS EDR generation
- Some other specific call-handling scenario configuration options
eserv.config
Remaining configuration is primarily found inside /IN/service_packages/eserv.config. Each product has a top level section, (for example "ACS {}" for ACS) and the underlying processes for each product are configured in sub-sections of eserv.config.
There are a few exceptions to this. Most notably SUA and M3UA Interface configuration, which is found in /IN/service_packages/SLEE/etc/
SLEE Watchdog
The SLEE watchdog is responsible for keeping track of all the processes running inside the SLEE. Upon SLEE startup, all the processes are registered with the watchdog. The watchdog periodically checks each process to make sure it is processing events correctly.
If not, the watchdog marks the process as suspect and sends the process a management event. During the next watchdog cycle (default 30 seconds) the watchdog will check that the event has been processed. If the event was not actioned, the process will be aborted and restarted.
Abort information
Whenever a process is terminated or restarted by the watchdog, there are appropriate records in SLEE.log/syslog, for example:
watchdog(18186) WARNING: Interface beVWARS3 does not exist at PID 18169, presuming dead.
Jul 18 00:53:16.091448 watchdog(18186) WARNING: Sending SIGABRT to interface beVWARS3, process
18169.
Jul 18 00:53:42.250416 watchdog(18186) WARNING: Interface beVWARS3 does not exist at PID 18169,
presuming dead.
Jul 18 00:53:42.250844 watchdog(18186) WARNING: Restarting interface beVWARS3 (was process
18169).
Jul 18 00:53:42 watchdog(18186) SleeInterfaceInstance::start()=3 sleeInterfaceInstance.cc@156:
Starting Interface beVWARS3.sh: PID: 8237
The watchdog also has built in deadlock prevention. A timer is set before beginning a check loop to ensure that it does not get deadlocked on a semaphore. If the timer expires, the watchdog believes the SLEE is having serious issues and will restart the entire SLEE.
Note:
Some interactions with a process can stop it from responding to watchdog management events, one common example of this is a gcore. In this situation, the watchdog should be terminated or sent a SIGUSR1 signal to stop operating.The SLEE will need to be restarted in order for the watchdog to become operational again.
Update loader
The updateLoader process on the SLC is the client-side of IN Replication. It is responsible for receiving and applying updates from the smsMaster process on the SMS.
The updateLoader is run from inittab, and runs in run-level 2.
While not a traffic handling application, this process is absolutely crucial to the heath of the platform; non-replicated changes can cause major subscriber issues and revenue loss on a solution.
Checking replication status
On the SLC side, the updateLoader process and log file can be checked to make sure the process is up and running, and not presenting any errors.
See the SMS Replication section for information on the SQL queries required to check replication directly from the SMS database.
Full replication
In the event of a replication issue, it may be required to instruct the updateLoader to perform a full resync.
This performs a full collection of data from the SMS database. Depending on the amount of data, and what information is configured to replicate (for example, replicating subscriber data will mean information for every subscriber on the platform is replicated) replication can take a number of hours to complete.
Performing a Full Resync
$ vi /IN/service_packages/SMS/bin/updateLoaderStartup.sh Edit the result as shown:
. /IN/service_packages/SMS/.profile-scp
echo "`date` - Waiting for DB SCP"
pid=""
while [ -z "$pid" ] ; do
pid=`ps -ef|grep "ora_pmon_SCP"|awk '$8!="grep"{print$2}'`
if [ -z "$pid" ] ; then
echo "..."
sleep 30
fi
done
echo "`date` - DB SCP is ready"
echo "`date` - Waiting for Replication Cfg"
while [ ! -f "/IN/service_packages/SMS/etc/replication.config" ] ; do
echo "..."
sleep 30
done
echo "`date` - Replication Cfg is ready"
exec /IN/service_packages/SMS/bin/updateLoader -nodeid 301 –resync
$ pkill updateLoader
Resync progress
The progress of a Full Resync can be monitored through /IN/service_packages/SMS/tmp/updateLoader.log:
Thu Nov 11 01:09:41 GMT 2010 - Waiting for DB SCP
Thu Nov 11 01:09:41 GMT 2010 - DB SCP is ready
Thu Nov 11 01:09:41 GMT 2010 - Waiting for Replication Cfg
Thu Nov 11 01:09:41 GMT 2010 - Replication Cfg is ready
initialiseNode: Reading '/IN/service_packages/SMS/etc/replication.def'
…
Node 301 SMS comparison/resync client ready.
Oct 11 01:09:44.966814 updateLoader(21378) NOTICE: Update Loader replication process started
(node 301)
Cancelling any current client action.
Oct 11 01:09:44.979322 updateLoader(21378) NOTICE: Reached master node 1 at `<IP Address>'
RES: Thu Oct 11 01:10:08 2010: Node 301, started processing X SMS and Y SCP records.
RES: Thu Oct 11 01:10:08 2010: Node 301, resynchronisation pass 1, started processing of X SMS
and Y SCP records.
Oct 11 01:10:08.291659 smsCompareResyncClient(21515) NOTICE: Beginning resynchronisation for
node 301.
RES: Thu Oct 11 01:10:18 2010: Node 301, table NP_DN_RANGE, group NP_DN_RANGE_0, processed A of
X SMS and B of Y SCP records.
Nov 11 01:12:05.308062 updateLoader(21378) NOTICE: Resynchronization Finished. Processing
Queued Updates
Node 301 SMS comparison/resync client ready.
Nov 11 01:12:05.353114 updateLoader(21378) NOTICE: Finished Processing Queued Updates
The process will periodically report how far through the resync it is, including number of rows (out of total rows - highlighted example).
Once complete, updateLoader will return to regular operations. It is recommended to remove the -resync flag as soon as the resync has finished and restart the process.
Network Connectivity Agents
Network connectivity agents (NCAs) exist to interface the various protocols running on the network with slee_acs and the rest of the SLEE.
For most NCAs, there is an associated process running to translate the incoming protocol to the internal protocol used by slee_acs (INAP).
Example NCAs
This table lists some examples of NCAs:
| Protocol | Package | Process | Log File Location |
|---|---|---|---|
| Diameter (Northbound) | DCD | diameterBeClient | /IN/service_packages/DCD/tmp |
| Diameter (Southbound) | DCA | diameterControlAgent | /IN/service_packages/DCA/tmp |
| MAP | MMX | xmsTrigger (via adapter) | /IN/service_packages/XMS/tmp |
| SIP | SCA | sca_if | /IN/service_packages/SLEE/tmp |
| SMPP | MMX | xmsTrigger (via adapter) | /IN/service_packages/XMS/tmp |
| SIGTRAN | SIGTRAN | sua_if / m3ua_if | /IN/service_packages/SLEE/tmp |
| XML/TCAP | TCAP_IF | xmlTcapInterface | /IN/service_packages/SLEE/tmp |
| USSD | UIS | ussd_gw | /IN/service_packages/UIS/tmp |
| SOAP/XML | OSD | osdInterface | /IN/service_packages/OSD/tmp |
| IS41 | IS41 | cdmagw (m3ua/sua) | /IN/service_packages/IDS41/tmp |
Checking Services
The SLEE service on the SLC can be checked using the interactive slee-ctrl interface. Slee-ctrl is part of the slee-ctrl package, and is generally available on all machines that run a SLEE.
Note:
The Monitoring and Managing chapter covers checking of services in more detail.Interactive interface
To enter the interactive interface, run slee-ctrl with no arguments. Enter:
$ slee-ctrl
Result: You are then presented with some environment information, and a slee-ctrl prompt:
SLEE Control: v,1.0.11: script v,1.21: functions v,1.48: pslist v,1.118
User acs_oper; session [5570]; terminal pts/3; started Thu Oct 28 03:53:48 GMT 2010
The following variables are set and will be used to run the SLEE.
SLEE_USER acs_oper
SLEE_SCRIPT /IN/service_packages/SLEE/bin/slee.sh
SLEE_CONFIG /IN/service_packages/SLEE/etc/SLEE.cfg
SLEE_LOG /IN/service_packages/SLEE/tmp/SLEE.log
[acs_oper] slee-ctrl>
Tip: Entering help
at prompt lists the valid commands.
Example status reporting
From the prompt, you can issue a series of different commands to interact with the SLEE, or get information about resources, and other things.
Some examples are shown below:
Status
To check the current status of the SLEE, including processes, enter:
[acs_oper] slee-ctrl> status
------------------------ Thu Oct 25 03:56:23 GMT 2010 --------------------------
C APP USER PID PPID STIME COMMAND
6 SLEE acs_oper 1402 1 00:12:35 /IN/service_packages/ACS/bin/slee_acs
1 SLEE acs_oper 1404 1 00:12:35 /IN/service_packages/SLEE/bin/capgw
1 SLEE acs_oper 1405 1 00:12:35 /IN/service_packages/RAP/bin/rap
1 SLEE acs_oper 1406 1 00:12:35 /IN/service_packages/LCP/bin/locApp
1 SLEE acs_oper 1407 1 00:12:35 /IN/service_packages/ACSUSC/bin/slee_acs
1 SLEE acs_oper 1408 1 00:12:35 /IN/service_packages/UIS/bin/ussdgw
1 SLEE acs_oper 1409 1 00:12:35 /IN/service_packages/SLEE/bin/timerIF
1 SLEE acs_oper 1410 1 00:12:35 /IN/service_packages/SLEE/bin/alarmIF
1 SLEE acs_oper 1411 1 00:12:35 IN/service_packages/ACS/bin/acsStatsLocalSLEE
1 SLEE acs_oper 1412 1 00:12:35 /IN/service_packages/SLEE/bin/replicationIF
1 SLEE acs_oper 1413 1 00:12:35 /IN/service_packages/E2BE/bin/BeClient
1 SLEE acs_oper 1414 1 00:12:35 /IN/service_packages/OSD/bin/osdInterface
1 SLEE acs_oper 1415 1 00:12:35 /IN/service_packages/SCA/bin/sca
1 SLEE acs_oper 1416 1 00:12:35 /IN/service_packages/RIMS/bin/rims
1 SLEE acs_oper 1417 1 00:12:35 /IN/service_packages/XMS/bin/xmsTrigger
4 SLEE acs_oper 1419 1 00:12:35 /IN/service_packages/SLEE/bin/m3ua_if
1 SLEE acs_oper 1427 1 00:12:36 /IN/service_packages/SLEE/bin/mapGenIF
1 SLEE acs_oper 1430 1 00:12:36 IN/service_packages/SLEE/bin/xmlTcapInterface
1 SLEE acs_oper 1432 1 00:12:36 /IN/service_packages/SLEE/bin//watchdog
total processes found = 27 [ 27 expected ]
================================= run-level 3 ==================================
Resources
To check the status of SLEE resources, in particular memory/CPU usage, enter:
[acs_oper] slee-ctrl> resources
------------------------ Fri Oct 29 01:28:31 GMT 2010 --------------------------
APP USER PID PPID S %CPU %MEM VSZ RSS TIME ELAPSED COMMAND
SLEE acs_oper 10267 1 S 0.0 4.0 633584 314720 00:02 04:45:10 slee_acs
SLEE acs_oper 10268 1 S 0.0 4.0 633584 314720 00:02 04:45:10 slee_acs
SLEE acs_oper 10269 1 S 0.0 4.0 633584 314728 00:02 04:45:10 slee_acs
SLEE acs_oper 10270 1 S 0.0 4.0 633584 314712 00:02 04:45:10 slee_acs
SLEE acs_oper 10271 1 S 0.0 4.0 633584 314728 00:02 04:45:10 slee_acs
SLEE acs_oper 10272 1 S 0.0 4.0 633584 314720 00:02 04:45:10 slee_acs
SLEE acs_oper 10273 1 S 0.1 3.4 527728 271768 00:43 04:45:10 timerIF
SLEE acs_oper 10274 1 S 0.0 3.4 527760 271800 00:00 04:45:10 alarmIF
SLEE acs_oper 10275 1 S 0.0 3.4 528040 272296 00:07 04:45:10 acsStatsLocalSLEE
SLEE acs_oper 10276 1 S 0.1 3.5 539712 276120 00:44 04:45:10 replicationIF
SLEE acs_oper 10277 1 S 0.1 3.7 552960 290896 00:53 04:45:10 BeClient
SLEE acs_oper 10278 1 S 0.0 3.6 544856 281864 00:00 04:45:10 xmlTcapInterface
SLEE acs_oper 10279 1 S 0.1 3.4 527784 271824 01:08 04:45:10 watchdog
total processes found = 13
================================= run-level 3 ==================================
Memory: total 7.9G, used 6.1G (77.6%) + 128.0K (0.0%) /tmp, free 1.8G (22.4%) OK
Swap: total 4.4G, used 2.1G (48.9%), free 2.2G (51.1%) OK
Call resources
To check the status of SLEE call resources, in particular free calls and events, enter:
[acs_oper] slee-ctrl> check 1
SLEE: Using shared memory offset: 0xc0000000
01:29:03 Dialogs Apps AppIns Servs Events Calls
[70000] [30] [296] [30] [207152] [25000]
01:29:03 70000 29 290 24 207146 25000
01:29:04 70000 29 290 24 207146 25000
01:29:05 70000 29 290 24 207146 25000
01:29:06 70000 29 290 24 207146 25000
01:29:07 70000 29 290 24 207146 25000
01:29:08 70000 29 290 24 207146 25000
01:29:09 70000 29 290 24 207146 25000
A dwindling number of free calls indicates a call leak (this means the number of available calls that the SLC is decreasing in such a manner that eventually it will no longer be able to serve traffic). In this situation the only real solution is to restart the SLEE and reset the available resources.
If the problem continues to happen, it will be prudent to investigate the type of traffic hitting the platform and attempt to determine what is triggering the leak. Slower response times from other network elements can also cause a decrease in free SLEE resources.
Stop and start
To stop, start, or restart the SLEE, enter as required at the prompt:
[acs_oper] slee-ctrl> stop
[acs_oper] slee-ctrl> start
[acs_oper] slee-ctrl> restart
Handling Database Connection Reset
If the database connection on SLC node is reset, restart the SLEE processes on it. A full resync has to been done before restarting the SLEE processes.
When the database goes down, or the connection gets reset on SLC, slee_acs is not automatically restarted because of the following reasons:
- For all of the active calls in SLC, the required session data such as call context, control plan, subscriber details etc. are cached during the call initiation. If the SLEE processes are restarted because of database reconnection, all the ongoing session data are lost, and all of the ongoing calls will end abruptly. In order to avoid this, all the processes are kept running to be able to serve all the subsequent request of active calls.
- When database goes down, a full resync is required to get the database synched for any profile updates and other database changes. Reconnection to database, without the resync would cause a lot of inconsistent data and configuration related issues.
In such scenarios, any new call will fail because slee_acs will not be able to fetch initial configuration data for the subscriber.