Internet Engineering Task Force Tekelec INTERNET DRAFT David Sprague Robby Benedyk Category: Informational Dan Brendes Expires: November 28, 1999 John Mason Transport Adapter Layer Interface David Sprague, Dan Brendes, Robby Benedyk, John Mason, Tekelec May 28, 1999 Status of this document This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html ABSTRACT This document proposes the interfaces of a Signaling Gateway, which provides interworking between the Switched Circuit Network (SCN) and an IP network. Since the Gateway is the central point of signaling information, not only does it provide transportation of signaling from one network to another, but can also provide additional functions such as protocol translation, security screening, routing information, and seamless access to Intelligent Network(IN) services on both networks. The Transport Adapter Layer Interface (TALI) is the proposed interface, which provides TCAP, ISUP, and MTP messaging over TCP/IP. In addition, TALI provides SCCP Management (SCMG), MTP Primitives, dynamic registration of circuits, and routing of call control messages based on circuit location. Table of Contents 1 Introduction 3 2 Architecture 4 3 TALI 5 3.1 TALI Payload 7 3.2 Message Components 8 3.2.1 Point Code Substructure 8 3.2.2 Test 8 3.2.3 Allow Socket 8 3.2.4 Prohibit Socket 9 3.2.5 Prohibit Socket Acknowledge 9 3.2.6 Monitor 9 3.2.7 Monitor Acknowledge 9 3.2.8 SCCP 10 3.2.9 ISUP 10 3.2.10 MTP3 10 3.2.11 MTP Primitives 11 3.2.12 SCCP Primitives 11 3.2.13 Routing Key Registration 12 3.2.14 Routing Key Deregistration 12 3.2.15 Routing Key Substructure 13 3.2.16 Special 13 4 Message Transport 13 4.1 SCCP 13 4.2 ISUP 14 4.3 MTP3 14 4.4 MTP Primitives 15 4.4.1 MTP-PAUSE-INDICATION 15 4.4.2 MTP-RESUME-INDICATION 15 4.4.3 MTP-STATUS-INDICATION 15 4.4.4 MTP-STATUS-REQUEST 15 4.5 SCCP Primitives 16 4.6 Routing Key Registration 16 4.6.1 Registering CICs 16 4.6.2 Registering Subsystems 16 4.7 Routing Key Deregistration 17 4.8 Special Service Message 17 4.9 Socket Management Messages 17 5 Event Handling and State Machine 18 5.1 SS7 Message Handling Events 26 5.1.1 Implementation Dependent Event 26 5.2 Management Events 27 5.2.1 Management Open Socket 27 5.2.2 Management Close Socket 27 5.2.3 Management Allow Traffic 27 5.2.4 Management Prohibit Traffic 27 5.3 Peer Events 27 5.3.1 Received Test Message 27 5.3.2 Received Allow Message 27 5.3.3 Received Prohibit Message 27 5.3.4 Received Prohibit Acknowledge Message 27 5.3.5 Received Monitor Message 27 5.3.6 Received Monitor Acknowledge Message 28 5.4 General Protocol Rules 28 5.5 Graceful Socket Shutdown 28 6 Abbreviations 29 7 Acknowledgements 30 8 Author Information 30 Page 3 1 INTRODUCTION This document is organized into the following 4 sections: - Introduction to the document - Architecture - Protocol - TALI - Message Transport - Event Handling, and State Machine The following terms are used throughout this document. Intelligent Network (IN): A network that allows functionality to be distributed flexibly at a variety of nodes on and off the network and allows the architecture to be modified to control the services. Media Gateway (MG): A MG terminates SCN media streams, packetizes the media data,, if it is not already packetized, and delivers packetized traffic to the packet network. It performs these functions in reverse order for media streams flowing from the packet network to the SCN. Media Gateway Controller (MGC): An MGC handles the registration and management of resources at the MG. The MGC may have the ability to authorize resource usage based on local policy. For signaling transport purposes, the MGC serves as a possible termination and origination point for SCN application protocols, such as SS7 ISDN User Part and Q.931/DSS1. Signaling Gateway (SG): An SG is a signaling agent that receives/sends SCN native signaling at the edge of the IP network. The SG function may relay, translate or terminate SS7 signaling in an SS7-Internet Gateway. The SG function may also be co-resident with the MG function to process SCN signaling associated with line or trunk terminations controlled by the MG (e.g., signaling backhaul). Switched Circuit Network (SCN): The term SCN is used to refer to a network that carries traffic within channelized bearers of pre-defined sizes. Examples include Public Switched Telephone Networks (PSTNs) and Public Land Mobile Networks (PLMNs). Examples of signaling protocols used in SCN include Q.931, SS7 MTP Level 3 and SS7 Application/User parts. Page 4 2 ARCHITECTURE The Signaling Gateway provides an interface to the SCN, other Signaling Gateways, and Intelligent Network (IN) services on the SCN network; and to Media Gateway Controllers and IN Services on an IP network. Signaling Gateways are deployed in pairs for redundancy and reliability. Multiple MGCs are served by both Signaling Gateways and operate either in a load sharing or "hot standby" configuration. TALI provides for signaling transport and the appropriate signaling management functions for the MGCs under load sharing and communication failure cases. TALI is not limited to MGCs, but may also provide signaling to IP based SCPs, and other devices equipped with an IP interface. See Figure 2. +-------+ /---------/ | | | | | | SS7 Link | SCP | +------IP Network-+--------| SG |----------| | | | | | +---------+ | | | |-----------------+-------+ | | +-------+ | | | | | SSP | | | | | +------+ +-----+ +-------+ | | | | || || |IP-SCP| | MGC | || || | | | | || || +------+ +-----+ || || | || || +-----+ || || | | || || | MG | PRI or CAS || || | |-------------------------------+| || +-----+--------------------------------+ || || || |+---------------------------------------+| +-----------------------------------------+ ISUP Trunk SG=Signaling Gateway PRI=Primary Rate Interface (ISDN) MGC=Media Gateway Controller CAS=Circuit Associated Signaling MG=Media Gateway ISUP=ISDN User Part SCP=Service Control Point SSP=Signaling Switching Point Figure 1. Page 5 +-------+ | | | | +------IP Network-+----+---| SG | | | | | | | | | | | SS7 Link +-------+ | | | +-------+-----------------| | | | | | | SSP | | | +---+-------+-----------------| | | | | | SS7 Link | | +------+ +-----+ | | +-------+ | | | | | | |IP-SCP| | MGC | | SG | | | | | | | +------+ +-----+ +-------+ Figure 2. 3 TALI TALI is an adapter layer protocol used to support reliable communication between the SS7 Signaling Network and applications residing within the IP network. TALI provides: Client / Server relationship between the user and the application Standard Berkeley sockets based connection oriented service Management control of the sockets Controlled flow of data across the socket Encapsulation of SCCP, TCAP and ISUP data within service messages Identification of particular SCN protocol being carried Test and watchdog maintenance messages Graceful shutdown of socket Transport of multiple protocol types within a single underlying Session This version of TALI provides 3 SS7 signaling transport methods. It should be noted TALI can be extended. This version provides functionality for MTP over TCP/IP ('mtp3'), SCCP/TCAP over TCP/IP ('sccp'), and ISUP over TCP/IP ('isot'). These three methods comprise the Service Messages. - SCCP/TCAP Service Message ('sccp') Provides delivery of SCCP/TCAP messages in a TCP/IP packet. Subsystem Management of the SCPs is provided via normal SCCP Management(SCMG) contained within UNITDATA messages. - MTP3 Service Message ('mtp3') Provides delivery of MTP3 and User Data in a TCP/IP packet. - ISUP Service Message ('isot') Provides delivery of ISUP messages in a TCP/IP packet. Page 6 Additional functions provided by TALI are socket management, socket test procedures, traffic management, and mechanisms for registration/deregistration of circuits. These are outlined below: - Socket Test ('test') A periodic test message for service message availability. Either a 'proh' or an 'allo' should be returned. - Allow/Prohibit Service Messages ('allo'/'proh') Allow/Disallow service messages to flow across this socket. - Prohibit Service Acknowledgment Message ('proa') Acknowledges the Prohibit Service Message ('proh'). - Monitor/Monitor Acknowledge Socket ('moni'/'mona') These messages provide a test of round-trip delay on a socket. The 'mona' is sent in response to a 'moni'. Either side can initiate a 'moni' to measure round trip delay on a congested socket. - MTP Primitives ('mtpp') This message delivers signaling management messages for events such as Signaling Point Availability/Unavailability and Signaling Point congestion status. - SCCP Primitives ('scpp') This message provides another mechanism for Subsystem Management of an SCP, via seven (7) SCMG messages. - Routing Key Registration/Deregistration ('rkrg'/'rkdr') It may be necessary for the Signaling Gateway to route signaling traffic based on Circuit Identification Code (CIC). These message allows dynamic registration/deregistration of MG terminated circuits or CICs. This message also allows registration of SCCP Subsystems. - Special ('spcl') Intended for transport of other data formats not specified within TALI. Page 7 3.1 TALI Payload The TALI payload follows: ================================================================== OCTET| DESCRIPTION | TYPE | ASCII =====|==========================================|========| ======= 1 | SYNC | OCTETS | 'TALI' ------------------------------------------------------------------ 5 | OPCODE | OCTETS | | Test Service on this Socket | | 'test' | Allow Service messages on this socket | | 'allo' | Prohibit Service messages on this socket| | 'proh' | Prohibit Service messages Ack | | 'proa' | Monitor Socket message on this socket | | 'moni' | Monitor Socket message Ack | | 'mona' | SCCP Service message | | 'sccp' | ISUP Service message | | 'isot' | MTP3 Service message | | 'mtp3' | MTP Primitives | | 'mtpp' | SCCP Primitives | | 'scpp' | Routing Key Registration | | 'rkrg' | Routing Key De-Registration | | 'rkdr' | Special Service Message | | 'spcl' ------------------------------------------------------------------- 9 | LENGTH (least significant byte first) | OCTETS | | Non zero if message contains Service | | | or Monitor Socket message | | ------------------------------------------------------------------- 11 | SERVICE MESSAGE DATA | | | | | =================================================================== Page 8 3.2 Message Components 3.2.1 Point Code Substructure ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | =======================|============================================== 0-3 | Point Code | 4 octets | | Octet 0: Encoding | | 0=ANSI | | 1=NULL (Octets 1-3 are undefined) | | 2=ITU National | | 3=ITU | | If ANSI: | | Octet 1=Network | | Octet 2=Cluster | | Octet 3=Member | | If ITU National: | | Octet 1=Zone | | Octet 2=Area | | Octet 3=Id | | If ITU: | | Octet 1-3=Number ---------------------------------------------------------------------- 3. 2.2 Test ('test') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'test' ---------------------------------------------------------------------- 8-9 | Length | 00 ---------------------------------------------------------------------- 3.2.3 Allow Socket ('allo') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'allo' ---------------------------------------------------------------------- 8-9 | Length | 00 ---------------------------------------------------------------------- Page 9 3.2.4 Prohibit Socket ('proh') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | =======|===============|============================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'proh' ---------------------------------------------------------------------- 8-9 | Length | 00 ---------------------------------------------------------------------- 3.2.5 Prohibit Socket Acknowledge ('proa') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | =======|===============|============================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'proa' ---------------------------------------------------------------------- 8-9 | Length | 00 ---------------------------------------------------------------------- 3.2.6 Monitor ('moni') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'moni' ---------------------------------------------------------------------- 8-9 | Length | 0-200 ---------------------------------------------------------------------- 10-x | Data | Variable Length ---------------------------------------------------------------------- 3.2.7 Monitor Acknowledge ('mona') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'mona' ---------------------------------------------------------------------- 8-9 | Length | 0-200 ---------------------------------------------------------------------- 10-x | Data | Data must match corresponding 'moni' ---------------------------------------------------------------------- Page 10 3.2.8 SCCP ('sccp') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'sccp' ---------------------------------------------------------------------- 8-9 | Length | variable ---------------------------------------------------------------------- 10-x | Data | SCCP and TCAP Data starting at the SCCP | | message type | | ---------------------------------------------------------------------- 3.2.9 ISUP Data ('isot') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'isot' ---------------------------------------------------------------------- 8-9 | Length | variable ---------------------------------------------------------------------- 10-x | Data | ISUP message starting at the SIO in the | | MTP3 header. | | ---------------------------------------------------------------------- 3.2.10 MTP3 ('mtp3') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'mtp3' ---------------------------------------------------------------------- 8-9 | Length | variable ---------------------------------------------------------------------- 10-x | Data | MTP3 and User Data starting at the SIO in the | | MTP3 header | | ---------------------------------------------------------------------- Page 11 3.2.11 MTP Primitives ('mtpp') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'mtpp' ---------------------------------------------------------------------- 8-9 | Length | 0012 ---------------------------------------------------------------------- 10-13 | Primitive | 0=Pause Indication | | 1=Resume Indication | | 2=Status Indication | | 3=Status Request ---------------------------------------------------------------------- 14-17 | Concerned | Point Code Substructure | Point Code | ----------------------------------------------------------------------- | | 18-21 | Cause | Used to carry congestion level status | Code | (Primitives 2&3 Only) | | ---------------------------------------------------------------------- 3.2.12 SCCP Primitives ('scpp') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'scpp' ---------------------------------------------------------------------- 8-9 | Length | 0016 ---------------------------------------------------------------------- 10-13 | Primitive | 0=Subsystem Allowed | | 1=Subsystem Prohibited | | 2=Subsystem Test | | 3=Subsystem Out of Service Request | | 4=Subsystem Out of Service Grant | | 5=Susbystem Backup Routing | | 6=Subsystem Normal Routing ---------------------------------------------------------------------- 14-17 | Affected | Point Code Substructure | Point Code | ---------------------------------------------------------------------- 18-21 | Affected | | Subsystem | Affected Subsystem = 0-255 | | ---------------------------------------------------------------------- 22-25 | Subsystem | | Multiplicity | 0-3 | Indicator | ---------------------------------------------------------------------- Page 12 3.2.13 Routing Key Registration ('rkrg') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'rkrg' ---------------------------------------------------------------------- 8-9 | Length | 2 + 24(Key Count) ---------------------------------------------------------------------- 10-11 | Key Count | Number of Keys in the message, maximum 50 ---------------------------------------------------------------------- 12-x | Routing Key | Set of routing key sub-structures | Sub-Structure| ---------------------------------------------------------------------- 3.2.14 Routing Key Deregistration ('rkdr') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'rkdr' ---------------------------------------------------------------------- 8-9 | Length | 2 + 24(Key Count) ---------------------------------------------------------------------- 10-11 | Key Count | Number of Keys in the message, maximum 50 ---------------------------------------------------------------------- 12-x | Routing Key | Set of routing key sub-structures | Sub-Structure| ---------------------------------------------------------------------- Page 13 3.2.15 Routing Key Sub-structure ====================================================================== OCTETS | FIELD NAME | DESCRIPTION ====================================================================== 0-3 | Type | 0=SCCP-REQ | | 1=ISUP-REQ | | 2=SCCP-IND | | 3=ISUP-IND ---------------------------------------------------------------------- 4-7 | OPC | Point Code Substructure | | ---------------------------------------------------------------------- 8-11 | DPC | Point Code Substructure | | ---------------------------------------------------------------------- 12-15 | SSN | Subsystem Number (Valid for types 0 and 2) ---------------------------------------------------------------------- 16-17 | CIC Low | CIC low end of range (Valid for types 1 and 3) ---------------------------------------------------------------------- 18-19 | CIC High | CIC high end of range(Valid for types 1 and 3) ---------------------------------------------------------------------- 20-23 | Indication | Indication - Valid for Indications Only | Code | 0=Success | | 1=Fail ====================================================================== 3.2.16 Special ('spcl') ====================================================================== OCTETS | FIELD NAME | DESCRIPTION | | ====================================================================== 0-3 | SYNC | 'TALI' ---------------------------------------------------------------------- 4-7 | OPCODE | 'spcl' ---------------------------------------------------------------------- 8-9 | Length | Variable ---------------------------------------------------------------------- 10-x | Data | Non-TALI specific data ---------------------------------------------------------------------- 4 Message Transport 4.1 SCCP On a SCCP MSU message arriving from the SS7 Network the Signaling Gateway takes the SS7 MSU: + discards the MTP Layer 2 information, CRC and flags + places the DPC from MTP Layer 3 into the Called Party Address field of the SCCP layer; the Called Party Point Code is added to the Called Party Address if it does not exist, + places the OPC from MTP Layer 3 into the Calling Party Address field of the SCCP layer if there is no Calling Party Point Code, + places the modified SCCP and unchanged TCAP data in the service payload area of the TALI packet, + The OPCODE is set to 'sccp', + The LENGTH is set to the number of octets in the SERVICE field. Page 14 Since the routing information from MTP Layer 3 is placed in the SCCP part of the outgoing message, no routing information needs to be saved by the Signaling Gateway On a data message arriving from the IP Network the Signaling Gateway: + validates the TALI header, + Regenerate the SIO with the Sub-Service Field set to National Network, priority of zero (0), Service Indicator set to SCCP + extracts the SCCP/TCAP data from the SERVICE area and places it in the new SS7 message, + sets the DPC to the SCCP Called Party Point Code, + sets the OPC to the SCCP Calling Party Point Code, + randomly generates the SLS + The Layer 2 data is properly formatted and the message is routed out of the Signaling Gateway. 4.2 ISUP On an ISUP MSU message arriving from the SS7 Network the Signaling Gateway takes the SS7 MSU: + discards the MTP Layer 2 information, CRC and flags + places SIO, Routing Label, and ISUP data into the SERVICE payload area of the TALI packet, + The OPCODE is set to 'isot' + The LENGTH is set to the number of octets in the SERVICE field. Since the routing information is placed in the TALI Packet, no routing information needs to be saved by the Signaling Gateway. On a data message arriving from the IP Network the Signaling Gateway takes: + validates the TALI header, + extracts the MTP Layer 3 data from the SERVICE area and places it in the new SS7 message, + The Layer 2 data is properly formatted and the message is routed out of the Signaling Gateway. 4.3 MTP3 On a MTP3 MSU message arriving from the SS7 Network the Signaling Gateway takes the SS7 MSU: + discards the MTP Layer 2 information, CRC and flags + places SIO, Routing Label, and User Data into the SERVICE payload area of the TALI packet, + The OPCODE is set to "mtp3", + The LENGTH is set to the number of octets in the SERVICE field. Since the routing information is placed in the TALI Packet, no routing information needs to be saved by the Signaling Gateway. On a data message arriving from the IP Network the Signaling Gateway takes: + validates the TALI header, + extracts the MTP Layer 3 data from the SERVICE area and places it in the new SS7 message, + The Layer 2 data is properly formatted and the message is routed out of the Signaling Gateway. Page 15 4.4 MTP Primitives 4.4.1 MTP-PAUSE-INDICATION The MTP-PAUSE-INDICATION is sent from the Signaling Gateway for the following events: 1) On isolation of an SS7 Network Element 2) In response to a message bound for an isolated Network Element 3) In response to a MTP-STATUS request concerning an unavailable node On any of these three events, the Signaling Gateway performs the following: + The OPCODE is set to "mtpp", + The primitive is set to MTP-PAUSE-INDICATION, + The Concerned Point Code is placed in the Message Parameters field + The LENGTH is set to the number of octets in the Message Parameters field. 4.4.2 MTP-RESUME-INDICATION The MTP-RESUME-INDICATION is sent from the Signaling Gateway for the following events: 1) On new availability of an SS7 Network Element 2) In response to a MTP-STATUS request concerning an available node On any of these two events, the Signaling Gateway performs the following: + The OPCODE is set to "mtpp", + The primitive is set to MTP-RESUME-INDICATION, + The Concerned Point Code is placed in the Message Parameters field + The LENGTH is set to the number of octets in the Message Parameters field. 4.4.3 MTP-STATUS-INDICATION On a transition of congestion level of an SS7 Network Element, the Signaling Gateway does the following: + The OPCODE is set to "mtpp", + The primitive is set to MTP-STATUS-INDICATION, + The Concerned Point Code and Cause Code are placed in the Message Parameters field + The LENGTH is set to the number of octets in the Message Parameters field. 4.4.4 MTP-STATUS-REQUEST The MTP-STATUS-REQUEST is sent to query the status of a concerned point code. + The OPCODE is set to "mtpp", + The primitive is set to MTP-STATUS-REQUEST, + The Concerned Point Code is placed in the Message Parameters field + The LENGTH is set to the number of octets in the Message Parameters field. Page 16 4.5 SCCP Primitives SCCP Subsystem Management (SCMG) is provided through a set of SCCP primitives passed between the Signaling Gateway and the IP-SCP. To send an SCCP primitive, the Signaling Gateway does the following: + The OPCODE is set to "scpp", + The primitive is set to either: 00000000 - Subsystem Allowed 00000001 - Subsystem Prohibited 00000002 - Subsystem Test 00000003 - Subsystem Out of Service Request 00000004 - Subsystem Out of Service Grant 00000005 - Subsystem Backup Routing 00000006 - Subsystem Normal Routing + The Concerned Point Code, Subsystem, and Subsystem Multiplicity Indicator (SMI) are placed in the Message Parameters field + The LENGTH is set to the number of octets in the Message Parameters field. 4.6 Routing Key Registration The Routing Key Registration ('rkrg') message is sent to the Signaling Gateway to dynamically register Circuit Identification Codes (CIC) which are available for call processing, or SCCP Subsystems available for TCAP transactions. The routing key sub-structure contains the type "ISUP-REQ" for registering CICs or "SCCP-REQ" for registering subsystems. 4.6.1 Registering CICs The registration message substructure contains the OPC, DPC, and range of CICs available. All subsequent ISUP messages, which contain the specified range of CICs, are routed via the socket from which the 'rkrg' was received. A registration message can register 50 CIC ranges. The CICs must be deregistered before use by another socket. The Signaling Gateway indicates registration success by returning the 'rkrg' with the type field set to 'ISUP-IND' in the registration sub- structure, and the Indication Code set to success. If the CICs can not be registered, a fail code is placed in the Indication Code. 4.6.2 Registering SCCP Subsystems The registration message substructure contains the Subsystem and Point Code available. All subsequent TCAP queries, which contain the specified Subsystem, are routed via the socket from which the 'rkrg' was received. Multiple registration messages can be sent to register multiple Subsystems. The Signaling Gateway indicates registration success by returning the 'rkrg' with the type field set to 'SCCP-IND' in the registration sub- structure, and the Indication Code set to success. If the Subsystem can not be registered, a fail cause code is placed in the Indication Code. Page 17 4.7 Routing Key Deregistration The Routing Key Deregistration 'rkdr' message is sent to the Signaling Gateway to indicate that the specified range of CICs or the specified Subsystems are no longer available for call processing or transaction capability. The deregistration message contains the OPC, DPC, and range of CICs/Subsystems to be deregistered. The type field is set to either ISUP-REQ or SCCP-REQ. The Signaling Gateway indicates deregistration success by returning the 'rkdr' with the type field set to 'ISUP-IND' or 'SCCP-IND' in the registration sub-structure, and the Indication Code set to success. If the Subsystem or CICs can not be deregistered, a fail code is placed in the Indication Code. 4.8 Special Service Message The Special Service Message is available for transmission of any raw data between the Signaling Gateway and connected network element. To send a special service message: + The OPCODE is set to "spcl", + The LENGTH is set to the number of octets in the Special Service Message, 4.9 Socket Management Messages The socket management messages are addressed in section 5 and include 'test', 'allo', 'proh', 'proa', 'moni', and 'mona'. Page 18 5 Event Handling and State Machine The TALI State Machine and Event Handling: +============+ +============+ | | |---------| |------------------| | | | User | | Service | | Mgmt. Open | | MANAGEMENT | | Part |<-->| Message | | Mgmt. Close |<-->| | | | | | | Mgmt. Proh. | | | | | |---------| | Mgmt. Allow | +============+ +============+ ^ |------------------| | ^ | | v v +====================================================================+ | TALI State Machine | | | +====================================================================+ ^ ^ ^ ^ | | | | | | | | | | | | v | | | --------- ----------------- ------------ ------------------ | Received| | | | | | | | 'test' | | Connection est. | | Protocol | | T1 Timer Expired | | 'allo' | | Connection lost | | Violation | | T2 Timer Expired | | 'proh' | | | | | | T3 Timer Expired | | 'proa' | ----------------- ----------- | T4 Timer Expired | | 'moni' | ^ ------------------ | 'mona' | | ^ | or | | | | Service | | | | Message | | | | | | | --------- | | ^ | | | +=================================================+ | | | | | IMPLEMENTATION | | | DEPENDENT | | +=================================================+ v +============+ | PEER | | | +============+ Page 19 TALI STATES ====================================================================== Name | Description ====================================================================== OOS | NE prohibited - FE prohibited, socket is Out of | Service ---------------------------------------------------------------------- Connecting | NE prohibited - FE prohibited, Socket is attempting | to connect. Servers are 'accepting', Clients are | 'connecting' ---------------------------------------------------------------------- NEP-FEP | Both sides are not ready to use the socket for | service PDUs ---------------------------------------------------------------------- NEP-FEA | NE is not ready to use the socket for service PDUs | FE is ready to use the socket for service PDUs ---------------------------------------------------------------------- NEA-FEP | FE is not ready to use the socket for service PDUs | NE is ready to use the socket for service PDUs ---------------------------------------------------------------------- NEA-FEA | Both side are ready to use the socket for service | PDUs. This is the only state where normal bi- | directional data transfer occurs. ====================================================================== TALI TIMERS ====================================================================== NAME | MIN | MAX | DEFAULT | DESCRIPTION ====================================================================== T1 | 100ms | 60 sec | 3 sec | Send test PDU timer ---------------------------------------------------------------------- T2 | 100ms | 60 sec | 2 sec | Response timer for a 'allo' or | | | | 'proh' response to test message ---------------------------------------------------------------------- T3 | 100ms | 60 sec | 5 sec | Timer controls how long to process | | | | rcvd service data after an NE | | | | transition from NEA to NEP. System | | | | is waiting for a 'proa' response to | | | | the first 'proh' sent when NE | | | | transitions from NEA to NEP. ---------------------------------------------------------------------- T4 | 100ms | 60 sec | 60 sec | Send 'moni' PDU timer ====================================================================== *T1 must be greater than T2 Page 20 Out of Service State ===================================================================== | | STATE | | EVENT | Out of Service | | | | OOS | | V | | +----------------------+---------------------------------------------+ | T1 Timer Expired | | +----------------------+---------------------------------------------+ | T2 Timer Expired | | +----------------------+---------------------------------------------+ | T3 Timer Expired | | +----------------------+---------------------------------------------+ | Received 'test' | | +----------------------+---------------------------------------------+ | Received 'allo' | | +----------------------+---------------------------------------------+ | Received 'proh' | | +----------------------+---------------------------------------------+ | Received 'proa' | | +----------------------+---------------------------------------------+ | Received 'moni' | | +----------------------+---------------------------------------------+ | Received 'mona' | | +----------------------+---------------------------------------------+ | Received 'isot', | | | 'sccp', or 'mtp3' | | +----------------------+---------------------------------------------+ |Connection Established| | +----------------------+---------------------------------------------+ | Connection Lost | | +----------------------+---------------------------------------------+ | Protocol Violation | | +----------------------+---------------------------------------------+ | Mgmt. Open Socket | Open the Socket, New State=Connecting | +----------------------+---------------------------------------------+ | Mgmt. Close Socket | | +----------------------+---------------------------------------------+ | Mgmt. Prohibit Socket| sock_allowed=FALSE | +----------------------+---------------------------------------------+ | Mgmt. Allow Socket | sock_allowed=TRUE | +----------------------+---------------------------------------------+ | SCCP, ISUP, MTP3 | Reject data | +----------------------+---------------------------------------------+ Page 21 Connecting State ===================================================================== | | STATE | | EVENT | Connecting | | | | | | V | | +----------------------+---------------------------------------------+ | T1 Timer Expired | | +----------------------+---------------------------------------------+ | T2 Timer Expired | | +----------------------+---------------------------------------------+ | T3 Timer Expired | | +----------------------+---------------------------------------------+ | Received 'test' | | +----------------------+---------------------------------------------+ | Received 'allo' | | +----------------------+---------------------------------------------+ | Received 'proh' | | +----------------------+---------------------------------------------+ | Received 'proa' | | +----------------------+---------------------------------------------+ | Received 'moni' | | +----------------------+---------------------------------------------+ | Received 'mona' | | +----------------------+---------------------------------------------+ | Received 'isot', | | | 'sccp', or 'mtp3' | | +----------------------+---------------------------------------------+ |Connection Established| start T1, start T2, | | | If sock_allowed | | | send 'allo', send 'test' | | | New State=NEA-FEP | | | Else | | | send 'proh', send 'test' | | | New State=NEP-FEP +----------------------+---------------------------------------------+ | Connection Lost | | +----------------------+---------------------------------------------+ | Protocol Violation | | +----------------------+---------------------------------------------+ | Mgmt. Open Socket | | +----------------------+---------------------------------------------+ | Mgmt. Close Socket | Close socket, New State=OOS | +----------------------+---------------------------------------------+ | Mgmt. Prohibit Socket| sock_allowed=FALSE | +----------------------+---------------------------------------------+ | Mgmt. Allow Socket | sock_allowed=TRUE | +----------------------+---------------------------------------------+ | SCCP, ISUP, MTP3 | reject data | +----------------------+---------------------------------------------+ Page 22 Near End Prohibited-Far End Prohibited ===================================================================== | | STATE | | EVENT | NEP-FEP | | | | | | V | | +----------------------+---------------------------------------------+ | T1 Timer Expired | send test, start T1, start T2 | +----------------------+---------------------------------------------+ | T2 Timer Expired | Protocol Violation | +----------------------+---------------------------------------------+ | T3 Timer Expired | Protocol Violation | +----------------------+---------------------------------------------+ | Received 'test' | Send 'proh' | +----------------------+---------------------------------------------+ | Received 'allo' | Stop T2, New State=NEP-FEA | +----------------------+---------------------------------------------+ | Received 'proh' | Stop T2, Send 'proa' | +----------------------+---------------------------------------------+ | Received 'proa' | Stop T3 | +----------------------+---------------------------------------------+ | Received 'moni' | Convert 'moni' to 'mona', send 'mona' | +----------------------+---------------------------------------------+ | Received 'mona' | Implementation dependent | +----------------------+---------------------------------------------+ | Received 'isot', | Protocol Violation | | 'sccp', or 'mtp3' | | +----------------------+---------------------------------------------+ |Connection Established| | +----------------------+---------------------------------------------+ | Connection Lost | Protocol Violation | +----------------------+---------------------------------------------+ | Protocol Violation | Stop all timers, Close the socket | | | New State=connecting | +----------------------+---------------------------------------------+ | Mgmt. Open Socket | | +----------------------+---------------------------------------------+ | Mgmt. Close Socket | Stop all timers, Close the socket | | | New state=OOS | +----------------------+---------------------------------------------+ | Mgmt. Prohibit Socket| sock_allowed=FALSE | +----------------------+---------------------------------------------+ | Mgmt. Allow Socket | sock_allowed=TRUE, send 'allo' | | | New state=NEA-FEP | +----------------------+---------------------------------------------+ | SCCP, ISUP, MTP3 | reject data | +----------------------+---------------------------------------------+ Page 23 Near End Prohibited-Far End Allowed ===================================================================== | | STATE | | EVENT | NEP-FEA | | | | | | V | | +----------------------+---------------------------------------------+ | T1 Timer Expired | Send 'test', start T1, start T2 | +----------------------+---------------------------------------------+ | T2 Timer Expired | Protocol Violation | +----------------------+---------------------------------------------+ | T3 Timer Expired | Protocol Violation | +----------------------+---------------------------------------------+ | Received 'test' | Send 'proh' | +----------------------+---------------------------------------------+ | Received 'allo' | Stop T2 | +----------------------+---------------------------------------------+ | Received 'proh' | Stop T2, send 'proa', New State=NEP-FEP | +----------------------+---------------------------------------------+ | Received 'proa' | Stop T3 | +----------------------+---------------------------------------------+ | Received 'moni' | Convert 'moni' to 'mona', send 'mona' | +----------------------+---------------------------------------------+ | Received 'mona' | Implementation dependent | +----------------------+---------------------------------------------+ | Received 'isot', | If T3 running, Process Data | | 'sccp', or 'mtp3' | Else Protocol Violation | +----------------------+---------------------------------------------+ |Connection Established| | +----------------------+---------------------------------------------+ | Connection Lost | Protocol Violation | +----------------------+---------------------------------------------+ | Protocol Violation | Stop all timers, Close the socket | | | New State=connecting | +----------------------+---------------------------------------------+ | Mgmt. Open Socket | | +----------------------+---------------------------------------------+ | Mgmt. Close Socket | Stop all timers, Close the socket | | | New state=OOS | +----------------------+---------------------------------------------+ | Mgmt. Prohibit Socket| sock_allowed=FALSE | +----------------------+---------------------------------------------+ | Mgmt. Allow Socket | sock_allowed=TRUE, send 'allo' | | | New state=NEA-FEA | +----------------------+---------------------------------------------+ | SCCP, ISUP, MTP3 | Reject Data | +----------------------+---------------------------------------------+ Page 24 Near End Allowed-Far End Prohibited ===================================================================== | | STATE | | EVENT | NEA-FEP | | | | | | V | | +----------------------+---------------------------------------------+ | T1 Timer Expired | Send 'test', start T1, start T2 | +----------------------+---------------------------------------------+ | T2 Timer Expired | Protocol Violation | +----------------------+---------------------------------------------+ | T3 Timer Expired | | +----------------------+---------------------------------------------+ | Received 'test' | send 'allo' | +----------------------+---------------------------------------------+ | Received 'allo' | Stop T2, New State=NEA-FEA | +----------------------+---------------------------------------------+ | Received 'proh' | Stop T2, send 'proa' | +----------------------+---------------------------------------------+ | Received 'proa' | | +----------------------+---------------------------------------------+ | Received 'moni' | convert 'moni' to 'mona', send 'mona' | +----------------------+---------------------------------------------+ | Received 'mona' | Implementation dependent | +----------------------+---------------------------------------------+ | Received 'isot', | Protocol Violation | | 'sccp', or 'mtp3' | | +----------------------+---------------------------------------------+ |Connection Established| | +----------------------+---------------------------------------------+ | Connection Lost | Protocol Violation | +----------------------+---------------------------------------------+ | Protocol Violation | Stop all timers, Close the socket | | | New State=connecting | +----------------------+---------------------------------------------+ | Mgmt. Open Socket | | +----------------------+---------------------------------------------+ | Mgmt. Close Socket | Stop all timers, Close the socket | | | New state=OOS | +----------------------+---------------------------------------------+ | Mgmt. Prohibit Socket| sock_allowed=FALSE, send 'proh', start T3 | | | New State=NEP-FEP | +----------------------+---------------------------------------------+ | Mgmt. Allow Socket | sock_allowed=TRUE | +----------------------+---------------------------------------------+ | SCCP, ISUP, MTP3 | reject data | +----------------------+---------------------------------------------+ Page 25 Near End Allowed-Far End Allowed ===================================================================== | | STATE | | EVENT | NEA-FEA | | | | | | V | | +----------------------+---------------------------------------------+ | T1 Timer Expired | Send 'test', start T1, start T2 | +----------------------+---------------------------------------------+ | T2 Timer Expired | Protocol Violation | +----------------------+---------------------------------------------+ | T3 Timer Expired | | +----------------------+---------------------------------------------+ | Received 'test' | send 'allo' | +----------------------+---------------------------------------------+ | Received 'allo' | stop T2 | +----------------------+---------------------------------------------+ | Received 'proh' | stop T2, flush or reroute data, send 'proa' | | | New State=NEA-FEP | +----------------------+---------------------------------------------+ | Received 'proa' | | +----------------------+---------------------------------------------+ | Received 'moni' | Convert 'moni' to 'mona', send 'mona' | +----------------------+---------------------------------------------+ | Received 'mona' | Implementation dependent | +----------------------+---------------------------------------------+ | Received 'isot', | Process data | | 'sccp', or 'mtp3' | | +----------------------+---------------------------------------------+ |Connection Established| | +----------------------+---------------------------------------------+ | Connection Lost | Protocol Violation | +----------------------+---------------------------------------------+ | Protocol Violation | Stop all timers, Close the socket | | | New State=connecting | +----------------------+---------------------------------------------+ | Mgmt. Open Socket | | +----------------------+---------------------------------------------+ | Mgmt. Close Socket | Stop all timers, Close the socket | | | New state=OOS | +----------------------+---------------------------------------------+ | Mgmt. Prohibit Socket| sock_allowed=FALSE, send 'proh', start T3 | | | New state=NEP-FEA | +----------------------+---------------------------------------------+ | Mgmt. Allow Socket | sock_allowed=TRUE | +----------------------+---------------------------------------------+ | SCCP, ISUP, MTP3 | Send data | +----------------------+---------------------------------------------+ Page 26 5.1 SS7 Message Handling Events These events are the actual SS7 messages to be transported using TALI. The SS7 message handling part of the application provides an interface to the state machine interfaces to give the state machine data and accept data from the state machine. The state machine rejects new SS7 messages from the Message Handling process unless both the near and far end are allowed 5.1.1 Implementation Dependent Event 5.1.1.1 Connection Established Socket Event The Connection Established Event occurs when an application (either client or server) has detected a successful connection to a peer. 5.1.1.2 Connection Lost Socket Event The Connection Lost Event occurs when an application (either client or server) has detected that its connection to a peer has been lost. 5.1.1.3 T1 Timer Expired Event The T1 Timer Expired Event occurs when a T1 timer has expired. The T1 timer represents the interval between the origination of Test Messages 'test'. 5.1.1.4 T2 Timer Expired Event The T2 Timer Expired Event occurs when a T2 timer has expired. A T2 timer represents the amount of that the Peer has to return an Allow Message 'allo' message or a Prohibit Message 'proh' from the Far End in response to a Test Message 'test'. 5.1.1.5 T3 Timer Expired Event The T3 Timer Expired Event occurs when a T3 timer has expired. A T3 timer controls how long to continue to process Service Data after a Management Prohibit Traffic Event has occurred. 5.1.1.6 T4 Timer Expired Event The T4 Timer Expired Event occurs when a T4 timer has expired. A T4 timer represents the interval between the origination of Monitor Messages 'moni'. 5.1.1.7 Protocol Violation Event A Protocol Violation Event occurs when the TALI detects an exceptional condition. Protocol violations include: - Invalid sync code in a received message - Invalid length field in a received message - Not receiving a Allow Message 'allo', or Prohibit Message 'proh', in response to the origination of a Test Message 'test' , before the T2 timer expires - Receiving Service messages on a prohibited socket. - Socket errors Page 27 5.2 Management Events 5.2.1 Management Open Socket Event The client is responsible for initiating the socket connection. The server must be listening for connections for the connection to be completed. Normally, the client would create a new socket instance and issue a connect. The server would have already performed a bind, listen and accept. 5.2.2 Management Close Socket Event The client can close the socket by issuing a close to the socket. All outstanding messages are lost. 5.2.3 Management Allow Traffic Event Management can allow the flow of traffic on the open socket by issuing the Management Allow Event ('allo'). This changes the state of the near end to allowed. 5.2.4 Management Prohibit Traffic Event Management can prohibit the flow of traffic on the open socket by issuing the Management Prohibit Event ('proh'). This changes the state of the near end to prohibited. 5.3 Peer Events 5.3.1 Received Test Message ('test') Event The Received Test Message Event occurs when a Test Message 'test' has been received from the far end. The Near End sends a 'test' to inquire the State of the Far End Socket. The response to a 'test' is either a Prohibit Message ('proh') or an Allowed Message ('allo'). 5.3.2 Received Allow Message ('allo') Event The Received Allow Message Event occurs when an Allow Message 'allo' has been received from the far end. The reception of the 'allo' indicates the Far End is ready to receive Service messages. 5.3.3 Received Prohibit Message ('proh') Event The Received Prohibit Message Event occurs when a Prohibit Message 'proh' has been received from the far end. The reception of the 'proh' indicates the Far End no longer wishes to receive Service messages. 5.3.4 Received Prohibit Acknowledge Message ('proa') Event The Received Prohibit Allow Message Event occurs when a Prohibit Allow Message 'proa' has been received from the far end. The 'proa' message is sent immediately upon reception of a Prohibit Message 'proh'. 5.3.5 Received Monitor Message ('moni') Event The Received Monitor Message Event occurs when a Monitor Message 'moni' has been received from the far end. The objective of the Monitor 'moni' message is to measure and derive performance measurements on a Socket. Either end may send this message on a Socket in order to measure the round trip time on the socket. Page 28 5.3.6 Received Monitor Acknowledge Message ('mona') Event The Received Monitor Acknowledgment Message Event occurs when a Monitor Acknowledgment Message 'mona' has been received from the far end. Either End may send the Monitor Acknowledgment 'mona' message in response to a Monitor. The Data Contents must be the contents of the Monitor Message. 5.3.7 Received Service Message ('sccp','isot','mtp3') Event The Received Service Message Event occurs when a Service Message has been received from the far end. 5.4 General Protocol Rules 1) Neither side can send user PDUs unless both sides are allowed. 2) Each side initializes to the prohibit state for both near end and far end. 3) State changes are signaled with either an 'allo' or 'proh'. 4) Each side can poll the far end's state with a test. Upon sending test, T1 and T2 should always be restarted. 5) Each side polls the far end with a test every N (T1) seconds. 6) The reply to a test is based on the state of the near end only. 7) The reply to a test is either 'allo' or 'proh'. 8) A far end signals the last user PDU has been transmitted with either a 'proh' or a 'proa'. 9) Upon receiving a 'proh', the receiver must always reply with 'proa'. 10) The NE cannot gracefully close a socket unless a 'proh' is sent and 'proa' is received. 11) On the transition to NEP, after sending a proh, the near end must continue to process received service PDUs until a proa is received or until a T3 timer expires. 5.5 Graceful Socket Shutdown The state table treats a management request to close the socket as a 'hard' shutdown. That is, it will close the socket immediately regardless of the current state. Therefore, the correct steps to ensure a graceful shutdown of a socket (from the NEA_FEP or NEA_FEA states) is: 1) Management issues a Management Prohibit Traffic Event on the socket. 2) Management will wait for T3 to expire. 3) Management can then issue a Close Socket Event on the socket. Page 29 6 Abbreviations: CAS Circuit Associated Signaling DB Database FE Far-End IN Intelligent Network ISUP ISDN User Part MG Media Gateway MGC Media Gateway Controller MTP Message Transfer Part NE Near-End PRI Primary Rate Interface SCMG SCCP Subsystem Management SCN Switched Circuit Network SCP Service Control Point SG Signaling Gateway SS7 Signaling System 7 SSP Service Switching Point TALI Transport Adapter Layer Protocol TCAP Transmission Capabilities Application Part TCP/IP Transmission Control Protocol/Internet Protocol Page 30 7. Acknowledgements The authors would like to thank the following people for their comments and contributions to the document. Ike Elliot -Level 3 Anita Marsh - Tellabs Rich Garrett -USWest Terry Thio -Cisco Philip W. Shryock -Compaq Rahul Chopra -3Com Fu Lin Wu -Telcordia Prakash Iyer - Lucent 8. Author Information David Sprague Dan Brendes Tekelec Tekelec 5151 McCrimmon Pkwy. 5151 McCrimmon Pkwy. Suite 216 Suite 216 Morrisville, NC 27560 Morrisville, NC 27560 +1 919-460-5563 +1 919-460-2162 Robby Benedyk John Mason Tekelec Tekelec 5151 McCrimmon Pkwy. 5151 McCrimmon Pkwy. Suite 216 Suite 216 Morrisville, NC 27560 Morrisville, NC 27560 +1 919-460-5533 +1 919-388-1306