Configure SCCP and GTT
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 |