OpenCloud’s SIS includes the following features:
For details about a particular feature, please see the SIS Administration Guide. |
Comprehensive service interaction scripting
The Metaswitch SIS is a very powerful, flexible, and extendable, script-driven service-interaction platform. You can write SIS scripts to:
-
Define trigger rules that control how an incoming request is mapped to a service composition that should be used to process it
-
Combine multiple services (including a combination of SCP, SIP AS and Rhino-hosted services) in a service composition — to form new service offerings
-
Manage service interaction to isolate and control how services interact
-
Adjust signaling parameters before, and after services are invoked
Powerful Java APIs for extending the SIS
Whilst the SIS scripting language is very flexible, some service-interaction scenarios may require further customisation. For maximum power and flexibility, you can augmente the SIS via very powerful Java-based extension capabilities and invoke Java extension components from SIS scripts. For example, you can query an operator specific platform, such as a subscriber database, to adjust signaling parameters based on the query result.
The table below compares the relative capabilities of a composition script versus an extension component:
Composition Script | Extension Component | |
---|---|---|
Protocol knowledge |
Limited to triggering protocol |
Can use any protocol available in the SLEE |
Signaling parameters that can be modified |
Limited to those provided by SIS variables |
Any |
Access to provisioned data |
None |
Any arbitrary internal or external data store |
Monitor and change signaling parameters
With SIS extension capabilities, you can inspect and modify call-signaling parameters between the time the SIS decides to invoke a particular composition service and when it actually does. You can use this feature, for example, to select a specific external SCP or AS when triggering an external service, and modify call parameters before the trigger message is sent.
Comprehensive operations and management
You can manage the SIS by:
-
Command-line —
sis-console
, a command-line console, provides access to almost all SIS configuration functions, and all SIS management and provisioning functions. Thesis-console
is an extension to the Rhino Command-Line Console (rhino-console), so you can manage both Rhino and SIS from the same session.
or
-
Standard management interfaces — any external client that can manage Rhino can also manage the SIS using interfaces defined as JMX MBeans, registered with the platform MBean server.
Example sis-console session
Below is an example of a sis-console
session:
[admin@localhost (#1)] help Available command categories: auditing Manage Rhino's auditing subsystem bindings Manage component bindings config Import, export, and manage Rhino configuration deployment Install, uninstall, and view SLEE deployable units general Rhino console help and features housekeeping Housekeeping and maintenance functions license Install, remove and view Rhino licenses limiting Manage Rhino's limiting subsystem logging Configure Rhino's internal logging subsystem namespaces Manage namespaces persistence Configure Rhino's external database persistence subsystem profile Manage profiles and profile tables resources Manage resource adaptors sas Manage SAS tracing security Manage Rhino security services Manage services running in the SLEE sis General SIS management operations sis-address-subscriptionsManage SIS address subscriptions sis-compositions Deploy, undeploy, and view SIS compositions sis-experimental-featuresManage SIS experimental features sis-extension-refs Create, remove, view, and manage SIS extension references sis-interceptor-refs Create, remove, view, and manage SIS interceptor references sis-interceptors Deploy, undeploy, and view SIS interceptors sis-macros Deploy, undeploy, and view SIS macros sis-networkinterfaces Manage SIS network interfaces sis-service-refs Create, remove, view, and manage SIS service references and external platform definitions sis-triggeraddresstracingManage SIS trigger address tracing sis-triggers Deploy, undeploy, view and activate SIS triggers sleestate Query and manage Rhino SLEE state snmp Manage Rhino SNMP agent configuration thresholdrules Manage threshold alarm rules trace View and set SLEE trace levels using the trace MBean usage View SLEE Service usage statistics usertransaction Manage client-demarcated transaction boundaries Enter help <category name | command name substring> for a list of available commands [admin@localhost (#2)] listtriggers sis-in TriggerID[name=CheckParameters,vendor=OpenCloud,version=1.0] TriggerID[name=O-Trigger Handling,vendor=OpenCloud,version=1.0] TriggerID[name=T-Trigger Handling,vendor=OpenCloud,version=1.0] TriggerID[name=Generic Failure Handling,vendor=OpenCloud,version=1.0] [admin@localhost (#3)] activatetrigger sis-in "name=O-Trigger Handling,vendor=OpenCloud,version=1.0" Activated trigger TriggerID[name=O-Trigger Handling,vendor=OpenCloud,version=1.0] [admin@localhost (#4)] installcomposition sis-in composition-7000.xml Installed composition CompositionID[name=7000,vendor=OpenCloud,version=1.0] from file composition-7000.xml [admin@localhost (#5)] listservices ServiceID[name=Call Barring Service,vendor=OpenCloud,version=0.2] ServiceID[name=Call Forwarding Service,vendor=OpenCloud,version=0.2] [admin@localhost (#6)] activateservice "name=Call Barring Service,vendor=OpenCloud,version=0.2" Activating service ServiceID[name=Call Barring Service,vendor=OpenCloud,version=0.2] on node(s) [101] Service transitioned to the Active state on node 101
Online administration
The SIS supports administration and maintenance while actively processing network traffic. SIS components (such as macros, triggers, and service compositions) can be installed, upgraded, and removed from the SIS, subscribers provisioned, and other administration tasks performed all without loss of service. Moreover, you can use an internal audit-management function to validate the SIS configuration (for example, to find any service composition referencing a SLEE service that has not been activated).
Powerful and flexible fine-grained tracing
Debugging service problems experienced by individual subscribers can be difficult at the best of times. The SIS provides a targeted or fine-grained tracing feature that lets you enable various levels of debugging for specific service compositions or subscribed addresses. This means you do not need to enable debug logging for all calls that pass through the SIS — which can can overwhelmingly degrade performance — when you’re only interested in calls to (or with reference to) particular addresses, or that trigger certain compositions. With fine-grained tracing, you can debug isolated problems easily — without affecting the user experience of all other subscribers (whose calls are routed through the platform).
Example fine-grained tracing
Below are example sis-console commands and Rhino log output using fine-grained tracing.
sis-console commands
[admin@localhost (#1)] setfinegrainedtracingenabled sis-in true Fine-grained tracing enabled [admin@localhost (#2)] reload sis-in Reloaded SIS RA Entity sis-in [admin@localhost (#3)] updateaddresssubscription sis-in 3460001234 -debuglevel 3 Updated subscription 34600001234
Rhino log output
2011-03-20 15:27:51.843 Info [trace.sis_in.insis.trigger-handler] [[dialogID=8]] dialog debugging triggered for [dialogID=8] at debug level 3 due to a subscription profile 2011-03-20 15:27:51.844 Info [trace.sis_in.insis.trace.flow] Cap 0 NW ---------O_InitialDP clg=600001234 cld=610031274---------> INSIS 2011-03-20 15:27:51.902 Info [trace.sis_in.insis.trace.detail] Cap 0 NW -> INSIS(event:InitialDP) CCInitialDPRequestEvent[ dialog=CGIN-Dialog:[dialogID=8] invokeId=0 argument=[ serviceKey 50 ... ] ] 2011-03-20 15:27:51.903 Info [trace.sis_in.insis.trigger-handler] [[dialogID=8]] accepting open request 2011-03-20 15:27:51.948 Info [trace.sis_in.insis.trace.flow] Cap 0 NW <-----------------OpenResponse[accepted]------------------ INSIS 2011-03-20 15:27:51.948 Info [trace.sis_in.insis.trace.detail] Cap 0 NW <- INSIS(event:OpenRequest) DialogOpenAcceptEvent[ dialog=CGIN-Dialog:[dialogID=8] responder=null ] 2011-03-20 15:27:51.949 Info [trace.sis_in.insis.trigger-handler] [[dialogID=8]] setState(SERVICE_COMPOSITION_DISCOVERY -> MONITORING) 2011-03-20 15:27:53.075 Info [trace.sis_in.insis.virtual-ssf] [[dialogID=8]] adding events [OpenRequest, InitialDP, Delimiter] to process queue 2011-03-20 15:27:53.076 Info [trace.sis_in.insis.virtual-ssf] [[dialogID=8]] setFlags(INITIAL: [] -> [BUSY_INPUT]) 2011-03-20 15:27:53.154 Info [trace.sis_in.insis.virtual-ssf] [[dialogID=8]] beginning event processing of: [OpenRequest, InitialDP, Delimiter] 2011-03-20 15:27:53.154 Info [trace.sis_in.insis.model] [[dialogID=8]] preprocessing [OpenRequest, InitialDP, Delimiter] 2011-03-20 15:27:53.173 Info [trace.sis_in.insis.model] [[dialogID=8]] current call leg state: [1:{COLLECTED_INFO:[]}] 2011-03-20 15:27:53.173 Info [trace.sis_in.insis.virtual-ssf] [[dialogID=8]] setState(INITIAL -> SERVICE_COMPOSITION_EVALUATION: [BUSY_INPUT]) 2011-03-20 15:27:53.216 Info [trace.sis_in.insis.virtual-ssf] [[dialogID=8]] service composition says to invoke ServiceRefID[VPN] 2011-03-20 15:27:53.235 Info [trace.sis_in.insis.virtual-ssf] [[dialogID=8]] entering event processing loop for event(s): [OpenRequest, InitialDP, Delimiter] ...
Auditing
The SIS can keep an audit trail of key decisions made during processing of trigger events. You can enable audit logging for specific service compositions or subscribed addresses, or globally for all calls. The SIS outputs audit logs to their own SLEE tracer, so they can be easily filtered to a separate file log.
Example SIS audit log
For brevity, the following example truncates trigger event descriptions — actual audit traces include all event parameters. |
2011-03-20 15:49:20.543 Info [trace.sis_in.insis.audit] [[dialogID=77]]: trigger event: InitialDP[dialog=...serviceKey=50,callingPartyNumber=...610012359... eventType=(o) collected info...calledPartyBCDNumber=...610032089...] address 34610012359 matched subscription 34610012359 matched TriggerID\[name=O-Trigger Handling,vendor=OpenCloud,version=1.0] selected CompositionID[name=Originating,vendor=OpenCloud,version=1.0] invoking service VPN invoking service Call Barring invoking service Call Duration Logging composition completed 2011-03-20 15:49:20.577 Info [trace.sis_in.insis.audit] [[dialogID=78]]: trigger event: InitialDP[dialog=...serviceKey=50,callingPartyNumber=...610012359... calledPartyNumber=...610032089...eventType=(t) attempt authorized...] address 34610032089 matched subscription 34610032089 matched TriggerID[name=T-Trigger Handling,vendor=OpenCloud,version=1.0] selected CompositionID[name=Terminating,vendor=OpenCloud,version=1.0] invoking service Call Barring evaluating service-input-interceptor service-input-interceptor complete; invoking service invoking service Call Forwarding invoking service Call Duration Logging composition completed 2011-03-20 15:49:21.513 Info [trace.sis_in.insis.audit] [[dialogID=79]]: trigger event: InitialDP[dialog=...serviceKey=50,callingPartyNumber=...620005076... calledPartyNumber=...610032605...eventType=(t) attempt authorized...] address 34610032605 matched subscription 34610032605 matched TriggerID[name=T-Trigger Handling,vendor=OpenCloud,version=1.0] selected CompositionID[name=Terminating,vendor=OpenCloud,version=1.0] invoking service Call Barring evaluating service-input-interceptor service-input-interceptor complete; invoking service invoking service Call Forwarding invoking service Call Duration Logging composition completed 2011-03-20 15:49:22.452 Info [trace.sis_in.insis.audit] [[dialogID=80]]: trigger event: InitialDP[dialog=...serviceKey=50,callingPartyNumber=...610021092... eventType=(o) collected info...calledPartyBCDNumber=...620002308...] address 34610021092 matched subscription 34610021092 matched TriggerID[name=O-Trigger Handling,vendor=OpenCloud,version=1.0] selected CompositionID[name=Originating,vendor=OpenCloud,version=1.0] invoking service VPN invoking service Call Barring invoking service Call Duration Logging composition completed