m3ua

SIGTRAN MTP3 User Adaptation (M3UA) protocol stack application.

Repository: github.com/sigscale/m3ua


SIGTRAN

The Signaling Transport (SIGTRAN) protocol suite provides for transport of telephony signaling protocol messages over Internet Protocol (IP) networks. The Stream Control Transmission Protocol (SCTP) is defined for resilience and reliability. User layer adaptations are defined for Signaling System 7 (SS7)
and ISDN communications protocols.

M3UA

The MTP3 user adaptation (M3UA) defines a protocol for supporting the transport of any SS7 MTP3-User signalling (e.g. ISUP or SCCP) over IP using the services of SCTP. This protocol is used to interconnect an SS7 Signaling Gateway (SG) with Application Servers (AS).

An SG/AS may have multiple process instances (SGP/ASP) where each process contains an SCTP association to an M3UA peer SGP/ASP. Traffic may be load shared across these associations.

In this implementation an AS/SG may be composed of processes distributed across a cluster.

State & Traffic Management


The M3UA layer at the SGP maintains the availability state of all configured remote ASPs, to manage the SCTP Associations and the traffic between the M3UA peers. The ASP states and transitions are shown in Figure 1-1.

asp states diagram

Each AS may be configured for a minimum and maximum number of ASPs. If the minimum number of ASPs are not in an active state the AS is not available. The dynamic lifecycles of M3UA-peer ASP/SGP will
drive the AS state. The AS states and transitions are shown in Figure 1-2.

Messaging


The actors and interfaces of the m3ua application are shown in Figure 2-1.

MTP3-User Primitives (1)

  • M3UAMTP-TRANSFER request

  • M3UAMTP-TRANSFER confirm

  • M3UAMTP-TRANSFER indication

  • M3UAMTP-PAUSE indication

  • M3UAMTP-RESUME indication

  • M3UAMTP-STATUS indication

An MTP-TRANSFER request primitive is accomplished with m3ua:transfer/9,10.

A behaviour module provides an MTP service primitives interface for an MTP user. A callback module name is provided when starting an Endpoint. MTP service primitive indications are delivered to
the MTP user through calls to the corresponding callback functions.

  • m3ua_sgp_fsm:send/11

  • m3ua_asp_fsm:send/11

  • m3ua_sgp_fsm:recv/9

  • m3ua_asp_fsm:recv/9

  • m3ua_sgp_fsm:pause/1

  • m3ua_asp_fsm:pause/1

  • m3ua_sgp_fsm:resume/1

  • m3ua_asp_fsm:resume/1

  • m3ua_sgp_fsm:status/1

  • m3ua_asp_fsm:status/1

Layer Management API (2)

The public API for managing the m3ua application and stack is found in the m3ua module.

Layer management service primitive indications are delivered to an MTP3-User through callback functions:

  • m3ua_sgp_fsm:asp_up/1

  • m3ua_asp_fsm:asp_up/1

  • m3ua_sgp_fsm:asp_down/1

  • m3ua_asp_fsm:asp_down/1

  • m3ua_sgp_fsm:asp_active/1

  • m3ua_asp_fsm:asp_active/1

  • m3ua_sgp_fsm:asp_inactive/1

  • m3ua_asp_fsm:asp_inactive/1

  • m3ua_sgp_fsm:notify/4

  • m3ua_asp_fsm:notify/4

Layer Management Primitives (3)

  • M3UAM-SCTP_ESTABLISH indication

  • M3UAM-SCTP_RELEASE request

  • M3UAM-SCTP_RELEASE confirm

  • M3UAM-SCTP_STATUS request

  • M3UAM-SCTP_STATUS confirm

  • M3UAM-RK_REG request

  • M3UAM-RK_REG confirm

  • M3UAM-ASP_STATUS request

  • M3UAM-ASP_STATUS confirm

  • M3UAM-ASP_UP request

  • M3UAM-ASP_UP confirm

  • M3UAM-ASP_DOWN request

  • M3UAM-ASP_DOWN confirm

  • M3UAM-ASP_ACTIVE request

  • M3UAM-ASP_ACTIVE confirm

  • M3UAM-ASP_INACTIVE request

  • M3UAM-ASP_INACTIVE confirm

  • M3UAM-NOTIFY indication

SCTP Primitives (4)

See gen_sctp.

Message Sequence

The message sequence for an AS with one ASP is charted in Figure 3-1.