Difference between revisions of "CAMEL proxy"

From ss7api.null.ro
Jump to: navigation, search
Line 18: Line 18:
 
===='general' section====
 
===='general' section====
  
'''application''': Application parameter in camel messages sent/handled for SSF dialogs.\\
+
'''application''': Application parameter in camel messages sent/handled for SSF dialogs.<br/>
This parameter is required and is not applied on reload (can't be changed after module starts).\\
+
This parameter is required and is not applied on reload (can't be changed after module starts).<br/>
\\
+
<br/>
'''gt''': Global Title to be set in the first message sent in the SSF dialog.\\
+
'''gt''': Global Title to be set in the first message sent in the SSF dialog.<br/>
This parameter is applied on reload.\\
+
This parameter is applied on reload.<br/>
TCAP address parameters to be set in the first message sent back to SSF can also be set using '''addr.''' prefix.\\
+
TCAP address parameters to be set in the first message sent back to SSF can also be set using '''addr.''' prefix.<br/>
E.g. GT can be set as '''addr.CallingPartyAddress.gt''' along with other parameters like number nature '''addr.CallingPartyAddress.nature'''.\\
+
E.g. GT can be set as '''addr.CallingPartyAddress.gt''' along with other parameters like number nature '''addr.CallingPartyAddress.nature'''.<br/>
Setting the GT without other parameters is the same as:\\
+
Setting the GT without other parameters is the same as:<br/>
addr.CallingPartyAddress.gt=[GT set]\\
+
addr.CallingPartyAddress.gt=[GT set]<br/>
addr.CallingPartyAddress.route=gt\\
+
addr.CallingPartyAddress.route=gt<br/>
addr.CallingPartyAddress.gt.encoding=bcd\\
+
addr.CallingPartyAddress.gt.encoding=bcd<br/>
addr.CallingPartyAddress.gt.translation=0\\
+
addr.CallingPartyAddress.gt.translation=0<br/>
addr.CallingPartyAddress.gt.plan=isdn\\
+
addr.CallingPartyAddress.gt.plan=isdn<br/>
addr.CallingPartyAddress.gt.nature=international\\
+
addr.CallingPartyAddress.gt.nature=international<br/>
\\
+
<br/>
'''servicekey''': CAMEL serviceKey to check when in received initialDP and set when forwarding them to SCFs.\\
+
'''servicekey''': CAMEL serviceKey to check when in received initialDP and set when forwarding them to SCFs.<br/>
Allowed interval: 0..2147483647.\\
+
Allowed interval: 0..2147483647.<br/>
Defaults to 0 if missing or invalid.\\
+
Defaults to 0 if missing or invalid.<br/>
This parameter is applied on reload for new dialogs only.\\
+
This parameter is applied on reload for new dialogs only.<br/>
\\
+
<br/>
'''query_scf''': Boolean value indicating whether to query for proxied SCFs update when processing initialDP.\\
+
'''query_scf''': Boolean value indicating whether to query for proxied SCFs update when processing initialDP.<br/>
Is enabled a 'scf.query' message will be enqueued and the module will wait for a 'scf.response' message to continue IDP processing.\\
+
Is enabled a 'scf.query' message will be enqueued and the module will wait for a 'scf.response' message to continue IDP processing.<br/>
Defaults to no.\\
+
Defaults to no.<br/>
\\
+
<br/>
'''print_msg''': boolean/string: Print sent/received messages to output if debug level is at least 9.\\
+
'''print_msg''': boolean/string: Print sent/received messages to output if debug level is at least 9.<br/>
Allowed values are boolean values or 'verbose' string.\\
+
Allowed values are boolean values or 'verbose' string.<br/>
If verbose is specified, the message will be dumped on output.\\
+
If verbose is specified, the message will be dumped on output.<br/>
Defaults to no.\\
+
Defaults to no.<br/>
\\
+
<br/>
'''print_xml''': boolean/string: Print sent/received XML data to output if debug level is at least 9.\\
+
'''print_xml''': boolean/string: Print sent/received XML data to output if debug level is at least 9.<br/>
This parameter is ignored if print_msg is disabled.\\
+
This parameter is ignored if print_msg is disabled.<br/>
Allowed values are boolean values or 'verbose' string.\\
+
Allowed values are boolean values or 'verbose' string.<br/>
If verbose is specified, XML elements' children, attributes or text will be shown on separate lines.\\
+
If verbose is specified, XML elements' children, attributes or text will be shown on separate lines.<br/>
Defaults to no.\\
+
Defaults to no.<br/>
\\
+
<br/>
'''idp_calling_required''': boolean: Calling party number is required (non empty) in initialDP.\\
+
'''idp_calling_required''': boolean: Calling party number is required (non empty) in initialDP.<br/>
Default to yes.\\
+
Default to yes.<br/>
\\
+
<br/>
'''idp_called_required''': boolean: Called party number is required (non empty) in initialDP.\\
+
'''idp_called_required''': boolean: Called party number is required (non empty) in initialDP.<br/>
Default to yes.\\
+
Default to yes.<br/>
\\
+
<br/>
'''dispatcher_maxthreads''': integer: Maximum number of message dispatch threads to use.\\
+
'''dispatcher_maxthreads''': integer: Maximum number of message dispatch threads to use.<br/>
Set to 0 to enqueue messages using yate engine.\\
+
Set to 0 to enqueue messages using yate engine.<br/>
Defaults to 0.\\
+
Defaults to 0.<br/>
When reloaded it can't be set to 0 (e.g. once set to a non 0 value it can be changed to non 0 values only).\\
+
When reloaded it can't be set to 0 (e.g. once set to a non 0 value it can be changed to non 0 values only).<br/>
\\
+
<br/>
 
====Proxied SCF section(s)====
 
====Proxied SCF section(s)====
  
'''enable''': boolean: Enable the SCF.\\
+
'''enable''': boolean: Enable the SCF.<br/>
Defaults to yes.\\
+
Defaults to yes.<br/>
\\
+
<br/>
'''priority''': integer: Priority in handling messages from SSF.\\
+
'''priority''': integer: Priority in handling messages from SSF.<br/>
Defaults to 0.\\
+
Defaults to 0.<br/>
\\
+
<br/>
'''servicekey''': integer: Value with which the IDP serviceKey should be rewritten.\\
+
'''servicekey''': integer: Value with which the IDP serviceKey should be rewritten.<br/>
Allowed interval: 0..2147483647.\\
+
Allowed interval: 0..2147483647.<br/>
Defaults to SSF service key set in 'general' section.\\
+
Defaults to SSF service key set in 'general' section.<br/>
\\
+
<br/>
'''dp''': string: Comma separated list of detection points that should match the one received in IDP in order to contact this SCF.\\
+
'''dp''': string: Comma separated list of detection points that should match the one received in IDP in order to contact this SCF.<br/>
Items may be DP value or name.\\
+
Items may be DP value or name.<br/>
Defaults to termAttemptAuthorized if empty or all DPs are invalid.\\
+
Defaults to termAttemptAuthorized if empty or all DPs are invalid.<br/>
\\
+
<br/>
'''endfatal''': boolean: Indicate whether or not terminate the proxy dialog when this dialog ends.\\
+
'''endfatal''': boolean: Indicate whether or not terminate the proxy dialog when this dialog ends.<br/>
Defaults to no.\\
+
Defaults to no.<br/>
\\
+
<br/>
'''errorfatal''': boolean: Indicate whether or not an error or reject component from the SCF should terminate the whole proxy dialog.\\
+
'''errorfatal''': boolean: Indicate whether or not an error or reject component from the SCF should terminate the whole proxy dialog.<br/>
Defaults to no.\\
+
Defaults to no.<br/>
\\
+
<br/>
'''local''': boolean: The SCF is local (a local application) or external (it passes through the SS7 network to reach it).\\
+
'''local''': boolean: The SCF is local (a local application) or external (it passes through the SS7 network to reach it).<br/>
Defaults to no (external application).\\
+
Defaults to no (external application).<br/>
\\
+
<br/>
'''instances''': integer: Number of local application instances.\\
+
'''instances''': integer: Number of local application instances.<br/>
This parameter is ignored for non local SCFs.\\
+
This parameter is ignored for non local SCFs.<br/>
If non 0 it must be set to a value greater then 1.\\
+
If non 0 it must be set to a value greater then 1.<br/>
Defaults to 0.\\
+
Defaults to 0.<br/>
If non 0 the module will build the required number of SCFs and will pick them using a round-robin algorithm.\\
+
If non 0 the module will build the required number of SCFs and will pick them using a round-robin algorithm.<br/>
Each application's name will be built from SCF application name concatenated with instance suffix startting from 1.\\
+
Each application's name will be built from SCF application name concatenated with instance suffix startting from 1.<br/>
 
E.g.:
 
E.g.:
  [=
+
   
[proxy SCP]
+
[proxy SCP]
instances=2
+
instances=2
=]
+
 
Will build 2 applications: SCP1 and SCP2.\\
+
Will build 2 applications: SCP1 and SCP2.<br/>
\\
+
<br/>
'''handles''': string: Comma separated list of operations received from the SSF accepted by this SCF.\\
+
'''handles''': string: Comma separated list of operations received from the SSF accepted by this SCF.<br/>
Except ERB (Event Report BCSM), which is sent to all SCFs that match the reported DP, all operations that are handled by a SCF should be listed, otherwise the proxy will report to the SSF an error.\\
+
Except ERB (Event Report BCSM), which is sent to all SCFs that match the reported DP, all operations that are handled by a SCF should be listed, otherwise the proxy will report to the SSF an error.<br/>
\\
+
<br/>
'''waittime''': integer: Time, in miliseconds, to wait for a result from a SCF while being in Waiting For Instructions state, after which the dialog is aborted.\\
+
'''waittime''': integer: Time, in miliseconds, to wait for a result from a SCF while being in Waiting For Instructions state, after which the dialog is aborted.<br/>
Defaults to 3000.\\
+
Defaults to 3000.<br/>
Minimum allowed value is 1000.\\
+
Minimum allowed value is 1000.<br/>
\\
+
<br/>
All other parameters starting with 'addr.' prefix will be put in dialog begin message sent for this SCF.\\
+
All other parameters starting with 'addr.' prefix will be put in dialog begin message sent for this SCF.<br/>
They should be set for non local SCFs.\\
+
They should be set for non local SCFs.<br/>
 
Parameters:
 
Parameters:
 
* '''addr.CalledPartyAddress.route''' - string. It can be set to values: gt/ssn. It specifies how the SCCP address should be routed.
 
* '''addr.CalledPartyAddress.route''' - string. It can be set to values: gt/ssn. It specifies how the SCCP address should be routed.
Line 128: Line 128:
  
 
====Example====
 
====Example====
[=
 
[general]
 
application=camelProxy
 
servicekey=1
 
gt=8820003
 
  
[proxy crbt-scp]
+
[general]
servicekey=2
+
application=camelProxy
local=true
+
servicekey=1
 +
gt=8820003
 +
 +
[proxy crbt-scp]
 +
servicekey=2
 +
local=true
 +
 +
[proxy pps-scp]
 +
servicekey=99
 +
priority=2
 +
errorfatal=true
 +
handles=applyChargingReport
 +
addr.CalledPartyAddress.gt=8820007
 +
addr.CalledPartyAddress.route=gt
 +
addr.CalledPartyAddress.gt.encoding=bcd
 +
addr.CalledPartyAddress.gt.tt=0
 +
addr.CalledPartyAddress.gt.np=isdn
 +
addr.CalledPartyAddress.gt.nature=international
 +
addr.CallingPartyAddress.gt=8820003
 +
addr.CallingPartyAddress.route=gt
 +
addr.CallingPartyAddress.gt.encoding=bcd
 +
addr.CallingPartyAddress.gt.tt=0
 +
addr.CallingPartyAddress.gt.np=isdn
 +
addr.CallingPartyAddress.gt.nature=international
  
[proxy pps-scp]
 
servicekey=99
 
priority=2
 
errorfatal=true
 
handles=applyChargingReport
 
addr.CalledPartyAddress.gt=8820007
 
addr.CalledPartyAddress.route=gt
 
addr.CalledPartyAddress.gt.encoding=bcd
 
addr.CalledPartyAddress.gt.tt=0
 
addr.CalledPartyAddress.gt.np=isdn
 
addr.CalledPartyAddress.gt.nature=international
 
addr.CallingPartyAddress.gt=8820003
 
addr.CallingPartyAddress.route=gt
 
addr.CallingPartyAddress.gt.encoding=bcd
 
addr.CallingPartyAddress.gt.tt=0
 
addr.CallingPartyAddress.gt.np=isdn
 
addr.CallingPartyAddress.gt.nature=international
 
=]
 
  
 
=== camel_map configuration ===
 
=== camel_map configuration ===
[=
 
[local camelProxy]
 
translator=scp_proxy
 
capabilities=Camel
 
  
[tcap scp_proxy]
+
[local camelProxy]
type=CAMEL
+
translator=scp_proxy
tcap=tcap_msc
+
capabilities=Camel
port=0
+
 +
[tcap scp_proxy]
 +
type=CAMEL
 +
tcap=tcap_msc
 +
port=0
 +
 +
[local pps-scp]
 +
translator=scp_pps
 +
capabilities=Camel
 +
 +
[tcap scp_pps]
 +
type=CAMEL
 +
tcap=tcap_pps
 +
port=0
  
[local pps-scp]
 
translator=scp_pps
 
capabilities=Camel
 
 
[tcap scp_pps]
 
type=CAMEL
 
tcap=tcap_pps
 
port=0
 
=]
 
 
===camel_bcsm_proxy.conf.sample===
 
===camel_bcsm_proxy.conf.sample===
[=
 
; NOTE: This module is not loaded automatically, it needs a line in yate.conf:
 
; [postload]
 
; ${modulepath}/sig/camel_bcsm_proxy${modsuffix}=yes
 
 
[general]
 
; Unless explicitly specified, all parameters are applied on reload for new
 
;  dialogs only
 
; All parameters starting with 'addr.' prefix will be put in the first message sent to SSF
 
 
; application: string: Application parameter in camel messages sent by the module
 
; This parameter is required
 
; This parameter is not applied on reload
 
;application=
 
 
; gt: string: Global Title to be set in the first message sent in the SSF dialog
 
; This parameter is applied on reload for new dialogs only
 
; If non empty other calling party address parameters will be set to default values
 
; This parameter can be overriden by addr.CallingPartyAddress.gt parameter
 
;gt=
 
 
; servicekey: integer: CAMEL serviceKey to check in received initialDP messages and
 
;  set when forwarding them to SCFs
 
; Allowed interval: 0..2147483647
 
; Defaults to 0 if missing or invalid
 
; This parameter is applied on reload for new dialogs only
 
;servicekey=0
 
 
; query_scf: boolean: Query for proxied SCFs update when processing initialDP
 
; Is enabled a 'scf.query' message will be enqueued and the module will wait
 
;  for a 'scf.response' message to continue IDP processing
 
; The response must return the list of SCFs to proxy
 
; The list may be shorter then configured SCFs
 
; New SCFs, other then configured ones, will be ignored
 
; The following SCF parameters can be overridden: priority, servicekey, errorfatal,
 
;  handles, waittime and all parameters starting with 'addr.' prefix
 
; Defaults to no
 
;query_scf=no
 
 
; component_ttl: integer: Component time to live in milliseconds
 
; Minimum allowed value is 1000
 
; Defaults to 15000
 
;component_ttl=15000
 
 
; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds
 
; Minimum allowed value is 1000
 
; It can be set to 0 to keep it alive until the remote party terminates the dialog
 
; Defaults to 5000
 
;dialog_idle_ttl=5000
 
 
; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds
 
; Minimum allowed value is 1000.
 
; It can be set to 0 to remove the dialog after termination
 
; Defaults to 0
 
;dialog_ended_ttl=0
 
 
; export_xml_as: string: Specify in which way the XML will be passed along into
 
;  Yate messages
 
; Allowed values are:
 
;  - string: pass the XML as a string
 
;  - object: pass the XML as an object
 
;  - both: pass the XML as a string and object
 
; Defaults to object
 
;export_xml_as=object
 
 
; print_msg: boolean/string: Print sent/received messages to output if debug
 
;  level is at least 9
 
; Allowed values are boolean values or 'verbose' string
 
; If verbose is specified, the message will be dumped on output
 
; Defaults to no
 
;print_msg=no
 
 
; print_xml: boolean/string: Print sent/received XML data to output if debug
 
;  level is at least 9
 
; This parameter is ignored if print_msg is disabled
 
; Allowed values are boolean values or 'verbose' string
 
; If verbose is specified, XML elements' children, attributes or text will be
 
;  shown on separate lines
 
; Defaults to no
 
;print_xml=no
 
 
; idp_calling_required: boolean: Calling party number is required (non empty) in initialDP
 
; Default to yes
 
;idp_calling_required=yes
 
 
; idp_called_required: boolean: Called party number is required (non empty) in initialDP
 
; Default to yes
 
;idp_called_required=yes
 
 
; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use
 
; Set to 0 to enqueue messages using yate engine
 
; Defaults to 0
 
; When reloaded it can't be set to 0 (e.g. once set to a non 0 value it can be changed to
 
;  non 0 values only)
 
;dispatcher_maxthreads=0
 
 
;dispatcher_priority: string: Default priority of message dispatch threads
 
; Can be one of: lowest, low, normal, high, highest
 
; High priorities need superuser privileges on POSIX operating systems
 
; Low priorities are not recommended except for debugging
 
; Defaults to 'normal'
 
; This parameter is applied on reload for new threads only
 
;dispatcher_priority=normal
 
 
 
;[proxy appname]
 
; This section configures a proxied SCF
 
; 'appname' is the application name to be used for the SCF
 
 
; enable: boolean: Enable the SCF
 
; Defaults to yes
 
;enable=yes
 
 
; priority: integer: Priority in handling messages from SSF
 
; Defaults to 0
 
;priority=0
 
 
; servicekey: integer: Value with which the IDP serviceKey should be rewritten
 
; Allowed interval: 0..2147483647
 
; Defaults to SSF service key set in 'general' section
 
;servicekey=
 
 
; dp: string: Comma separated list of detection points that should match the one received in IDP
 
;  in order to contact this SCF
 
; Items may be DP value or name
 
; Defaults to termAttemptAuthorized if empty or all DPs are invalid
 
;dp=termAttemptAuthorized
 
 
; endfatal: boolean: Indicate whether or not terminate the proxy dialog when this dialog ends
 
; Defaults to no
 
;endfatal=no
 
 
; errorfatal: boolean: Indicate whether or not an error or reject component from
 
;  the SCF should terminate the whole proxy dialog
 
; Defaults to no
 
;errorfatal=no
 
 
; local: boolean: The SCF is local (a local application) or external (it passes
 
;  through the SS7 network to reach it)
 
; Defaults to no (external application)
 
;local=no
 
 
; instances: integer: Number of local application instances
 
; If non 0 the module will build the required number of SCFs and will pick them using a
 
;  round-robin algorithm
 
; Each application's name will be built from SCF application name concatenated with instance
 
;  suffix startting from 1
 
; E.g.
 
; [proxy SCP]
 
; instances=2
 
; Will build 2 applications: SCP1 and SCP2
 
; This parameter is ignored for non local SCFs
 
; If non 0 it must be set to a value greater then 1
 
; Defaults to 0
 
;instance=
 
 
; handles: string: Comma separated list of operations received from the SSF
 
;  accepted by this SCF
 
; NOTE: Except ERB (Event Report BCSM), which is sent to all SCFs that match the reported DP,
 
;  all operations that are handled by a SCF should be listed, otherwise the
 
;  proxy will report to the SSF an error
 
;handles=
 
 
; waittime: integer: Time, in miliseconds, to wait for a result from a SCF
 
;  while being in Waiting For Instructions state, after which the dialog
 
;  is aborted
 
; Defaults to 3000
 
; Minimum allowed value is 1000
 
;waittime=3000
 
 
; All other parameters starting with 'addr.' prefix will be put in dialog begin
 
;  message sent for this SCF
 
; E.g. addr.CalledPartyAddress.route=gt will be put as CalledPartyAddress.route=gt
 
  
=]
+
; NOTE: This module is not loaded automatically, it needs a line in yate.conf:
 +
; [postload]
 +
; ${modulepath}/sig/camel_bcsm_proxy${modsuffix}=yes
 +
 +
[general]
 +
; Unless explicitly specified, all parameters are applied on reload for new
 +
;  dialogs only
 +
; All parameters starting with 'addr.' prefix will be put in the first message sent to SSF
 +
 +
; application: string: Application parameter in camel messages sent by the module
 +
; This parameter is required
 +
; This parameter is not applied on reload
 +
;application=
 +
 +
; gt: string: Global Title to be set in the first message sent in the SSF dialog
 +
; This parameter is applied on reload for new dialogs only
 +
; If non empty other calling party address parameters will be set to default values
 +
; This parameter can be overriden by addr.CallingPartyAddress.gt parameter
 +
;gt=
 +
 +
; servicekey: integer: CAMEL serviceKey to check in received initialDP messages and
 +
;  set when forwarding them to SCFs
 +
; Allowed interval: 0..2147483647
 +
; Defaults to 0 if missing or invalid
 +
; This parameter is applied on reload for new dialogs only
 +
;servicekey=0
 +
 +
; query_scf: boolean: Query for proxied SCFs update when processing initialDP
 +
; Is enabled a 'scf.query' message will be enqueued and the module will wait
 +
;  for a 'scf.response' message to continue IDP processing
 +
; The response must return the list of SCFs to proxy
 +
; The list may be shorter then configured SCFs
 +
; New SCFs, other then configured ones, will be ignored
 +
; The following SCF parameters can be overridden: priority, servicekey, errorfatal,
 +
;  handles, waittime and all parameters starting with 'addr.' prefix
 +
; Defaults to no
 +
;query_scf=no
 +
 +
; component_ttl: integer: Component time to live in milliseconds
 +
; Minimum allowed value is 1000
 +
; Defaults to 15000
 +
;component_ttl=15000
 +
 +
; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds
 +
; Minimum allowed value is 1000
 +
; It can be set to 0 to keep it alive until the remote party terminates the dialog
 +
; Defaults to 5000
 +
;dialog_idle_ttl=5000
 +
 +
; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds
 +
; Minimum allowed value is 1000.
 +
; It can be set to 0 to remove the dialog after termination
 +
; Defaults to 0
 +
;dialog_ended_ttl=0
 +
 +
; export_xml_as: string: Specify in which way the XML will be passed along into
 +
;  Yate messages
 +
; Allowed values are:
 +
;  - string: pass the XML as a string
 +
;  - object: pass the XML as an object
 +
;  - both: pass the XML as a string and object
 +
; Defaults to object
 +
;export_xml_as=object
 +
 +
; print_msg: boolean/string: Print sent/received messages to output if debug
 +
;  level is at least 9
 +
; Allowed values are boolean values or 'verbose' string
 +
; If verbose is specified, the message will be dumped on output
 +
; Defaults to no
 +
;print_msg=no
 +
 +
; print_xml: boolean/string: Print sent/received XML data to output if debug
 +
;  level is at least 9
 +
; This parameter is ignored if print_msg is disabled
 +
; Allowed values are boolean values or 'verbose' string
 +
; If verbose is specified, XML elements' children, attributes or text will be
 +
;  shown on separate lines
 +
; Defaults to no
 +
;print_xml=no
 +
 +
; idp_calling_required: boolean: Calling party number is required (non empty) in initialDP
 +
; Default to yes
 +
;idp_calling_required=yes
 +
 +
; idp_called_required: boolean: Called party number is required (non empty) in initialDP
 +
; Default to yes
 +
;idp_called_required=yes
 +
 +
; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use
 +
; Set to 0 to enqueue messages using yate engine
 +
; Defaults to 0
 +
; When reloaded it can't be set to 0 (e.g. once set to a non 0 value it can be changed to
 +
;  non 0 values only)
 +
;dispatcher_maxthreads=0
 +
 +
;dispatcher_priority: string: Default priority of message dispatch threads
 +
; Can be one of: lowest, low, normal, high, highest
 +
; High priorities need superuser privileges on POSIX operating systems
 +
; Low priorities are not recommended except for debugging
 +
; Defaults to 'normal'
 +
; This parameter is applied on reload for new threads only
 +
;dispatcher_priority=normal
 +
 +
 +
;[proxy appname]
 +
; This section configures a proxied SCF
 +
; 'appname' is the application name to be used for the SCF
 +
 +
; enable: boolean: Enable the SCF
 +
; Defaults to yes
 +
;enable=yes
 +
 +
; priority: integer: Priority in handling messages from SSF
 +
; Defaults to 0
 +
;priority=0
 +
 +
; servicekey: integer: Value with which the IDP serviceKey should be rewritten
 +
; Allowed interval: 0..2147483647
 +
; Defaults to SSF service key set in 'general' section
 +
;servicekey=
 +
 +
; dp: string: Comma separated list of detection points that should match the one received in IDP
 +
;  in order to contact this SCF
 +
; Items may be DP value or name
 +
; Defaults to termAttemptAuthorized if empty or all DPs are invalid
 +
;dp=termAttemptAuthorized
 +
 +
; endfatal: boolean: Indicate whether or not terminate the proxy dialog when this dialog ends
 +
; Defaults to no
 +
;endfatal=no
 +
 +
; errorfatal: boolean: Indicate whether or not an error or reject component from
 +
;  the SCF should terminate the whole proxy dialog
 +
; Defaults to no
 +
;errorfatal=no
 +
 +
; local: boolean: The SCF is local (a local application) or external (it passes
 +
;  through the SS7 network to reach it)
 +
; Defaults to no (external application)
 +
;local=no
 +
 +
; instances: integer: Number of local application instances
 +
; If non 0 the module will build the required number of SCFs and will pick them using a
 +
;  round-robin algorithm
 +
; Each application's name will be built from SCF application name concatenated with instance
 +
;  suffix startting from 1
 +
; E.g.
 +
; [proxy SCP]
 +
; instances=2
 +
; Will build 2 applications: SCP1 and SCP2
 +
; This parameter is ignored for non local SCFs
 +
; If non 0 it must be set to a value greater then 1
 +
; Defaults to 0
 +
;instance=
 +
 +
; handles: string: Comma separated list of operations received from the SSF
 +
;  accepted by this SCF
 +
; NOTE: Except ERB (Event Report BCSM), which is sent to all SCFs that match the reported DP,
 +
;  all operations that are handled by a SCF should be listed, otherwise the
 +
;  proxy will report to the SSF an error
 +
;handles=
 +
 +
; waittime: integer: Time, in miliseconds, to wait for a result from a SCF
 +
;  while being in Waiting For Instructions state, after which the dialog
 +
;  is aborted
 +
; Defaults to 3000
 +
; Minimum allowed value is 1000
 +
;waittime=3000
 +
 +
; All other parameters starting with 'addr.' prefix will be put in dialog begin
 +
;  message sent for this SCF
 +
; E.g. addr.CalledPartyAddress.route=gt will be put as CalledPartyAddress.route=gt

Revision as of 14:34, 28 October 2013

The camel_proxy.php module provides functionality that allows that a single gsmSSF CAMEL invocation be proxied to multiple SCFs. The aim of this module is to provide a way of providing multiple CAMEL services on a single CAMEL request.

The main purpose is to be able to provide CRBT and PPS (PrePaid Service) facilities in parallel.

The layout for such a scenario will look like this:

File:CamelProxy.png

What it basically does is that for one IDP invocation, the proxy will be able to translate it to multiple IDPs sent to multiple SCPs, either locally (like the CRBT one) or external. The proxy keeps an evidence of these multiple invocations and aggregates them into a single, valid dialogue with the invoking SSP.

Contents

Camel Proxy Module Configuration

The configuration file is camel_bcsm_proxy.conf

Module configuration

'general' section

application: Application parameter in camel messages sent/handled for SSF dialogs.
This parameter is required and is not applied on reload (can't be changed after module starts).

gt: Global Title to be set in the first message sent in the SSF dialog.
This parameter is applied on reload.
TCAP address parameters to be set in the first message sent back to SSF can also be set using addr. prefix.
E.g. GT can be set as addr.CallingPartyAddress.gt along with other parameters like number nature addr.CallingPartyAddress.nature.
Setting the GT without other parameters is the same as:
addr.CallingPartyAddress.gt=[GT set]
addr.CallingPartyAddress.route=gt
addr.CallingPartyAddress.gt.encoding=bcd
addr.CallingPartyAddress.gt.translation=0
addr.CallingPartyAddress.gt.plan=isdn
addr.CallingPartyAddress.gt.nature=international

servicekey: CAMEL serviceKey to check when in received initialDP and set when forwarding them to SCFs.
Allowed interval: 0..2147483647.
Defaults to 0 if missing or invalid.
This parameter is applied on reload for new dialogs only.

query_scf: Boolean value indicating whether to query for proxied SCFs update when processing initialDP.
Is enabled a 'scf.query' message will be enqueued and the module will wait for a 'scf.response' message to continue IDP processing.
Defaults to no.

print_msg: boolean/string: Print sent/received messages to output if debug level is at least 9.
Allowed values are boolean values or 'verbose' string.
If verbose is specified, the message will be dumped on output.
Defaults to no.

print_xml: boolean/string: Print sent/received XML data to output if debug level is at least 9.
This parameter is ignored if print_msg is disabled.
Allowed values are boolean values or 'verbose' string.
If verbose is specified, XML elements' children, attributes or text will be shown on separate lines.
Defaults to no.

idp_calling_required: boolean: Calling party number is required (non empty) in initialDP.
Default to yes.

idp_called_required: boolean: Called party number is required (non empty) in initialDP.
Default to yes.

dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use.
Set to 0 to enqueue messages using yate engine.
Defaults to 0.
When reloaded it can't be set to 0 (e.g. once set to a non 0 value it can be changed to non 0 values only).

Proxied SCF section(s)

enable: boolean: Enable the SCF.
Defaults to yes.

priority: integer: Priority in handling messages from SSF.
Defaults to 0.

servicekey: integer: Value with which the IDP serviceKey should be rewritten.
Allowed interval: 0..2147483647.
Defaults to SSF service key set in 'general' section.

dp: string: Comma separated list of detection points that should match the one received in IDP in order to contact this SCF.
Items may be DP value or name.
Defaults to termAttemptAuthorized if empty or all DPs are invalid.

endfatal: boolean: Indicate whether or not terminate the proxy dialog when this dialog ends.
Defaults to no.

errorfatal: boolean: Indicate whether or not an error or reject component from the SCF should terminate the whole proxy dialog.
Defaults to no.

local: boolean: The SCF is local (a local application) or external (it passes through the SS7 network to reach it).
Defaults to no (external application).

instances: integer: Number of local application instances.
This parameter is ignored for non local SCFs.
If non 0 it must be set to a value greater then 1.
Defaults to 0.
If non 0 the module will build the required number of SCFs and will pick them using a round-robin algorithm.
Each application's name will be built from SCF application name concatenated with instance suffix startting from 1.
E.g.:

[proxy SCP]
instances=2

Will build 2 applications: SCP1 and SCP2.

handles: string: Comma separated list of operations received from the SSF accepted by this SCF.
Except ERB (Event Report BCSM), which is sent to all SCFs that match the reported DP, all operations that are handled by a SCF should be listed, otherwise the proxy will report to the SSF an error.

waittime: integer: Time, in miliseconds, to wait for a result from a SCF while being in Waiting For Instructions state, after which the dialog is aborted.
Defaults to 3000.
Minimum allowed value is 1000.

All other parameters starting with 'addr.' prefix will be put in dialog begin message sent for this SCF.
They should be set for non local SCFs.
Parameters:

  • addr.CalledPartyAddress.route - string. It can be set to values: gt/ssn. It specifies how the SCCP address should be routed.
  • addr.CalledPartyAddress.ssn - integer. It's the SSN number in case of SSN routing.
  • addr.CalledPartyAddress.gt - string. GTT number digits for the SCF.
  • addr.CalledPartyAddress.gt.encoding - string. It specifies the encoding for the GT digits. It is usually set to bcd.
  • addr.CalledPartyAddress.gt.tt - integer. It specifies the GT translation type. It is usually set to 0.
  • addr.CalledPartyAddress.gt.np - string. The GT numbering plan. It is usually set to isdn. It can be one of the following values: unknown, isdn, e164, generic, data, x121, telex, maritime-mobile, e210, e211, land-mobile, e212, isdn-mobile, e214, network-specific.
  • addr.CalledPartyAddress.gt.nature - string. It specifies the nature of the GT number. It is usually set to international.It can have one the following values: unknown, subscriber, national-reserved, national-significant, international.
  • addr.CallingPartyAddress.route
  • addr.CalledPartyAddress.ssn
  • addr.CallingPartyAddress.gt
  • addr.CallingPartyAddress.gt.encoding
  • addr.CallingPartyAddress.gt.tt
  • addr.CallingPartyAddress.gt.np
  • addr.CallingPartyAddress.gt.nature

Example

[general]
application=camelProxy
servicekey=1
gt=8820003

[proxy crbt-scp]
servicekey=2
local=true

[proxy pps-scp]
servicekey=99
priority=2
errorfatal=true
handles=applyChargingReport
addr.CalledPartyAddress.gt=8820007
addr.CalledPartyAddress.route=gt
addr.CalledPartyAddress.gt.encoding=bcd
addr.CalledPartyAddress.gt.tt=0
addr.CalledPartyAddress.gt.np=isdn
addr.CalledPartyAddress.gt.nature=international
addr.CallingPartyAddress.gt=8820003
addr.CallingPartyAddress.route=gt
addr.CallingPartyAddress.gt.encoding=bcd
addr.CallingPartyAddress.gt.tt=0
addr.CallingPartyAddress.gt.np=isdn
addr.CallingPartyAddress.gt.nature=international


camel_map configuration

[local camelProxy]
translator=scp_proxy
capabilities=Camel

[tcap scp_proxy]
type=CAMEL
tcap=tcap_msc
port=0

[local pps-scp]
translator=scp_pps
capabilities=Camel

[tcap scp_pps]
type=CAMEL
tcap=tcap_pps
port=0

camel_bcsm_proxy.conf.sample

; NOTE: This module is not loaded automatically, it needs a line in yate.conf:
; [postload]
; ${modulepath}/sig/camel_bcsm_proxy${modsuffix}=yes

[general]
; Unless explicitly specified, all parameters are applied on reload for new
;  dialogs only
; All parameters starting with 'addr.' prefix will be put in the first message sent to SSF

; application: string: Application parameter in camel messages sent by the module
; This parameter is required
; This parameter is not applied on reload
;application=

; gt: string: Global Title to be set in the first message sent in the SSF dialog
; This parameter is applied on reload for new dialogs only
; If non empty other calling party address parameters will be set to default values
; This parameter can be overriden by addr.CallingPartyAddress.gt parameter
;gt=

; servicekey: integer: CAMEL serviceKey to check in received initialDP messages and
;  set when forwarding them to SCFs
; Allowed interval: 0..2147483647
; Defaults to 0 if missing or invalid
; This parameter is applied on reload for new dialogs only
;servicekey=0

; query_scf: boolean: Query for proxied SCFs update when processing initialDP
; Is enabled a 'scf.query' message will be enqueued and the module will wait
;  for a 'scf.response' message to continue IDP processing
; The response must return the list of SCFs to proxy
; The list may be shorter then configured SCFs
; New SCFs, other then configured ones, will be ignored
; The following SCF parameters can be overridden: priority, servicekey, errorfatal,
;  handles, waittime and all parameters starting with 'addr.' prefix
; Defaults to no
;query_scf=no

; component_ttl: integer: Component time to live in milliseconds
; Minimum allowed value is 1000
; Defaults to 15000
;component_ttl=15000

; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds
; Minimum allowed value is 1000
; It can be set to 0 to keep it alive until the remote party terminates the dialog
; Defaults to 5000
;dialog_idle_ttl=5000

; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds
; Minimum allowed value is 1000.
; It can be set to 0 to remove the dialog after termination
; Defaults to 0
;dialog_ended_ttl=0

; export_xml_as: string: Specify in which way the XML will be passed along into
;  Yate messages
; Allowed values are:
;  - string: pass the XML as a string
;  - object: pass the XML as an object
;  - both: pass the XML as a string and object
; Defaults to object
;export_xml_as=object

; print_msg: boolean/string: Print sent/received messages to output if debug
;  level is at least 9
; Allowed values are boolean values or 'verbose' string
; If verbose is specified, the message will be dumped on output
; Defaults to no
;print_msg=no

; print_xml: boolean/string: Print sent/received XML data to output if debug
;  level is at least 9
; This parameter is ignored if print_msg is disabled
; Allowed values are boolean values or 'verbose' string
; If verbose is specified, XML elements' children, attributes or text will be
;  shown on separate lines
; Defaults to no
;print_xml=no

; idp_calling_required: boolean: Calling party number is required (non empty) in initialDP
; Default to yes
;idp_calling_required=yes

; idp_called_required: boolean: Called party number is required (non empty) in initialDP
; Default to yes
;idp_called_required=yes

; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use
; Set to 0 to enqueue messages using yate engine
; Defaults to 0
; When reloaded it can't be set to 0 (e.g. once set to a non 0 value it can be changed to
;  non 0 values only)
;dispatcher_maxthreads=0

;dispatcher_priority: string: Default priority of message dispatch threads
; Can be one of: lowest, low, normal, high, highest
; High priorities need superuser privileges on POSIX operating systems
; Low priorities are not recommended except for debugging
; Defaults to 'normal'
; This parameter is applied on reload for new threads only
;dispatcher_priority=normal


;[proxy appname]
; This section configures a proxied SCF
; 'appname' is the application name to be used for the SCF

; enable: boolean: Enable the SCF
; Defaults to yes
;enable=yes

; priority: integer: Priority in handling messages from SSF
; Defaults to 0
;priority=0

; servicekey: integer: Value with which the IDP serviceKey should be rewritten
; Allowed interval: 0..2147483647
; Defaults to SSF service key set in 'general' section
;servicekey=

; dp: string: Comma separated list of detection points that should match the one received in IDP
;  in order to contact this SCF
; Items may be DP value or name
; Defaults to termAttemptAuthorized if empty or all DPs are invalid
;dp=termAttemptAuthorized

; endfatal: boolean: Indicate whether or not terminate the proxy dialog when this dialog ends
; Defaults to no
;endfatal=no

; errorfatal: boolean: Indicate whether or not an error or reject component from
;  the SCF should terminate the whole proxy dialog
; Defaults to no
;errorfatal=no

; local: boolean: The SCF is local (a local application) or external (it passes
;  through the SS7 network to reach it)
; Defaults to no (external application)
;local=no

; instances: integer: Number of local application instances
; If non 0 the module will build the required number of SCFs and will pick them using a
;  round-robin algorithm
; Each application's name will be built from SCF application name concatenated with instance
;  suffix startting from 1
; E.g.
; [proxy SCP]
; instances=2
; Will build 2 applications: SCP1 and SCP2
; This parameter is ignored for non local SCFs
; If non 0 it must be set to a value greater then 1
; Defaults to 0
;instance=

; handles: string: Comma separated list of operations received from the SSF
;  accepted by this SCF
; NOTE: Except ERB (Event Report BCSM), which is sent to all SCFs that match the reported DP,
;  all operations that are handled by a SCF should be listed, otherwise the
;  proxy will report to the SSF an error
;handles=

; waittime: integer: Time, in miliseconds, to wait for a result from a SCF
;  while being in Waiting For Instructions state, after which the dialog
;  is aborted
; Defaults to 3000
; Minimum allowed value is 1000
;waittime=3000

; All other parameters starting with 'addr.' prefix will be put in dialog begin
;  message sent for this SCF
; E.g. addr.CalledPartyAddress.route=gt will be put as CalledPartyAddress.route=gt
Personal tools
Namespaces

Variants
Actions
MAP & CAMEL XML Interface
Diameter XML Interface
MAP and CAMEL operations
Diameter interfaces
Examples
Resources
Navigation
Toolbox