Configure SCCP and GTT

From Yate Documentation
Revision as of 16:11, 26 October 2017 by Liviu (Talk | contribs)

Jump to: navigation, search

The SCCP protocol provides extended routing, flow control, segmentation, connection-orientation, and error correction facilities in SS7 networks. It relies on MTP for basic routing and error detection.

A GT (global title) is an address used in SCCP for routing signaling messages in SS7 networks. It's unique and identifies a single destination in the SS7 network.

GTT (global title translation) examines the destination address and decides how to identify it in the SS7 network. More about GTT here.

Contents

SCCP and GTT in YATE

Implementation

SCCP implementation in Yate is located in ysig library. The methods declaration is in libs/ysig/yatesig.h and the implementation in libs/ysig/sccp.cpp. Classes name are SS7SCCP, GTT.

Example

In ysigchan.conf define sccp and gtt objects.

; linkset to STP node
[ls_stp]
;enable=no
type=ss7-mtp3
netind2pctype=ANSI
netindicator=national
local=ANSI,0-0-3
adjacent=ANSI,0-0-1
link=stp

[stp]
type=ss7-m2pa

[sccp]
type=ss7-sccp
pointcodetype=ANSI
netindicator=national
localpointcode=3
management=sccp-mgm
ignore-unknown-digits=no
extended-monitoring=true
extended-debug=true
print-messages=no

[sccp-mgm]
type=ss7-sccp-ansi-mgm
print-messages=true

[gtt]
type=ss7-gtt
sccp=sccp
debugname=GTT

The actual global title translation logic is custom. You could implement it in javascript or another module.
Here is a basic example in regexroute.conf:

[extra]
; install handler for sccp.route message
sccp.route=110,gt,gtt

[gtt]
.*=echo GTT for: \0
; for local node
^8820003$=local;RemotePC=3;route=gt
^88200000=local-e214;RemotePC=3;route=gt 
^00101=local-e212;RemotePC=3;route=gt
^00190=local-e212;RemotePC=3;route=gt
^31337=local-e212;RemotePC=3;route=gt
; send all else to STP node
^882000.$=stp;RemotePC=1;route=gt
.*=echo GTT for \0 failed

Configuration

From sample ysigchan.conf:

; Example of a SS7 SCCP
;[sccp]

; type: keyword: identifies the component as a SS7 SCCP
;type=ss7-sccp

; pointcodetype: string: SS7 point code type (required)
; Allowed values:
;  ITU    ITU-T Q.704
;  ANSI   ANSI T1.111.4
;pointcodetype=

; localpointcode: string: Local point code to accept as destination (required)
; The format is network-cluster-member or number
;localpointcode=

; router: string: Name of the SS7 Router to attach to
; A boolean false value disables attaching a router (unlikely)
;router=ss7router

; network: string: Name of linkset to attach to if router is disabled
; This allows direct connection without MTP management (unlikely)
;network=

; management: string: Name of the SS7 management to use
;management=sccp-mgm

; hopcounter: integer: Default value for hop-counter
; This value indicates the maximum number of gt translations that can be
;  made before the message reach it's destination
;hopcounter=15

; ludt-support: boolean: True to allow sccp to send Long UnitData messages
;ludt-support=false

; segmentation-timeout: integer: Time in milliseconds before a segmented
;  message is expired
; Values: 5000-20000 ms
;segmentation-timeout=5000

; extended-monitoring: boolean: Compute an extended monitoring of sccp messages
;extended-monitoring=no

; print-messages: boolean: Print decoded protocol data units to output
; This option is applied on reload
; Defaults to no
;print-messages=no

; extended-debug: boolean: Print extended debug data (such as raw hex data)
;  to output
; This option is applied on reload
; Defaults to no
;extended-debug=no

; endpoint: boolean: Force message processing if we are an endpoint
; This option will allow sccp to process failed gt translations messages
;  if a ssn is pressent
;endpoint=true;

; local-dpc-only: boolean: Process only messages whose DPC equals localpointcode
; If turned off it will process (and possibly GTT) messages with any DPC
; This option is applied on reload
; Defaults to yes
;local-dpc-only=true

; Example of SS7 Sccp Management
;[sccp-mgm]

; type: keyword: identifies the component as a SS7 SCCP Management
; Values : ss7-sccp-itu-mgm
; Must correspond with the pointcode type of the sccp
;type=

; test-timer: integer: Initial time in milliseconds for Subsystem Status
;  Test to be generated
; Values : 5000-10000
; Note! This timer will increase exponentially until reaches 20000 if no
;  corresponding message is received from the test initiator
;test-timer=5000

; print-messages: boolean: True to print sccp management messages
;print-messages=false

; remote: struct: Remote SCCP witch present interest for GTT
;  (Global Title Translator)
; This parameter allow us to monitor remote sccp's state
; This option can be repeated to monitor multiple remote sccp's
; Format: remote=pc(integer):ssn1,ssn2,....
; pc : integer: Remote sccp pointcode
; ssn1 - ssnn: integer; Remote sccp subsystems witch we are monitoring
; Note! Ssn list may be empty if the remote sccp is a stp with GTT
;remote=2057:1,2,3,4

; concerned: struct: List of remote sccp's witch are concerned about local state
; This parameter allow us to inform remote sccp's when local status has changed
; This option can be repeated to inform multiple remote sccp's
; Format: remote=pc(integer):ssn1,ssn2,....
; pc : integer: Remote sccp pointcode
; ssn1 - ssnn: integer; List of local subsystems witch are of interest for the
;  remote sccp
; Note! Ssn list may be empty if the remote sccp is concerned only if local
;  sccp is available or not
;concerned=2057:1,2,3,4

; local-subsystems: string: Coma separated list of local subsystems
; The subsystems present in this list will be monitored by this sccp management
;local-subsystems=1,2,3,4,5,..

; auto-monitor: boolean: True to auto monitor remote sccp's.
; This flag enables remote sccp auto monitoring. When a message failed to be
;  send to a remote sccp, the sccp management will automaticaly append the
;  destination to the monitored remote sccp destinations
;  to prevent sccp routing failure.
; NOTE! Do not use this option if your GTT (Global Title Translator)
;  can route to a large number of remote addresses
;  because a lot of memory and cpu power will be used!
;auto-monitor=false

; Example of GTT (Global Title Translator)
;[gtt]

; type: keyword: Identifies this component as a GTT
; NOTE! This type of gtt is based on yate messages system.
;type=ss7-gtt

; sccp: string: The name of the sccp to attach to this GTT
;sccp=sccp

Status

To check status of compotent use "status sip component_name".
Ex: "status sig sccp", "status sig gtt"

Control

SCCP component control commands:

status control SCCP_NAME status Show status
full-status control SCCP_NAME full-status
enable-extended-monitoring control SCCP_NAME enable-extended-monitoring
disable-extended-monitoring control MTP3_LINKSET_NAME disable-extended-monitoring
enable-print-messages control SCCP_NAME enable-print-messages
disable-print-messages control SCCP_NAME disable-print-messages

See also:

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers