Ysigchan

From Yate Documentation
Jump to: navigation, search

Module ysigchan purposes:

  • Handle the SS7 protocol (management, maintenance, routing).
  • Make/receive calls using the ISUP protocol.
  • Make/receive calls using the ISDN (Q.931) protocol.
  • Passive recording of ISDN data links.

This module is based on the signalling library and uses driver module(s) (e.g. zapcard, wpcard) to create interfaces and circuits used to transfer signalling packets and audio data.

Contents

Module layout

To fulfill its purposes, the module creates the following objects:

  • A signalling engine, used to keep track of all signalling components (circuit groups, call controllers, interfaces, etc).
  • A SS7 router. Identify a network (route) to send outgoing SS7 packets and transmit them. Find a destination service for incoming SS7 packets.
  • A SS7 management and a SS7 maintenance object used for the management and maintenance of the SS7 network.
  • Any call controller (trunk) requested in the configuration file.

In this module's terminology, a link is a protocol stack. These are the link types created by this module:

ISUP trunks

An ISUP trunk is a container for an ISUP call controller (SS7 layer 4 service). This call controller is using ISUP signalling over a SS7 network

Circuit locking

As stated in ITU-T Q.764 recommendation, each ISUP endpoint can lock its local end of a circuit for maintenance and/or hardware failure reasons.

ISUP circuit lock states are saved in the ysigdata.conf file.

Each time an ISUP link is built it searches the file for a section having the same name and loads circuits lock states from there.

The format of a circuit lock flags parameter is cic_code=flag1,flag2....

Flags can be:

  • remotehw: Remote end of the circuit is locked for hardware failure reason
  • remotemaint: Remote end of the circuit is locked for maintenance reason
  • localmaint: Local end of the circuit is locked for maintenance reason
  • localmaintchanged: Local maintenance lock flag changed
  • remotehw and remotemaint are automatically saved (set or reset) when an ISUP call controller receives circuit (un)blocking messages.
  • localmaint and localmaintchanged can be manually set (by editing the file). If the localmaintchanged flag is specified the ISUP call controller will notify the remote party. The flag will be reset when the circuit (un)blocking message will be confirmed.

Note that the localmaint flag won't be reset. It must be manually deleted from file and the ISUP call controller must be re-created (reload is not enough).

Note: Locked circuits (local, remote and for any reason) can't be used for ISUP calls. Any remote lock will be reset
when a call request is received from remote party.

Example:

[isup1]
2=remotehw
7=remotemaint,remotehw

SS7 linksets

A SS7 MTP3 (SS7 layer 3 network). Each ISUP linkset services a set of local point codes used as destination for incoming SS7 packets and source point code for outgoing packets. Each linkset must have attached one or more SS7 links - either MTP2 or backhauling transports like Cisco SLT.

SS7 links

A SS7 MTP2 (SS7 layer 2 data link) using one HDLC interface (signalling). The interface and the circuits are created by the module handling the data transmission (e.g. zapcard or wpcard) and owned by the link.

ISDN trunks

An ISDN trunk is a container with a Q.931 call controller, a circuit group (voice circuits), a Q.921 data link and an HDLC signalling interface.

The interface and the circuits are created by the module handling the data transmission (e.g. zapcard or wpcard) and owned by the trunk.

The Q.931 call controller is doing the following: create outgoing and parse incoming messages, create data structures used to manage a call leg, assign circuits to call legs and all other stuff requested from the an ISDN layer 3 protocol.

The Q.921 ISDN layer 2 is used to send/receive upper layer's (Q.931) data and to synchronize the data link.

The HDLC signalling interface is used to send/receive the data belonging to upper layers (Q.921 and Q.931).

Any circuit belonging to the link is used to exchange voice data and, if possible, to send/detect inband DTMFs.

Recorder trunks

An ISDN recorder trunk is a container with a Q.931 monitor call controller and 2 stacks each one containing a circuit group (voice circuits), a Q.921 data link and an HDLC signalling interface. Each stack has the same functionality as a regular ISDN stack with the exception that they are read only: only process incoming data, every other operation that would need sending data (such as layer 2 synchronization) is not fulfilled.

Message handlers

Routing

Syntax: sig/callednumber;trunk=trunkname

The callednumber is, obvious, the called party's number. The trunk parameter is mandatory and indicates the trunk to use to make the call. trunkname must be the name of an active trunk configured in ysigchan.conf.

Specific parameters can be added to route the call:

  • circuits: The name of a set of circuits to pick the one the call will use. Each trunk creates a range for each span listed in voice parameter. (ISUP only)
  • calledpointcode: The destination point code used to route the call. If this parameter is specified and is invalid, the default point code will be used. (ISUP only)
Examples

^123$=sig/123456789;trunk=trunk1
^123$=sig/1234567890;trunk=trunk2;circuits=wanpipe1
^123$=sig/1234567890;trunk=trunk2;circuits=wanpipe1;calledpointcode=1-4-1

Configuration

ysigchan.conf

; This file keep signalling channel configuration
; Each section (except for 'general' section) configure a call controller (trunk)
;  or a signalling component
; For call controllers (trunks), the name of the section will be used to route
;  outgoing calls

[general]
; This section keep general or default settings for the signalling module:

; debuglevel: int: Debug level for the plugin
; This parameter is applied on reload
;debuglevel=

; debuglevel_engine: int: Debug level for the signalling engine
; This parameter is applied on reload
;debuglevel_engine=

; dtmfinband: boolean: Enable to try to send the DTMF data in band when an audio
;  channel is available. If disabled or no audio channel available, the DTMF will
;  be sent through the signalling channel if any
;dtmfinband=no

; Each section except [general] can have some common parameters

; To disable the component without deleting the entire section.
; The default is to enable the component
; enable: bool: Allow creation of the component corresponding to the section
;enable=yes

; Debug name as reported in Yate logs, default is derived from component name
; This parameter is used only when a component is created
; debugname: string: Debug name of the created component
;debugname=

; Debug level to apply on creation or reload
; debuglevel: int: Debug level of the component
;debuglevel=

; Example of an ISDN trunk
;[trunk1]

; type: keyword: Specify the trunk type
; Allowed values:
;  isdn-bri-net:  ISDN network side of a data link over basic rate HDLC interface(s)
;  isdn-bri-cpe:  ISDN CPE (user) side of a data link over basic rate HDLC interface(s)
;  isdn-pri-net:  ISDN network side of a data link over one or more primary HDLC interface(s)
;  isdn-pri-cpe:  ISDN CPE (user) side of a data link over one or more primary HDLC interface(s)
; NOTE: isdn-pri-net and isdn-pri-cpe are identical, except for the side of the link
;type=

; switchtype: string: The switch type of this group
; This parameter defines a set of flags modifying the call controller's behaviour
; Allowed values: euro-isdn-e1, euro-isdn-t1, national-isdn, dms100, lucent5e, att4ess,
;qsig, unknown
;switchtype=unknown

; sig: string: Specify the span(s) containing the signalling channel (D)
; For example wanpipe1 or any other section specified in any of the telephony
;   modules like wpcard or zapcard
;sig=

; voice: string: Specify the span(s) containing the voice channels (B)
; Multiple cards may be specified by simply separating them with a comma (',')
;  character
; Defaults to the trunk name if missing
;voice=

; offset: int: Offset of voice circuit codes relative to low level circuit number
;offset=0

; range: string: Arbitrary ranges of circuits for outbound calls (can be repeated)
; Possible formats:
;  range=name:list of circuits (like 1,3,5-9)
;  range=name:strategy:list of circuits (like 1,3,5-9)

; number: string: Prefix of numbers we accept call setups for, empty to accept all
; Only used by isdn-pri-cpe, makes sense when NET side is Point-to-Multipoint
; Setups are ignored if called number is present but doesn't start with this prefix
;number=

; rxunderrun: int: Maximum interval in ms between two packets before we report
;  an underrun condition, zero to disable or 2500+
;rxunderrun=0

; strategy: string: The strategy used to allocate voice channels for outgoing calls
; Allowed values:
;  - increment  Incremental search an idle channel starting with the last allocated channel
;  - decrement  Decremental search an idle channel starting with the last allocated channel
;  - lowest     Incremental search an idle channel starting with the first channel in group
;  - highest    Decremental search an idle channel starting with the last channel in group
;  - random     Randomly choose an idle channel
; Defaults to increment
;strategy=increment

; strategy-restrict: string: Define channel allocation restrictions and behaviour
; This option is ignored when strategy is random
; Allowed values:
;    even           Allocate only even channels
;    odd            Allocate only odd channels
;    even-fallback  Allocate even channels, fall back to odd channels
;    odd-fallback   Allocate odd channels, fall back to even channels
;strategy-restrict=

; channelsync: integer: The interval (in seconds) at which the call controller
;  will try to re-sync idle channels
; The call controller will notify the other side of the link of idle channels
; Set to 0 to disable
; Invalid values default to minimum (60s)
;channelsync=1000

; channellock: integer: Maximum time (in ms) spent trying to lock a remote channel
; Invalid values default to minimum (2500ms)
;channellock=10000

; numplan: string: Default numbering plan for outgoing calls
; Values: unknown, isdn, data, telex, national, private
; Defaults to unknown if missing or incorrect
;numplan=unknown

; numtype: string:  Default number type for outgoing calls
; Values: unknown,international,national,net-specific,subscriber,abbreviated,reserved
; Defaults to unknown if missing or incorrect
;numtype=unknown

; presentation: string: Default number presentation for outgoing calls
; Values: allowed, restricted, unavailable
; Defaults to allowed if missing or incorrect
;presentation=allowed

; screening: string:  Default number screening for outgoing calls
; Values: user-provided, user-provided-passed, user-provided-failed, network-provided
; Defaults to user-provided if missing or incorrect
;screening=user-provided

; format: string:  Default data format for outgoing calls. Values: alaw, mulaw, g721
; Defaults to alaw if missing or incorrect
; alaw is used commonly in Europe while mulaw is used commonly in US and Japan.
;format=alaw

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

; print-frames: boolean: Print decoded Layer 2 (Q.921) frames to output
; This option is applied on reload
; Defaults to no
;print-frames=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

; layer2dump: string: Filename to dump Q.921 packets to
;layer2dump=

; layer3dump: string: Filename to dump Q.931 packets to
;layer3dump=

; Example of an ISDN passive recorder
;[recorder1]

; type: keyword: Specify the trunk type
; Allowed values:
;  isdn-pri-mon:  ISDN monitor of one or more primary HDLC interface(s)
;type=isdn-pri-mon

; sig-net: string: Specify the span(s) containing the signalling channel(s) for the
;  network side of the monitored link
; For example wanpipe1 or any other section specified in any of the telephony
;   modules like wpcard or zapcard
;sig-net=

; sig-cpe: string: Specify the span(s) containing the signalling channel(s) for the
;  user side of the monitored link
; For example wanpipe1 or any other section specified in any of the telephony
;   modules like wpcard or zapcard
;sig-cpe=

; voice-net: string: Specify the span(s) containing the voice channel(s) for the
;  network side of the monitored link
; Multiple cards may be specified by simply separating them with a comma (',') character
; Defaults to the span specified in the sig-net parameter
;voice-net=

; voice-cpe: string: Specify the span(s) containing the voice channel(s) for the
;  user side of the monitored link
; Multiple cards may be specified by simply separating them with a comma (',') character
; Defaults to the span specified in the sig-cpe parameter
;voice-cpe=

; detect: boolean: Change the side of the link on each captured request for watched 
; signalling span(s)
; If disabled and the side of the link is not correct, the monitor will not be notified on
;   data link state change. This may lead to malfunction
;detect=yes

; idletimeout: integer: HDLC data link idle timeout, should be 3 * T203
; The minimum allowed value is 4000ms. Defaults to 30000 if missing or invalid
;idletimeout=30000

; muxchanbuffer: integer: The buffer size for one channel of the audio multiplexer
; Defaults to 160 if 0 or missing
;muxchanbuffer=160

; idlevalue: integer: The value used by the audio multiplexer to fill missing data
; This value is used to fill the free space when the multiplexer has to forward the received
;   data but one channel buffer is not full
; Interval: 0..255. Defaults to 255 if missing or invalid
; Ignored if type is not isdn-pri-mon
;idlevalue=255

; layer2dump-net: string: Filename to dump NET Q.921 packets to
;layer2dump-net=

; layer2dump-cpe: string: Filename to dump CPE Q.921 packets to
;layer2dump-cpe=


; Example of a SS7 ISUP trunk
;[isup1]
; type: keyword: Specify the trunk type
; Allowed values:
;  ss7-isup:      SS7 ISDN User Part
;type=ss7-isup

; pointcodetype: string: SS7 point code type (required)
; Allowed values:
;  ITU    ITU-T Q.704
;  ANSI   ANSI T1.111.4
;  ANSI8  8-bit SLS
;  China  GF 001-9001
;  Japan  T-Q704, NTT-Q704
;  Japan5 5-bit SLS
;pointcodetype=
; pointcode: string: Local point code to accept as destination
; If no point codes are added no calls can be made (incoming or outgoing)
;  through this trunk
; The format is network-cluster-member or number
;pointcode=

; defaultpointcode: string: Default originating point code used for outgoing calls
; It also acts as accepted point code (see pointcode)
; Only one point code can be default
; The format is network-cluster-member or number
;defaultpointcode=

; remotepointcode: string: Default destination point code used for outgoing
;  calls and maintenance messages
; If missing or invalid, no maintenance message will be sent
; The format is network-cluster-member or number
;remotepointcode=

; service: int: Service Information Field (protocol number)
; It is unlikely you will ever need to modify it
;service=5

; priority: keyword: Value of the Priority bits in the Service Information Octet
; Allowed values: regular, special, circuit, facility
;priority=regular

; netindicator: keyword: Value of Network Indicator bits in the SIO
; Allowed values: international, spareinternational, national, reservednational
;netindicator=national

; userparttest: integer: Remote user part test interval in seconds
; Set to 0 to always assume the remote user part is available
; Invalid values default to minimum (10s)
;userparttest=60

; parttestmsg: keyword: ISUP message to use for user part test
; For ANSI the CVT message may be used instead on UPT
; Other possibilities are RSC and UBL but are not recommended
;parttestmsg=UPT

; lockgroup: boolean: Allow sending circuit group block/unblock requests
; Normally the remote side must support circuit group operations
;lockgroup=yes

; earlyacm: boolean: Convert received early ACM user state into progress or ringing
;earlyacm=yes

; voice: string: Specify the span(s) containing the voice channels (L1)
; Multiple cards may be specified by simply separating them with a comma (',')
;  character
; Defaults to the trunk name if missing
;voice=

; offset: int: Offset of voice circuit codes relative to low level circuit number
;offset=0

; range: string: Arbitrary ranges of circuits for outbound calls (can be repeated)
; Possible formats:
;  range=name:list of circuits (like 1,3,5-9)
;  range=name:strategy:list of circuits (like 1,3,5-9)

; strategy: string: The strategy used to allocate voice channels for outgoing calls
; Allowed values:
;  - increment  Incremental search an idle channel starting with the last allocated channel
;  - decrement  Decremental search an idle channel starting with the last allocated channel
;  - lowest     Incremental search an idle channel starting with the first channel in group
;  - highest    Decremental search an idle channel starting with the last channel in group
;  - random     Randomly choose an idle channel
; Defaults to increment
;strategy=increment

; strategy-restrict: string: Define channel allocation restrictions and behaviour
; This option is ignored when strategy is random
; Allowed values:
;    even           Allocate only even channels
;    odd            Allocate only odd channels
;    even-fallback  Allocate even channels, fall back to odd channels
;    odd-fallback   Allocate odd channels, fall back to even channels
;strategy-restrict=

; channelsync: integer: The interval (in seconds) at which the call controller
;  will try to re-sync idle channels
; The call controller will notify the other side of the link of idle channels
; Set to 0 to disable
; Defaults to minimum value (60s) if missing or invalid
;channelsync=1000

; sls: integer or keyword: Default Signaling Link Selection in outbound calls
; Allowed values:
;    auto    Let SS7 Layer3 add a proper value
;    last    Last SLS used (default for non-ITU)
;    cic     Use the circuit number as SLS (ITU style)
;    0..255  Explicit numeric value, gets truncated to the SLS bit range
;sls=last (cic if pointcodetype is ITU)

; numplan: string: Default numbering plan for outgoing calls
; Values: unknown, isdn, data, telex, national, private
; Defaults to unknown if missing or incorrect
;numplan=unknown

; numtype: string:  Default number type for outgoing calls
; Values: unknown,international,national,net-specific,subscriber,abbreviated,reserved
; Defaults to unknown if missing or incorrect
;numtype=unknown

; presentation: string: Default number presentation for outgoing calls
; Values: allowed, restricted, unavailable
; Defaults to allowed if missing or incorrect
;presentation=allowed

; screening: string:  Default number screening for outgoing calls
; Values: user-provided, user-provided-passed, user-provided-failed, network-provided
; Defaults to user-provided if missing or incorrect
;screening=user-provided

; inn: boolean: Routing to Internal Network Number allowed
; Defaults to no
;inn=no

; format: string: Default data format for outgoing calls. Values: alaw, mulaw, g721
; Defaults to mulaw for ANSI and Japan point codes, alaw for all others
; alaw is used commonly in Europe while mulaw is used commonly in US and Japan.
;format=

; continuity: string: Type of continuity check to perform on the circuits
; If not set calls that request continuity check will be rejected
;continuity=

; 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


; Example of a SS7 MTP3 network (linkset)
;[linkset1]
; type: keyword: Specify the linkset type
; Allowed values:
;  ss7-mtp3:      SS7 Message Transfer Part - Layer 3
;type=ss7-mtp3

; netind2pctype: string: Comma separated list of point code types used to map an
;  incoming network indicator to a specific point code type
; This option is required and is used to configure a SS7 MTP3 network
; The list must contain either a singe type or 4 values indicating the point
;  code type for International, SpareInternational, National and ReservedNational
;  network indicators
; If only a single type is specified it will be used to configure all types of
;  network indicators
; See the ISUP pointcodetype option for allowed values
; NOTE: An incoming packet with an unconfigured network indicator will be dropped
; Examples:
;  netind2pctype=ITU
;  netind2pctype=ITU,ANSI,ITU,ITU
;  netind2pctype=ANSI8,ITU,ANSI,ITU
;netind2pctype=

; netindicator: keyword: Default value of Network Indicator bits
; Allowed values: international, spareinternational, national, reservednational
;netindicator=national

; route: string: Build a destination route for the SS7 network
; The format of this option is pointcodetype,label,priority
; This parameter can be repeated to build multiple destination routes
; The network will notify the router about its destination(s) and priority
; If not specified the priority is 100. A zero priority creates an adjacent route
; Example: route=ITU,2-2-2,100
;route=

; adjacent: string: Build an adjacent route for the SS7 network (A, E and F links)
; The format of this option is pointcodetype,label
; This parameter can be repeated to declare multiple adjacent routers
; The network will notify the router about its destination(s) and priority
; The priority is always zero so an adjacent route will always match first.
; Example: route=ANSI,40-50-60
;adjacent=

; local: string: Declare a local pointcode for the SS7 network
; The format of this option is pointcodetype,label
; This parameter can be repeated to declare a local point codes per type
; To be standards compliant at least one local pointcode must be declared
; Example: local=ITU,2-2-4
;local=

; allowed: string: List of point codes explicitly allowed from this SS7 network
; An empty or missing list will allow access to all known routes
; Example: allowed=ITU,2-2-2,2-2-3,1001,2001,2002
;allowed=

; link: string: Name of a SS7 Layer 2 link to create in the linkset
; This parameter can be repeated to add more links to the linkset
; An explicit SLS can be provided after a comma
; Example: link=mtp2_to_hq,3
;link=

; autostart: bool: Automatically enable the linkset at startup
;autostart=yes

; checklinks: boolean: Check that the links answer to maintenance messages
;  (SLTM/SLTA) before placing them into service (normal behavior)
;checklinks=true

; forcealign: boolean: Realign links that are no longer responding to SLTM
;forcealign=true

; checkfails: integer: Interval in msec for resending SLTM messages (Q.707 T1)
; A value of zero disables link fail else the value is clamped between 4s - 12s
;checkfails=5000
 
; maintenance: integer: Interval in msec for sending SLTM messages (Q.707 T2)
; A value of zero disables periodic SLTM else it is clamped to range 30s - 5m
;maintenance=60000

; layer3dump: string: Filename to dump MTP3 packets to
;layer3dump=


; Example of a SS7 MTP2 link
;[link1]
; type: keyword: Specify the link type
; Allowed values:
;  ss7-mtp2:      SS7 Message Transfer Part - Layer 2
;type=ss7-mtp2

; autostart: bool: Automatically try to align the MTP2 at startup
;autostart=yes

; emergency: boolean: Emergency align SS7 MTP2 layer at startup
;emergency=yes

; filllink: boolean: Configure MTP2 to request link fill (packet repeat) when
;  sending FISU or LSSU packets
;filllink=yes

; rxunderrun: int: Maximum interval in ms between two packets before we report
;  an underrun condition, zero to disable or 25+
;rxunderrun=0

; layer2dump: string: Filename to dump MTP2 packets to
;layer2dump=


; Example of a SS7 router (combines discrimination and SN or STP functions)
; A router named 'ss7router' is implicitely declared with default parameters
;[ss7router]
; type: keyword: identifies the component as a SS7 Router
;type=ss7-router

; transfer: boolean: Enable the Transfer function (STP mode)
; Enabling STP allows routing messages between adjacent networks
; By default only the SN and discrimination functions are enabled
; The special "silent" value performs message transfer without advertising
;transfer=no

; local: string: Declare a default local pointcode for the attached SS7 networks
; The format of this option is pointcodetype,label
; This parameter can be repeated to declare a local point codes per type
; Example: local=ITU,2-2-4
;local=

; management: string: Name of the SS7 Management component to create
; A boolean false value will disable SS7 Management (unlikely)
;management=ss7snm

; starttime: integer: MTP restart timer (T20) in milliseconds
; It is enforced to be at least 5000 (5s)
; Defaults to 60000 (Q.704 standard value) in STP mode or 10000 in SN mode
;starttime=

; isolation: integer: MTP isolation timer (T1) in milliseconds
; The minimum value is 500 (0.5s), default 1000 (1s)
; A value of zero disables isolation checks entirely
;isolation=1000

; autostart: boolean: Perform MTP restart sequence at initialization
; According to the standard the restart is performed on first link activation
;autostart=no

; autoallow: boolean: Turn adjacent routes Allowed on first received regular MSU
; Should be used only to interoperate with broken implementations
;autoallow=no

; sendupu: boolean: Send User Part Unavailable (UPU) SNM messages
;sendupu=yes

; sendtfp: boolean: Send Transfer Prohibited (TFP) SNM messages
; This setting applies only to transfer function (STP operation mode)
;sendtfp=yes

; testroutes: integer: Signaling Route Test timer (T10) in milliseconds
; The minimum value is 10000 (10s), Q.704 recommends 30s to 60s
; A value of zero disables periodical route tests
; testroutes=50000

; testrestricted: boolean: Test restricted routes too (national option)
;testrestricted=no


; Example of a SS7 Management Part
; This component is created by the SS7 router, see its "management" setting
; A management named 'ss7snm' is implicitely declared with default parameters
;[ss7snm]
; type: keyword: identifies the component as a SS7 Management Part
;type=ss7-snm

; local: string: Declare a default local pointcode for messages to send
; The format of this option is pointcodetype,label
; This parameter can be repeated to declare a local point codes per type
; If missing the local address of the attached router is used
; Example: local=ITU,2-2-4
;local=

; priority: keyword: Value of the Priority bits in the Service Information Octet
; Allowed values: regular, special, circuit, facility
;priority=regular

; netindicator: keyword: Default value of Network Indicator bits in the SIO
; Allowed values: international, spareinternational, national, reservednational
;netindicator=national

; changemsgs: boolean: Emit and process changeover and changeback messages
; Disabling these messages forces always using time controlled diversion
;changemsgs=yes

; changesets: boolean: Emit changeover and changeback between linksets
; Requires "changemsgs" to be enabled to allow sequence controlled diversion
;  procedures to be used on another linkset if the controlled one is unavaliable
;changesets=no

; neighbours: boolean: Only accept management messages from adjacent nodes
;neighbours=yes

Status and control commands

Rmanager can be used to query the status and control the signalling components at runtime.

  • status sig component-name
Provides status information on the trunk, linkset or link.
  • sigdump component-name [filename]
Enables dumping of link or linkset layer traffic to a file, disables if filename is not specified

Trunk status (SS7 or ISDN)

  • status sig trunk-name
Provides status information on the trunk: total circuits, active calls
  • status sig trunk-name/*
Provides status information on all circuits (can be too much info)
  • status sig trunk-name/number
Provides status information on circuit number
  • status sig trunk-name/number-number
Provides status information on a range of circuits

SS7 ISUP commands

  • control isup-trunk-name validate [circuit=number]
Request a Circuit Validation Test (ISUP CVT) on the specified or default circuit
  • control isup-trunk-name query [circuit=number] [range=counter]
Request a Circuit Group Query (ISUP CQM) on a range or counter (default 1) circuits starting from the specified or default circuit
  • control isup-trunk-name parttest [circuit=number]
Send an User Part Test (ISUP UPT) message on the specified or default circuit
  • control isup-trunk-name conttest [circuit=number]
Request a Circuit Continuity Test (ISUP CCR) on the specified or default circuit
  • control isup-trunk-name reset [interval=number]
Request a fast round of Circuit Restart (ISUP RSC), every number seconds (default 10)
  • control isup-trunk-name release circuit=number [reason=cause]
Release a Restart in progress or a call (normal or CCR) on a circuit
  • control isup-trunk-name block circuit=number [force=yes] [remote=yes] [hwfail=yes]
Maintenance local block the specified circuit (ISUP BLK)
Maintenance or failure remote block the specified circuit
  • control isup-trunk-name unblock circuit=number [force=yes] [remote=yes] [hwfail=yes]
Maintenance local unblock the specified circuit (ISUP UBL)
Maintenance or failure remote unblock the specified circuit
  • 'control isup-trunk-name block circuits=range [hwfail=yes] [force=yes] [remote=yes]
Maintenance or failure local block the specified circuit group (ISUP CGB)
Maintenance or failure remote block the specified circuit group
  • control isup-trunk-name unblock circuits=range [hwfail=yes] [force=yes] [remote=yes]
Maintenance or failure local unblock the specified circuit group (ISUP CGU)
Maintenance or failure remote unblock the specified circuit group
  • control isup-trunk-name available
Make the call controller appear available like an answer was received to part test (UPT)
  • control isup-trunk-name save
Save circuits status
A range of circuit codes (not necessary continuous) can be specified like this: 1,3,5-10
For groups it is possible to control the hardware failure (un)blocking mode by adding hwfail=yes.
For individual local circuit (un)block command (ISUP BLK/UBL) hwfail is not applicable.
Specifying force=yes overrides internal state checking - useful if remote end doesn't answer to requests.
Specifying remote=yes will (un)block remote circuit(s). In this context the force parameter is not applicable.

SS7 Management commands

  • control snm-name prohibit address=TYPE,OPC,DPC [destination=PC]
Send a Traffic Prohibited message (SNM TFP) regarding the specified destination (default equals OPC)
  • control snm-name allow address=TYPE,OPC,DPC [destination=PC]
Send a Traffic Allowed message (SNM TFA) regarding the specified destination (default equals OPC)
  • control snm-name restrict address=TYPE,OPC,DPC [destination=PC]
Send a Traffic Restricted message (SNM TFR) regarding the specified destination (default equals OPC)
  • control snm-name restart address=TYPE,OPC,DPC
Send a Traffic Restart Allowed message (SNM TRA) for the Originating Point Code
  • control snm-name changeover address=TYPE,OPC,DPC [sequence=number]
Send a Changeover Order (SNM COO) for the specified sequence number (default 0)
  • control snm-name changeback address=TYPE,OPC,DPC [code=number]
Send a Changeback Declaration (SNM CBD) for the specified code (default 0)

SS7 Linkset commands

  • control ss7-linkset-name pause

Stop using the specified linkset

  • control ss7-linkset-name resume

Resume using the specified linkset if possible

SS7 Link commands

  • control ss7-link-name pause
Stop using and dealign the specified link
  • control ss7-link-name resume
Resume using the specified link, align if necessary
  • control ss7-link-name align
Forcibly realign the specified link

At every command it is possible to add one or more settings changes. The settings are technology dependent but here are some common ones:

  • autoemergency=yes/no
Set the link to automatically set emergency align when linkset has no other links operational (normal use)
  • autostart=yes/no
Set the link to automatically align when resumed and not already aligned (normal use)

SS7 Router commands

  • control ss7router show
Show the current state of each route in the logs (and rmanager if debug is on).
  • control ss7router traffic
Emit TRA (Traffic Restart Allowed) on all operational linksets.
  • control ss7router advertise
Emit TFx transfer control messages on all linksets (only in STP mode).
  • control ss7router pause
Stop and disable the router making all attached linksets and user parts nonfunctional.
  • control ss7router resume
Enable the router, initiate SP or STP restart if needed.

Test User Part commands

  • control ss7-testpart-name stop
Stop generating MTP Test User Part messages
  • control ss7-testpart-name single [length=number] [sequence=number] [address=TYPE,OPC,DPC]
Generate a single MTP Test User Part message
  • control ss7-testpart-name start [length=number] [sequence=number] [address=TYPE,OPC,DPC] [interval=msec] [sharing=yes|no]
Start generating MTP Test User Part messages every msec milliseconds
If sharing is enabled the SLS will be derived from sequence number so it's easy to test load sharing between links and/or linksets.

IMPORTANT: Classic SS7 links are relatively low capacity and it's quite easy to congest or crash them. Unless you specifically intend an overload test use small (up to 32 bytes) packets no less than 200ms apart.

Example

Here is a config example of fully working configuration:

[general]
enable=yes
dtmfinband=true

[link1]
enable=yes
type=ss7-isup
pointcodetype=ITU
pointcode=0-22-4
defaultpointcode=0-22-4
remotepointcode=0-1-2
lockgroup=yes
earlyacm=yes
voice=wanpipe1
strategy=increment
strategy-restrict=even
channelsync=1000
numplan=isdn
numtype=subscriber
numtype=national
presentation=allowed
screening=user-provided-passed
format=alaw
print-messages=yes
extended-debug=yes

local=ITU,0-22-4
checklinks=false
checkfails=false

[linkset3]
type=ss7-mtp3
netind2pctype=ITU
route=ITU,0-1-2,0
autostart=yes
link=link2
link2.sig=wanpipe1

local=ITU,0-22-4
checklinks=false
checkfails=false

[link2]
type=ss7-mtp2
sig=wanpipe1
autostart=yes
emergency=no
filllink=no
rxunderrun=0

local=ITU,0-22-4
checklinks=false
checkfails=false

See also

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers