WO2001059999A1 - Service level executable environment for integrated pstn and ip networks and call processing language therefor - Google Patents

Service level executable environment for integrated pstn and ip networks and call processing language therefor Download PDF

Info

Publication number
WO2001059999A1
WO2001059999A1 PCT/US2001/004450 US0104450W WO0159999A1 WO 2001059999 A1 WO2001059999 A1 WO 2001059999A1 US 0104450 W US0104450 W US 0104450W WO 0159999 A1 WO0159999 A1 WO 0159999A1
Authority
WO
WIPO (PCT)
Prior art keywords
slee
network
cau
script
apphcation
Prior art date
Application number
PCT/US2001/004450
Other languages
French (fr)
Inventor
David Butler
R. David Freedman
Original Assignee
Convergent Networks, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Convergent Networks, Inc. filed Critical Convergent Networks, Inc.
Priority to AU2001238153A priority Critical patent/AU2001238153A1/en
Priority to US10/181,831 priority patent/US7934206B2/en
Priority to CA2399720A priority patent/CA2399720C/en
Publication of WO2001059999A1 publication Critical patent/WO2001059999A1/en
Priority to US13/092,444 priority patent/US20110194556A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/0016Arrangements providing connection between exchanges
    • H04Q3/0029Provisions for intelligent networking
    • H04Q3/0045Provisions for intelligent networking involving hybrid, i.e. a mixture of public and private, or multi-vendor systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/169Special adaptations of TCP, UDP or IP for interworking of IP based networks with other networks 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5629Admission control
    • H04L2012/563Signalling, e.g. protocols, reference model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • H04L2012/6486Signalling Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Definitions

  • This invention relates broadly to telecommunications. More particularly, this invention relates to a switching infrastructure and developer environment for telecommunication applications.
  • PSTN public switch telephone network
  • AT access tandem
  • the EO switches connect a local carrier to a subscriber (a party capable of making or receiving a call)
  • the AT switches connect local carriers and other intermediary AT switches together.
  • a path (circuit) is defined between the calling party and the called party through the EO and AT switches, and the call is connected over this path.
  • signahng associated with the call e.g., information about the route through various switches to the called party
  • the call content e.g., analog voice signals
  • the PSTN was designed to handle voice calls having an average duration of five minutes. Due to a change in calling patterns, in which the average call has become longer, the PSTN network has become quite congested. The reason for the change in calling patterns is, at least in part, a result of the popularity of the Internet and an associated increased data traffic from modem use. Modem calls are typically relatively longer than voice calls, averaging thirty minutes in duration.
  • the SS7 signaling system 7
  • the signaling for setting up a path for the call is sent "out-of-band" (over a discrete network), and the call is then connected via a path through the legacy PSTN. While this removes the signaling traffic from the PSTN network switches, even this system does not satisfactorily relieve the PSTN network congestion.
  • long distance telecommunication was deregulated. New long distance companies, such as MCI and Sprint, among others, were granted equal access to end-office (EO) switches at the local exchange carrier central office in order to compete directly with AT&T by installing their own access tandem (AT) switches and their own long distance network.
  • EO end-office
  • the Advanced Intelligent Network comprises service control points in the SS7 network and operates to move call services away from the traffic switches to de-couple service logic from the switching function and provide an enhanced system of service distribution and third party service suppliers.
  • the AIN system has been hindered by SS7 interoperability issues with respect to different Tier 1 International Carriers and also due to vendor-specific implementations. That is, an implementation of the AIN system is confined to a particular geographic area and/or vendor. For example, in Europe there are multiple carriers, each using a different and incompatible AIN protocol.
  • IP Internet Protocol
  • IP IP
  • the IP network is a packet-based network. This is suitable for viewing web pages on the world-wide web where timing is not critical. It would be ideal to move enhanced call services away from the EO/AT switches and make available and distribute call services in a non-localized manner, similar to the manner in which web pages are made available. Yet, for some call services latency is critical.
  • Class 5 service functions e.g., three-way calling
  • SPCS stored program control switch
  • these embedded service functions have been highly optimized. In fact, it takes only 50-120 milliseconds for an SPGS to route a call to its destination from the time a user goes off-hook and dials the number, inclusive of cycling through a Class 5 feature interaction. This time measurement is referred to as the Class 5 delay budget, and is relatively immovable, as callers expect immediate response for such services.
  • This benchmark poses significant challenges to next-generation telecommunication architecture utilizing an IP network.
  • AS application server
  • BCP basic call processes
  • call control elements call control elements
  • SIP H.323 Initiation Protocol
  • a decoupled AS can be used in a loosely decoupled fashion to implement a Class 5 service in a production network.
  • the Class 5 delay budget imposes an insurmountable barrier to Class 5 service distribution. As such, there is a significant difference between emulation of a Class 5 service in an offline laboratory, and actually replacing a Class 5 end-office switch delivering primary line telephone service to thousands of subscriber lines.
  • the telecommunications network(s) is often referred to using the following suggestive abstract terms: the media transport plane, the signalling and control plane, the application services plane, and the management plane.
  • the media transport plane defines the portion of the network devoted to delivering content from one point (or multipoints) to another point (or multipoints) in the networt.
  • the signalling and control plane is primarily used to set up and tear down connections.
  • the application services plane is the portion of the network used to deliver enhanced services.
  • the management plane is used for billing, record keeping, provisioning, etc.
  • a next generation telecommunications network architecture efficiently integrates and offers services in both the PSTN and an IP network.
  • the enveloping architecture generally includes signahng gateways (SG) connected directly to the SS7 network for PSTN signaling support, one or more service creation switches (SX) coupled to each SG, and a plurahty of media gateways (MG) (or broadband switches) coupled to each SX.
  • Each MG includes hardware responsible for switching and interworking (converting signals) between the IP and PSTN networks.
  • the SX is preferably implemented in software and includes a media gateway controller (MGC) and a calling agent (CA).
  • MGC media gateway controller
  • CA calling agent
  • the MGC is responsible for controlling a set of endpoints across a given set of MGs, the set of endpoints comprising a domain.
  • the CA contains the intelligence and policies used by the MGC to make routing decisions, as well as provides service interworking functionality; i.e., the CA works in conjunction with an application providing a service on a user's line.
  • the SX supports both tightly coupled and loosely distributed appHcation server (AS) functions, with the tightly coupled AS functions (such as Class 5 services) residing in the SX, and the loosely coupled AS functions (e.g., voice mail) carried out in a service level executable environment (SLEE), described below.
  • AS appHcation server
  • the SX provides the basic connection control function over a domain of endpoints which may be media channels in a media gateway, subscriber line terminations in a residential gateway, or digital circuits in a trunking gateway.
  • the capability of the SX to support both tightly and loosely coupled AS functions is a critical advantage over other proposed next-generation solutions.
  • the SLEE carries out both loosely coupled and tightly coupled services, with a portion of the SLEE embodied in the SX.
  • the SLEE includes an application creation and management environment which utilizes dynamically loaded shared libraries (DLLs) to facilitate the deployment and distribution of enhanced services over the integrated network.
  • the SLEE has an application layer, a Soft switch interworking layer, and a Media server interworking layer, and also includes run time commands suitable for debugging application files.
  • the SLEE receives wasvice request messages from an SX or user agent through an API, the SLEE Library, and is responsible for communicating with the Soft switch interworking layer and the Media server interworking layer.
  • the SLEE loads specific appHcation triggering mechanisms which include a project state machine.
  • the project state machine is a shared Hbrary loaded by the SLEE.
  • Each project also has a different state machine that governs events at a finer level. The logic that handles each event is written in a scripting language and then compiled into the DLLs.
  • the SLEE can operate in a Loosely Coupled Mode, Mode 1, or a Tightly Coupled Mode, Mode 2. From the perspective of a single Softswitch, it is possible to implement one SLEE operating in Mode 2 and one or more SLEEs operating in Mode 1. Furthermore, from a network perspective it is possible to implement a plurality of SLEE in either mode of operation.
  • Broadband access is a superset of functionaHties that embody all of the essential capabiHties of a Class 5 SPCS (EO/AT) in the PSTN such that the User cannot distinguish between their Class 5 service deHvered through a Decoupled Telecommunications System versus a Class 5 SPCS in the PSTN.
  • EO/AT essential capabiHties
  • an equivalent state machine is created through the SLEE CPL and then mobiHzed into the Softswitch.
  • This state machine combines the Originating and Terminating basic call state machines specified by the ITU for CapabiHty Set 2.
  • the SLEE function which implements this composite state machine is the Basic CaU Process (BCP).
  • BCP is a speciaHzed implementation of the AppHcation Services Interworking Layer.
  • the BCP is a byproduct of the SLEE operating in mode 2.
  • the BCP function facilitates tightly coupled interaction between the SLEE and the Softswitch.
  • the BCP is the 'gearbox', subject to the previous analogy.
  • SLEE mode 2 is the appropriate operational mode for the broadband access network appHcation because it incorporates user services which are subject to the 'delay budget'.
  • UMA Unified Messaging
  • UM Unified Messaging
  • SLEE mode 1 is the appropriate operational mode for the UM appHcation because the delay budget is not an issue and the appHcation generaUy involves lengthy interactive sessions between the SLEE and other distributed AppHcation Server elements including media servers, messaging servers and web servers using protocols that are not typically supported in a Softswitch. Additional objects and advantages of the invention wiH become apparent to those skiHed in the art upon reference to the detailed description taken in conjunction with the provided figures.
  • Fig. 1 is a high-level schematic diagram of the next generation network architecture of the invention
  • Fig. 2 is a schematic of a service exchange switch (SX) for IP traffic routing and the functionatity thereof according to the invention
  • Fig. 3 is a schematic of the interworking of the IP network and PSTN networks according to the invention.
  • Fig. 4 shows the multilayered SX to SG protocolover the SI Ethernet signahng interface
  • Fig. 5 shows the multilayered MG to SX protocol over the S2 Ethernet signahng interface
  • Fig. 6 shows a functional diagram of the interconnectivity of the SG, SX and MG, and the SLEE and Billing and Recordkeeping Server system objects.
  • Fig. 7 is a block diagram of the slee and the Hbraries, threads, and call flows loaded by the SLEE which effect appHcations for implementing call services;
  • Fig. 8 is a block diagram of a single project state machine ran within the SLEE
  • Fig. 9 is a block diagram of the SLEE DNS servers software, iUustrating its scalable and distributable architecture
  • Fig. 10 is a functional diagram of the basic appHcation elements accommodated by the SLEE Hbrary.
  • Fig. 11 shows the interaction between the basic caU processing (BCP) and service level executable interface (SLEE). DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • Table 1 In order to faciHtate understanding of the detailed description, Table 1 is provided. Table defines the acronyms used in the Specification and Drawings.
  • a next generation telecommunications network architecture integrates PSTN and IP networks.
  • the architecture generaUy includes signahng gateways (SG) 10 connected directly to the SS7 network 12 for PSTN signaling support, one or more service creation switches (SX) 14 coupled to each SG 10, and a plurahty of media gateways (MG) 16 coupled to each SX 14.
  • SX service creation switches
  • MG media gateways
  • the MG 16 is a broadband switch designed to support switching and interworking between traditional circuit switched network (PSTN) and broadband or "packet-based" networks such as an IP network 107 and an ATM network 108 (Fig. 3).
  • PSTN circuit switched network
  • packet-based networks such as an IP network 107 and an ATM network 108 (Fig. 3).
  • the media gateway function is to terminate multiple physical or logical 'bearer' channels (typicaUy associated with User connections), and perform inter- working between two or more transport mediums (e.g. TDM, ATM, IP).
  • the media gateway function exists in the media transport plane.
  • the MG 1 includes ports (or endpoints) that when connected create a connection.
  • Each MG has means responsible for switching and interworking (converting signals) between the IP and PSTN networks, and consequently has interfaces for both IP (packet-based) and PSTN (TDM-based) networks.
  • the SX 14 is generaUy an integrated services creation Softswitch platform which includes connection control, management capabiHty, and the abiHty to host the basic call process of the SLEE. In this mode, it supports several high-level control domain internal functions: basic caU processing (BCP) 20, application services interworking (ASI) 22, caU agent (CA) 24, generic signahng interface (GSI) 26, media gateway control (MGC) 28, and network management (NM) 30.
  • BCP basic caU processing
  • ASI application services interworking
  • CA caU agent
  • GSI generic signahng interface
  • MSC media gateway control
  • NM network management
  • the SX 14 also includes carrier-ready modules including Class 5 services, and is an open service creation environment 34 (service level executable environment or SLEE) that enables the rapid deHvery of new carrier-class services and enhanced appHcations.
  • the SLEE 34 includes an application programming interface (API) caUed the SLEE Library which utilizes dynamicaUy loaded shared Ubraries (DLLs) to faciHtate the deployment and distribution of enhanced services which are not subject to the Class 5 delay budget over the integrated network.
  • API application programming interface
  • BCP basic caU processing
  • BCP basic caU processing
  • the BCP 20 and SLEE 34 intercommunicate using a special command set referred to as the SLEE Hbrary, which is described in detail below.
  • the BCP 20 is modeled conceptuaUy on the ITU Advanced Intelligent Network (AIN 0.2) basic call process functions. That is, the BCP 20 uses separate originating and terminating views to express a connection between half-calls.
  • AIN 0.2 ITU Advanced Intelligent Network
  • a two-party caU is viewed as two separate half-caUs each with their own connection related data (context) and status (state).
  • the BCP 20 controls aU caUs in the SX 14 which originate or terminate on a subscriber Hne.
  • the BCP 20 also controls aU tandem trunk to trunk (AT to AT) caUs, which do not require any feature interaction with SLEE 34.
  • the BCP 20 emulates within the SX 14 aU basic call control functions of EO/AT switches currently deployed in the PSTN.
  • the appHcation services interworking (ASI) function 22 manages the interaction between SX 14 and the appHcation service (AS) functions residing in the service control domain for any non-SLEE AS functions supported by the SX 14.
  • AS appHcation service
  • the call agent (CA) 24 is described by its subfunctions, which include: caU admission control, call routing, caU detail record (CDR) management, and database management.
  • the caU admission control determines which appHcation service function (AS) is responsible for controUing an inbound caU and selects the appropriate ASI to interface with a particular AS. Each AS must register with an SX 14 prior to receiving work.
  • Call routing uses call related information to perform route table searches and returns one or multiple trunking facilities which may be used for termination.
  • CaU routing is described in more detaU below.
  • CDR management maintains the integrity of all CDR records in database 36, makes CDR information accessible to other functions in the SX 14 and periodicaUy writes CDR data to disk.
  • CA caU agent
  • a caU agent provides basic caU related services to one or many caU parties based on their individual service pohcies.
  • the caU agent control function exists in the signaling and control plane.
  • the generic signahng interface (GSI) function 26 performs common channel control signal interworking between the SX and the network, specifically SS7 and ISDN PRI.
  • the GSI 26 translates raw ISUP, TCAP, AIN, IN and ISDN message structures into generic primitives understood by the SX 14.
  • a generic address structure is used to carry call addressing information between the SX and the SG, e.g. calling party number/sub-address, caUed party number/sub-address and destination prefix.
  • a generic circuit information structure is used to communicate circuit connection related information between an SX 14 and SG 10, e.g. endpoint type (ISUP trunk group or ISDN access port) and circuit/channel information.
  • the media gateway controUer (MGC) 28 performs interworking between an SX 14 and one or more MGs 16, and provides termination to a collection of endpoints in one or more domains.
  • the MGC 28 translates the connection status (state) and caU transaction specific connection information (context), received through an MGC protocol (MGCP), into a generic set of primitives understood by other SX internal functions that may be required to faciHtate the caU transaction.
  • the MGC 28 is also responsible for managing connections between the SX 14 and MGs 10, including such activities as endpoint audit and fail-over.
  • the media gateway controUer function is to orchestrate and manipulate the connections between two or more physical or logical 'bearer' channels terminating on a single media gateway or terminating between two or more media gateway elements. Furthermore, a media gateway controUer may also orchestrate and manipulate the connections between two or more physical or logical 'bearer' channels between a media gateway and a media server(s).
  • the media gateway control function exists in the signahng and control plane.
  • Network management (NM) 30 includes a number of subfunctions related to network management access control to the SX 14.
  • the subfunctions include configuration session management, alarm interface, database interface, CDR interface, and high availability (HA).
  • the configuration session management controls one or more sessions where a network administrator or a script emulating multiple configuration instructions is submitting configuration updates to the SX 14 using a command Hne interface (CLI).
  • CLI command Hne interface
  • the SX is preferably run on a Sun Solaris 2.8 platform.
  • the Solstice Enterprise Agents (SEA) from Sun Microsystems provides a software development kit that enables the building of subagents to manage different subsystems, components and appHcations within a system in Sun Solaris environment.
  • the alarm interface handles alarms as SNMP traps in the SX system.
  • Traps are predefined within each component and, when the trap conditions are met, components caU alarm functions within a support manager Hbrary to send out SNMP traps.
  • the database interface is synchronized with a subscriber management portal centraHzed database, e.g., an ORACLE database.
  • the CDR interface maintains all relevant switch and billing information.
  • AU records are stored in database 36.
  • the SX MGC/CA host generates raw (unformatted) CDR records for each caU from its internal database.
  • CDR data is synchronized between both an active SX system 14 and a standby SX system 14a. As such, should the active SX system 14 become unavaUable, the standby SX system 14a is able to take over all existing operations without loss of data.
  • the high avaUabiHty (HA) function 38 supports redundancy in the event of a failure. As such, the HA function coordinates aU internal HA related processes, monitors IP traffic and heartbeat messages over a serial link and two Ethernet interfaces, and determines when to perform failover and recovery functions. When a fail-over needs to occur (due to SX 14 faUure), the HA operates to mediate and coordinate faU-over processes between the active SX 14 and standby SX 14a systems. The HA also manages aU of the data repHcation required to maintain aU stable caUs in the system.
  • the data elements which require repHcation include CDR records, subscriber profile data, BCP caU state information, MLB data (routing tables, IP addresses, etc.), and signaHng interface call transaction related data objects in MGC and GSI.
  • a Bilhng and Recordkeeping Server (BRS) 80 polls the SX 14 for any new CDR records.
  • a notify message 40 from an MG 16 to the MGC 28 in the SX 14 signals a user off-hook event with the user ID (endpoint) and dialed digits attached.
  • the MGC 28 makes the association between the user endpoint LD and a virtual channel (VC) address used internally in SX 14.
  • the MGC 28 then signals the CA 24 on the new caU at 42 and the CA creates a caU context and a caU detail record (CDR) and appends these two objects to the caUing VC object.
  • the caU context contains all information about the caU during its active Hfe and is made accessible to all internal functions of the SX 14.
  • the CA 24 coordinates with the HA function 38 at 44 to provide the status of the caUing VC with the appended caU context and CDR information to the standby SX 14a at 46.
  • the CA 24 signals the BCP 20 on the new call at 48, providing the BCP with a pointer to the calling VC object and passes control of further caU processing of the Hne to the BCP.
  • the BCP 20 notes the status of the Hne and checks to see if any service function is required at this stage.
  • the BCP 20 uses the current status of the Hne at 50 to determine which, if any, service function (a service independent building block or SIB as defined by the ITU) 52 in the SLEE needs to be called. If the BCP 20 determines that an SLB needs to be called, the SLB is called and performed on the dialed destination based on the caUing party's feature profile. The SLB returns a response to the BCP 20 which then updates the status of the Hne at 54. The SLEE 34 updates the subscriber profile data putting the dialed destination in the last number dialed field.
  • service function a service independent building block or SIB as defined by the ITU
  • the BCP 20 Based on the new line status, the BCP 20 signals the CA 24 at 56 to route the call to its destination.
  • the CA 24 performs a route lookup and determines a preferred PSTN trunk group (e.g., ISUP or TCAP) for the caU and whether idle capacity is avaUable.
  • the CA 24 coordinates with the HA function 38 to provide the updated status of the caUing VC with the appended caU context and CDR info to the standby SX 14a at 58.
  • the CA 24 signals the GSI 26 at 60 to initiate a caU to the user dialed destination on the preferred trunk group. Once an idle circuit in the trunk group is selected, its port id is passed back to the CA at 62. The CA then creates a context and CDR for the terminating connection (caUed VC) and appends these two objects to the called VC object.
  • the GSI 26 and MGC 28 exchange signals at 64 that coordinate the connection activity on the selected trunk group bearer channel with the MG 16.
  • the GSI 26 signals the CA 24 at 66. Now the caUing VC and the caUed VC are connected and the CA 24 updates the BCP 20 at 70.
  • the stable call is maintained on an SX faU-over.
  • the CA 24 signals the BCP 20 at 72 with respect to the connected caU, providing the BCP with a pointer to the calling/called VC objects.
  • the BCP 20 notes the status of the Hne and ' checks to see if any service function is required at this stage. In this example, it is assumed that the SLEE 34 is not required.
  • the caU remains connected until either party hangs up.
  • the GSI 26 signals the CA 24 at 74 of the release from the network side, which the CA acknowledges, and the CA subsequently notifies the BCP at 76.
  • the CA starts a process every few seconds which writes the CDR data into the database 36.
  • the CA coordinates with the HA function 38 at 78 to provide the updated status of the caUing VC/caUed VC with the appended call context and CDR info to the standby SX 14a. This releases the connection resources and generates a CDR in the standby SX 14a.
  • the Billing and Recordkeeping Server (BRS) 80 acquires any. new CDR records (marked 'unread') from the local database 36 of the SX 14 at 82 (Figs. 2 and 3).
  • the SX functions map, through interfaces, to other objects, appHcations, and management terminals in an IP network.
  • the SX interfaces are grouped into the foUowing categories: signaHng interfaces SI and S2, gateway interface GW1, appHcation service interfaces ASI and AS2, management interfaces Ml, M2, M3, M4, and high avaUabiHty interface HAL
  • SX NCAS signaling functions can be divided into two classes: embedded and non-embedded.
  • the embedded signaHng function classification means that the signaHng channel and the associated bearer channels terminate on the same piece of hardware.
  • an ISDN D-channel is the 24th channel in a Tl (or the 30th channel in an El) interface and aU the other 23 (or 29) channels are for bearer purpose.
  • the non-embedded signaHng classification means that the signaling channel and the bearer channels terminate on different hardware equipment, e.g. in the case of SS7 A-links which terminate on dedicated equipment such as a signahng gateway, while the mapped bearer channels terminate on a trunking gateway.
  • Channel associated signaHng (CAS) in the SX 14 is a subfunction of the MGC 28.
  • SignaHng interface SI represents a logical connection between the SS7 non-embedded signaHng function 90 of the GSI 26 of the SX 14 and the signaling gateway (SG) 10 used to deHver ISUP, TCAP, LN and ATN protocol-related information.
  • the TCAP/ALN/1N information relates to toU-free number, local number portabihty, and caUing party name database queries.
  • the S 1 physical interface is Ethernet over which the multilayered SX to SG protocol shown in Fig. 4 is implemented.
  • the caU signaling messages received on the signaling link from a PSTN signaHng end point 92 are processed by the Q.931 ISUP stack in the SG 10 and converted into GSI primitives (e.g. connection indication, etc.).
  • the GSI primitives are then sent from the SG 10 to the SX 14 through the Ethernet SI.
  • GSI primitives are then sent from the SG 10 to the SX 14 through the Ethernet SI.
  • Several protocol layers are implemented between the SX 14 and the SG 10 to provide rehable and efficient transportation of the GSI primitives.
  • TALI preferably runs on top of TCP/UDP and IP.
  • TALI is a protocol originally submitted by Tekelec to the IETF to be reviewed for adoption as a standard, but rejected as a standard.
  • a redundancy manager layer runs over TALI, and serves to maintain two mutual-backup connections between the SX 14 and the SG 10.
  • a signaHng protocol multiplexing (SPM) layer which multiplexes and demultiplexes native signaHng protocols, such as ISDN, ISUP, ATM UNI, etc. runs over the redundancy manager layer.
  • SPM signaHng protocol multiplexing
  • each SX 14 is coupled via SI interfaces to a pair of SGs 10.
  • the signaHng gateway (SG) function is to perform inter-working between two or more signaHng mediums (e.g. SS7, TCP/IP, etc.).
  • the caU agent control function exists in the signaHng and control plane.
  • the signaHng gateway control function exists in the signaHng and control plane.
  • the S2 physical interface represent a logical connection between the ISDN non- embedded signaHng function 94 of the GSI 26 and an ISDN endpoint 95 on the MG 16.
  • the S2 physical interface is Ethernet over which the multilayered protocol shown in Fig. 5 is implemented.
  • a centraHzed element management station (EMS) 96 of the Bilhng and Recordkeeping Server (BRS) 80 coordinates the provisioning of the SG 10, SX 14 and MG 16.
  • EMS centraHzed element management station
  • BRS Bilhng and Recordkeeping Server
  • the gateway interface manages the interconnection of the SX 14 to an MG 16, preferably using the MGCP Version 1.0 protocol.
  • the MGC 28 of the SX 14 implements specific media gateway control protocol (MGCP) packages 98 for Hne, trunk and channel- associated signaling (CAS) with the MG 16.
  • MGCP media gateway control protocol
  • the signals are carried on the same facihty as the voice path.
  • the MG 16 does not support direct termination of analog interfaces 102, the CAS control to the analog interface 102 is deHvered through digital supervision signaling (ABCD bits) over a DSLAM (DSL access multiplexer) 104 to an integrated access device (IAD) 106 using an ATM AAL-2 loop emulation protocol at 108.
  • the IAD 106 is a customer located access device that can handle both voice and data services on the same access Hne and is connected to a telephone 110 at the customer premises.
  • the GW1 physical interface is Ethernet over which the IP, user datagram protocol (UDP), and MGCP protocol layers are implemented.
  • MGCP uses domain names, rather than IP addresses to identify the MGC and the MG.
  • Several LP addresses can be associated with a domain name.
  • MGCP is a transaction-based protocol, which allows a new MGC function to take over control at any given point of time.
  • the high avaUabiHty interfaces manage the redundancy between the active and standby SX systems 14, 14a.
  • the physical interfaces utiHzed by the HAl include four Ethernet connections and one serial connection.
  • Management interfaces Ml and M2 are for CLI provisioning and element management (EMS), respectively. Both Ml and M2 interfaces are SNMP over UDP.
  • Management interface M3 is used to synchronize subscriber data between the subscriber management portal (SMP) 120 of the BiUing and Recordkeeping Server (BRS) 80 and one or more SX systems 14 in the network.
  • Management interface M4 is used to puU CDR records from SX systems 14 to the biUing mediation platform (BMS) 122 of the BiUing and Recordkeeping Server 80. Both interfaces M3 and M4 are TCP/IP.
  • the AS 1 interface manages the interconnection of the ASI function 22 of the SX 14 to appHcation service functions (AS) 126.
  • the appHcation server (AS) function is to coordinate caUs and caller related activities and resources for speciahzed purposes beyond the basic caU process and typically associated with enhanced service arrangements. Furthermore, an appHcation server may provide feature interaction management between appHcation program functions.
  • the application server function exists in the appHcation services plane.
  • the SX is adapted to support two types of AS interfaces.
  • the first interface type designated ASI
  • AS2 defines the logical and physical interface between the SX BCP 20 and the SLEE 34.
  • AS2 defines the logical and physical interface between the SX ASI 22 and an external AS 126 residing in the IP network.
  • the physical characteristics of the AS 1 interface may be implemented two ways, depending on whether or not the SLEE resides on the same server as the SX. When the SLEE 34 and SX 14 reside on separate servers, the ASI physical interface is Ethernet over which the transport protocol used is UDP over IP.
  • This option requires the network to support LP4 multicasting between nodes, and is implemented by enabHng IP multicast routing and LP PIM on all cHent-server interfaces.
  • the BCP 20 and SLEE 34 communicate through a request/response API referred to as the SLEE Library.
  • the ASI physical interface is UDP.
  • connection control primarily involves the signaHng and gateway interface functions being coordinated by the call agent function (CA) 24, with caU control residing in the basic caU process function (BCP) 20.
  • CA call agent function
  • BCP basic caU process function
  • Fig. 6 also shows the interconnectivity of the SG 10, the SX 14, the MG 16, the SLEE 34 with modules 124a, 124b, 124c, 124d comprised of SLBS, and the Bilhng and Recordkeeping Management System 80, albeit providing a different functional overview than Fig.4. Both figures, used in conjunction with each other, faciHtate the understanding of the interconnectivity of objects.
  • the SLEE aUows for the implementation of many reusable basic appHcation service functions (modules), referred to as service independent buUding blocks (SLBs) 52.
  • SLBs may be representative of individual call states, speciaHzed service functions, or the set of atomic functions specified by the ITU for AIN 0.2.
  • CPL caU processing language
  • new SLBs can be scripted which are then combined and compiled into application scripts which execute in the SLEE. Because SLBs contain relatively few Hnes of programming code they can be easily and quickly tested. SLBs can be reused and combined with newly coded SLBs to create future service appHcations.
  • the SLEE implementation makes each SLB into a separate process, with user datagram protocol (UDP) as the preferred method of inter-process communication.
  • UDP user datagram protocol
  • new features can be built and tested, and then sent to a customer system by reference in the SLEE Dynamic Naming Services (DNS) server which, as discussed below, permits the distribution of functional elements over the network.
  • DNS SLEE Dynamic Naming Services
  • multiple copies of any SLB can be run as the caU load directed to a particular service function or feature peaks.
  • SLEE Library referenced above and described in detail below, is provided to make the interface clean and easy.
  • the SLEE is instantiated by a C- language program module named slee.
  • the slee executable is a generic implementation of very basic SLEE functions. Consequently, it can run in a variety of environments, wherever service level execution is desired: at the appHcation level, as part of the service creation switch (SX), or embedded within a Media Server (MS) or a similar device.
  • a Media Server generally provides interworking between the SLEE and a media server which preferably supports HTTP.
  • a media server functions to terminate one or many physical or logical * bearer' channels (typicaUy associated with User connections) into an ephemeral resource (dynamicaUy loaded digital signal processor-attached resource).
  • a media server may mix one or many physical or logical 'bearer' channels into a multi-party conference.
  • a media server is differentiated from a media gateway through its abihty to provide enhanced services to a bearer channel (e.g. speech recognition, interactive voice response scripts, text-to-speech, etc.).
  • the media server function exists in the media transport plane.
  • the media server is the capabiHty layer of the SLEE.
  • the combination of the slee and the libraries, threads, and projects loaded by it make up the actual appHcation.
  • a caU flow is implemented within a project.
  • the SLEE 34 is shown with a number of projects 130 loaded in the lower right hand corner, a pool of threads 132 in the lower left hand corner, and three fixed threads 134, 136, 138 along the left side.
  • Fixed thread 134 provides for communication between the SLEE and another node on the network.
  • Fixed thread 136 provides for operator commands to control and monitor the SLEE while it is running.
  • Fixed thread 138 provides for communication with the SX. For each project 130 that the SLEE 34 runs, a thread is retrieved from the thread pool 132, and the thread then runs the project-specific code.
  • the SLEE module provides for balance between the threads that instantiate the projects.
  • the fixed threads govern a variety of interfaces, one interface per thread and one thread per interface.
  • the fixed threads are written as C-language source modules and linked into the slee at compUe time.
  • a configuration file slee.cfg governs which threads are loaded, and the order in which they are loaded.
  • Fixed threads include the following:
  • This thread is the command thread, and provides a keyboard interface to the SLEE to aUow reconfiguration, shutdown, and similar commands.
  • This thread aUows communication between the SLEE in a subject node and the SLEE in other nodes.
  • This thread also accepts requests from other non — SLEE services to the SLEE (e.g., a request from the notification process that the SLEE make caUs to pager bureaus, and to send CDR's for notification events handled by the notification process).
  • This thread waits for database events to occur and forwards these events through the main SLEE thread to the appropriate caU flow. timer thread (sleepuls.c)
  • This thread tracks the time remaining for an array of script-managed functions. When each timer reaches zero, the caU context in informed, and any wait condition pausing the script is interrupted.
  • This thread waits for events from the Media server. When a new event arrives, it is part of SLEE's queue. The SLEE's main thread forwards the event to the appropriate call flow in order that the script handles the information returned by the Media server.
  • This thread manages the API with the Soft switch. When a new event arrives, it is placed on the queue for the slee main thread, which forwards the event to the appropriate caU flow.
  • the various SLEE fixed threads have input and output mechanisms that differ based on the purpose of the thread.
  • This thread services a Hnked hst of queue of events. AU the other threads add events to this queue through a function within the main slee thread caUed sleejxddEvent. This thread removes events from its queue and adds them to the linked Hst queue for the appropriate caU flow.
  • This queue removes its input from a UNLX message queue. Its output is typicaUy to a file caUed /usr2 USM2/LOGS/slee.out.
  • This thread gets all new input from the database interface (DBLF) through a caU to the function Get_Database_Response.
  • the output is to the slee event queue.
  • scripts can initiaUze one of five function timers through a statement with the syntax:
  • the function signalCall (in sleecaU.c) causes notification to the thread handhng the call in progress that the timer has expired. Threads can test the value of the timer (including when it reaches zero) by checking the value of thisContext->funcTimer[x]. The signal to the thread that the timer has expired will affect any current waits or timed waits.
  • the input for this thread is through the function call in mmhb.c named mm_EventGet( ).
  • the mmUb code manages TCP/IP socket connections to the various Media server servers. Output is to the slee main event queue.
  • Input to this thread is through the TCP/IP socket connection that underHes the open API. Output is to the slee main event queue.
  • the project state machine contains the logic that implements a project 130.
  • Each project 130 can have a different state machine that governs the meaning of events at a finer level than the caU states.
  • Each project state machine 140 is a shared Hbrary loaded by the slee module, and pulls messages off of a linked Hst created by the slee module and processes each as a separate event.
  • the state machine tracks the context of each event and the result of each event handler (script).
  • the logic that handles each event is written in scripts in a caU processing language (CPL), and then compUed into dynamicaUy loaded shared Hbraries (DLLs).
  • CPL caU processing language
  • DLLs dynamicaUy loaded shared Hbraries
  • Each state machine 140 governs a pool 142 of threads that handle active caUs. The threads make calls to the shared Hbraries, to the state machine, and to the slee module.
  • the slee module is invoked as a separate process at the appHcation layer with a parameter that indicates the level at which it implements the SLEE, as foUows:
  • SLEE BLN/slee AP to run at the appHcation level
  • the slee is run within its own thread in the Soft switch (if it runs there) and in the Media server.
  • the entry point is a routine named slee(), which takes two parameters: the level at which it is running, and the path to the configuration information:
  • the return code indicates whether the SLEE was able to initiaHze (0) or not (some negative value).
  • AU of the caUs to MS devices that use device drivers that are not thread safe are through caUs back through the slee thread, which may in turn call routines in the module that launches it. It is necessary for the slee to know at which layer it is operating because, depending on the layer, different scripts are loaded.
  • DLLs dynamicaUy loaded shared Hbraries
  • the shared Hbraries also provide basic services such as trace file logging, alarm and trap notifications, etc.
  • the shared Hbraries are preferably compiled for the specific operating system in which they run.
  • the slee module loads the unique processing logic (project state machines) for the various projects, and receives the run-time commands discussed below.
  • the appHcation layer slee has several functions. First, the appHcation layer slee module receives aU messages from the SS through the selected API, e.g., an interface such as PARLAYTM (from the Parlay Group) and S-100. The received message is then added to the appropriate Hnked Hst for the project that the message pertains to, and the project is notified to handle the message. Second, the appHcation layer slee module is also responsible for communicating with other layers. Third, the appHcation layer slee module controls connections to other nodes like Access Node to Service Node, the Guaranteed Message DeHvery system, and the database. Fourth, the appHcation layer slee module loads the node configuration detaUs and makes them available to the various project state machines.
  • the selected API e.g., an interface such as PARLAYTM (from the Parlay Group) and S-100.
  • PARLAYTM from the Parlay Group
  • S-100 the selected API
  • the received message
  • the slee module is preferably not loaded in the Soft switch (SS) layer. However, given an appropriate function, the slee module may be loaded in the SS layer. In the Media server, the slee is responsible for loading specific project logic where necessary.
  • SS Soft switch
  • the foUowing high level pseudo-code for implementation of the slee module is provided:
  • the Layer parameter is one of AP or SS or MS.
  • the project is determined from the combination of span, channel, and node received on each message from the Soft switch. Signal the project thread that a message was added to its Hst.
  • Each slee module has a control thread that reads a message queue for run time commands that can be entered at a keyboard.
  • a separate module named tellslee knows how to communicate with the command thread through the message queue, and an operator can send messages directly to the slee module to affect how it runs.
  • Commands all have a prefix that can be tested (e.g., " ! !) and then one of a series of standard commands:
  • SHUTDOWN gracefully shut down aU the projects and the slee module itself.
  • KILL # gracefuUy shut down a single project (whose LD is given in #) if possible, if not possible to cause a graceful shutdown, force an ungraceful shut down.
  • KLLL ALL gracefuUy shut down aU projects.
  • TRACELVL # set the trace level to the number indicated by the digit '#'.
  • LOAD load or reload a project state machine or a shared Hbrary.
  • SHOWCFG display a Hst of the currently running projects, and other tables and global variables to a file in /imp for inspection.
  • SHOWLIST # show the messages stored on Hnked Hst '#'.
  • SHOWLIST ALL show the messages stored on aU of the Hnked Hsts.
  • THREADS show a Hst of all of the threads.
  • CANCEL # cancel thread number # in the Hst.
  • CANCEL ALL cancel aU threads in the Hst
  • the slee module launches the project state machine appropriate to the state machine's level of execution, AP (AppHcation), SS (Soft switch), or MS (Media server).
  • AP AppHcation
  • SS Soft switch
  • MS Media server
  • Inactive Inactive: / ⁇ sr/SLEE/BIN Projects/T ⁇ active/Pro/ectNflme/AP /usr/SLEE/BIN/Projects/Inactive/Pro/ectN ⁇ me/SS /usr/SLEE BIN/Projects/lnactive/Pro/ectN ⁇ me/MS
  • the Inactive directory is used to store test configurations or new projects while they are being uploaded to the node. Projects that are being decommissioned can also be moved into this directory.
  • the directory can also hold reserve copies of previous versions of a project in case a roU back to a previous version is necessary.
  • Each of the Active and Inactive directories contain a file named inventory that names aU of the scripts that should be loaded by the project state machine.
  • a separate thread handles each event for a call.
  • the threads make caUs to the shared Hbraries, to the state machine, and to the slee module.
  • the thread completes its handUng of the event (that is, when the script is completed), the thread is returned to the thread pool.
  • the transitions in the caU states are the responsibihty of the project state machine in the appHcation layer and its interface to persistent caU objects. Therefore, SLEE elements in the Soft switch and the Media server must trigger events in the appHcation layer to effect the changes in the caU's caU state. An unexpected release of the caU by the caUer wiU generate an event that wiU cause the Soft switch to broadcast an asynchronous release event to the appHcation and the Media server.
  • Layer parameter is one of AP or SS or MS.
  • Layer parameter is one of AP or SS or MS.
  • Each project state machine also has a control thread that reads a message queue for run time commands that can be entered at a keyboard.
  • a separate module named tellproj knows how to communicate the command thread through the message queue, and an operator can send the messages or commands described above (SHUTDOWN, KILL #, TRACELVL, etc.) directly to the slee module to affect how it runs.
  • the inner workings of the SLEE can be monitored real time with the foUowing command: display.sh. The results are written to slee.out.
  • the command to view the results of Media server functions as they are reported to the SLEE is: tail -f slee Jog
  • grep "API "
  • the command to see whether the SLEE is receiving caUs is: taU -f slee.log
  • ISP modem The current settings of an ISP modem can be viewed by either: tellslee showisp Callfiow taU slee.out or: cat isp.cfg
  • CPL call processing language
  • SIB system independent buUding block
  • Each caU is represented in the appHcation layer by a persistent caU object "owned” by the appHcation layer that maintains a number of items relevant to a caU. "Ownership" means responsibility to maintain the "call state”. Since the appHcation layer "owns” the call object, changes to the call object are made only through the appHcation layer scripts. Scripts at other layers have to generate ("trigger") appHcation events to change information in the caU object.
  • the caU object contains the subscriber profile data, the cumulating CDR data, and the appHcation state of the caU besides the caU state.
  • the appHcation state is a variable that tracks the most recently handled event and the event next expected.
  • Call state means the state of the call in the sense described in the documentation for PARLAYTM or some similar standard appHcation server. Whenever an event in any layer would change the caU state, an appHcation layer event must be triggered so that the appHcation layer wiU change the caU state within the persistent caU object.
  • scripts written in CPL are compUed into C- language statements, which are then compiled into shared Hbraries by a standard C compiler for the target computer.
  • the compiler is made up of a specification preferably developed with the C code yacc command, a parser preferably developed with the C code lex command, and preferably a number of C code and header files.
  • the output is a file named SCRIPTNAME.c.
  • the C code is then compiled into a shared Hbrary according to the specifications of the target platform.
  • the importance of implementing the scripts as shared Hbraries is that scripts can be dynamically loaded; even at run time, a command can be issued to load a new copy of a script. Any new caUs made wiU use the newly loaded version.
  • the command interface for loading the new version of a script as a dynamicaUy Hnked Hbrary is described above. On the Linux operating system, it may be necessary to link the scripts together into a single large Hnked Hbrary that represents a whole caU flow. The caU flow can be changed during ran time as described above, but it is not possible to change individual scripts at run time.
  • the scripts for the CPL are written as plain ASCII files with new-Hne dehmiters. Scripts are composed of sections. Some sections are required, and other sections are optional and appear only when required by the script.
  • Scripts can request the execution of other scripts, either at the same layer of execution, or at other layers.
  • "Run” or “jump” are the two possible commands when a script executes another script within the same layer; that is, if an appHcation script runs an appHcation script).
  • the command “run” is used if the original script expects to continue running after the other script has begun executing (synchronously, like' a subroutine call).
  • the syntax is run SCRfPT(parameters); for example, run AP_MainMenu(thisContext).
  • the command "jump” is used if the original script is now finished and the other script will complete what the original script might have done (asynchronously, like fork and exec).
  • the syntax is jump SCRIPT ⁇ arameters); for example, jump AP_NoiceRoute(thisContext). For instance, if there is a script that has been written to prompt a user with a question that wiU elicit a "yes" or “no" response (MS_Yesno), when another MS script wants to ask the user a yes or no question, the original script can "run” the MS_Yesno script. If there is a script that plays a "Goodbye" message and hangs up on the caUer (APJBye), any AP script that wants to hang up on the user in that fashion would “jump" to the AP_Bye script. A script can run another script in the background.
  • the second script runs (in part) in parallel with the first script.
  • the second script is caUed the "child” script, and the original script is called the "parent” script.
  • the child script inherits certain features from the parent, including the call reference number that wiU tie CDR's produced by the child with the CDR's created by the parent.
  • the syntax is: bgrun SCRLPT arameters); for example, bgrun AP_PrintFax(faxFileName,destination, "FAX”, removeflg)
  • ⁇ LAYER>_trigger the running of the script with the command ⁇ LAYER>_trigger, where ⁇ LAYER> wiU be: MS for Media server, SS for Soft switch, and AP for application.
  • Scripts being run by the Soft switch or the Media server are preferably not aUowed to span changes in the caU state. Such changes are preferably required to be requested at the application level, where the caU states are tracked.
  • a script itself is delimited by the "start script” and "end script” key words.
  • the first non-comment or blank Hne must contain only the key words "start script” and a new Hne character.
  • the last non-blank and non-comment line must contain only the key words "end script” and a new line character. Incorrectly formatted key words are ignored. Hence, required key words incorrectly formatted will be flagged as absent, and the script wiU not compile.
  • Scripts return a value of "SUCCESS" or "FAILURE.”
  • the return value signals to the requesting layer whether the values in the interface buffers are of any value.
  • a return of FAILURE would indicate that the contents of the interface buffers are undefined.
  • a return of OK would indicate that the contents are set as expected.
  • Returns are coded within the then or else section with the keyword RETURN plus SUCCESS or FAILURE. ActuaUy, the "SUCCESS” keyword is translated into (void *) thisCall, where "thisCall” is the address of the call object, and the "FAILURE” keyword is translated to (void *)NULL.
  • Comment Hnes begin with a hash ('#') in the first position. Comments are aUowed anywhere within a script, including before the "start script” and after the "end script” keywords. Blank Hnes; that is, Hnes consisting only of white space and a new Hne, are aUowed at any point.
  • the header and code sections are required to be in aU scripts.
  • the ibuffer (input buffers), obuffer (output buffers), prompts, and counters sections, also described hereafter, are optional, and their absence is not considered to be an error unless reference is made to them.
  • the header section begins with a line consisting of only the keywords "start header” and a new line and ends with a Hne consisting of only the keywords "end header” and a new Hne.
  • Each field within the header consists of a keyword plus white space (any number of tabs or spaces) plus a value.
  • the header must include required fields, and may include optional fields.
  • ScriptName VALUE VALUE must start with:
  • MS for Media server SS for Soft switch, or AP for AppHcation.
  • the two-letter prefix is foUowed by an underhne, and then any alpha-numeric characters.
  • scripts are named so that their purpose can be determined from the name.
  • ProjectNo VALUE VALUE must be numeric.
  • ProjectName VALUE VALUE is the overaU (meta-) project.
  • ProjectA For example: ProjectA.
  • CreationDateVALUE VALUE is the date that the script was created, in ISO-8601 format.
  • ExecutedBy VALUE VALUE shows which layer executes the script. VaHd choices are:
  • MS for Media server for Media server, SS for Soft switch, and AP for appHcation.
  • Release VALUE VALUE is a description of the release of the CPL that the script is intended for.
  • Customer VALUE VALUE describes the customer for whom the appHcation is designed.
  • the VALUE can consist of more than one word.
  • AppHcation NALUE NALUE is the name given by the customer to the appHcation that the script pertains to. For example, R******.
  • the NALUE can consist of more than one word.
  • UpdatedBy NALUE NALUE has the name of the person who last edited the script. For example, DFreedman or David Freedman.
  • UpdatedOn NALUE NALUE holds the date and time that the script was updated, in ISO-8601 format. For example, 8:53 PM of March 16, 2000 appears as in this field as 2000-03-1620:53.
  • An “input buffer” is a buffer with data (input parameters) that is provided by the level that caUs the script.
  • An ibuffer when present, begins with a line that has the words "start ibuffer” and a new line, and ends with a Hne that has the words "end ibuffer” and a new Hne.
  • the ibuffer section can contain up to five buffers. Each ibuffer description consists of the name of the buffer and the size of the buffer in bytes.
  • the pointer points to a field, thisContext->parms[x]. value, where x is a number between 0 and 4.
  • x is a number between 0 and 4.
  • An obuffer section declares the buffers necessary during the execution of the script.
  • the compUer executes a maUoc() caU for each obuffer, using the size of the buffer as a parameter.
  • Buffer names have script scope.
  • An obuffer section if present, begins with a line that has the words "start obuffer” and a new Hne, and ends with a Hne that has the words "end obuffer” and a new Hne.
  • the obuffer section can contain any number of buffers.
  • the script refers to the buffers by name.
  • Each obuffer description consists of the following and the size of the buffer to reserve.
  • An example of an obuffer is: start obuffer account 16 caUerName 128 caUerMsg 128 end obuffer
  • the prompts section is optional and is present only if the script wiU play prompts.
  • the prompts section begins with a line with the keywords "start prompts" and a new Hne, and the section ends with a Hne that has the keywords "end prompts” and a new line.
  • the VOX file is estabhshed by the keyword language discussed below.
  • the individual prompts are Hsted in a two-part Hne, with the actual NOX-prompt name (up to 12-bytes), foUowed by an optional description.
  • An example of a prompts section is:
  • the optional counters section is a Hst of script counters that can govern script flow.
  • the section begins with a line that has the keywords "start counters" and a new Hne, and it ends with a Hne that has the keywords "end counters” and a new line.
  • the counters themselves are declared a name; for example, "retries.” Within the script code, the counters are referred to by their names. For example, given the declaration "retries”, to increment the counter "retries” the script code would be "retries +1.” Counter names have script scope.
  • the code section is required and contains what the script actuaUy does.
  • the code section begins with a line with the key words "start code” and a new Hne, and ends with a Hne that contains the key words "end code” and a new Hne.
  • Each Hne of code can have the foUowing elements, and only in the order specified.
  • the code section can have an optional code label field.
  • the labels can be numbers or names. Name labels begin at the first position on the Hne with a colon, foUowed by label's name, as in :CLI_BlackHsted.
  • the code section can also have a keyword language. If a prompt is to be played, the keyword language foUowed by a vahd choice sets the language in which prompts (VOX files) are to be played.
  • the vahd choices for the language keyword are the "native" and "subscriber".
  • the keyword "native” identifies the native language of the node or DNS on which the script is running.
  • the keyword “subscriber” identifies the language selected by the subscriber in which to hear prompts.
  • the keyword prompt is followed by the name of the prompt selected from the list of prompts in the prompts section of the script:
  • Vnnnnnn means a prompt from a VOX file (the VOX file is specified by the language statement)
  • a digit string means to recite the number with aUowances for language variants
  • Traps are termination conditions that can end input collection. Traps include:
  • promptNamel Name of a prompt promptName2: A script can store a prompt name in an obuffer variable and request playing the prompt Two reasons for grouping prompt names is that the termination condition wiU stop aU of the output in the statement. That is, if the POUND trap is on and the caller presses '#' during the playing of promptNamel, aU output wiU stop and the SLEE wiU resume on the next Hne of script.
  • the request is to play the digits contained in the script obuffer named variableName.
  • MS_SMARTNUM_SPEAK_ONE_DIGIT 1 speak each digit, one at a time.
  • MS_SMARTNUM_SPEAK_TRIPLETS 2 recite the digits in groups of three.
  • MS_SMARTNUM_SPEAK_HUNDREDS 3 plays the digits four at a time.
  • MS_SMARTNUM_SPEAK_AND_TRLPLETS 4 plays digits 3 at a time, uses “and” and “hundreds”.
  • MS_SMARTNUM_SPEAK_AND_HUNDREDS 5 plays the digits four at a time, uses "and”, and
  • the keyword execute appears foUowed by the name of a built-in routine to execute and its parameters.
  • the parameters to the routines foUow the name of the routine in parentheses; for example, "DTMF (parml, parm2, ..., parmN, trapMask)".
  • the trapMask field is a bit-map of events or "traps" known to the subroutine. Each trap is a termination condition. If the routine understands eight traps, the trapMask can be thought of as an 8-toggle switch. If all 8 bits are off, the toggle looks Hke this: 00000000. Lf the script wants to know that the second trap happens (or "fires"), the trapMask would look like this: 01000000. In other words, the bits are numbered from the left, beginning with 1. To instruct the script to behave a certain way if the trap fires, the script author writes a sequence Hne with the notation: if (trap2) then ... else ... The else is optional.
  • the trapMask was 00100000, it would mean that the script author wanted to trap only the situation of maximum number of digits pressed.
  • the following Hne is provided in the script: if (trap3) then LABEL or, if there is need for an else clause (typically the last trap in a series): if (trap3) then LABELm else LABELn If present, the trapMask is the last parameter.
  • An operation consists of a counter, an arithmetic operator (e.g., plus or minus) and an optional operand.
  • a counter can be referred to by its name in the counter section in the script header. Counters are initiaHzed to zero by default. The valid operations on a counter are shown below. Note that there is a space between the counter and the operator, and no space between the operator and the operand.
  • counter VALUE counter +VALUE counter -NALUE counter *NALUE counter /VALUE
  • vaHd operators are: ⁇ "less than” for arithmetic comparisons
  • This script is a subroutine that plays the owner's Status Messages #
  • a Dynamic Naming Service for the SLEE is provided.
  • DNS Dynamic Naming Service
  • the sleedns permits service to be distributed over multiple segments in a network.
  • the sleedns module starts early in the LPL sequence of an appHcation service. It accepts requests over UDP on a defined port.
  • the Hbrary function that performs the socket and bind commands sends a UDP registration request to the local sleedns process.
  • the message contains the name of the element, the hostname of its host, the LP address of the host, and the port that the element Hstens on.
  • AppHcation elements that want to send to another appHcation element issue commands in the format: sendTo("elementName, " messagePointer, sizeof message);
  • the sendTo function has the responsibihty to query the sleedns to look up the host, LP address, and port for the named element, and to send the UDP message to that port on that host.
  • the sendTo function keeps a table of recently used addresses so that it is not necessary to do a sleedns look up for each message.
  • the table contains aU the occurrences of the named element, and the local server gives precedence to the local server, but is capable of sending messages in a round-robin fashion to other hosts.
  • a processing element If a processing element is over-burdened, it preferably deregisters with its local sleedns, and the local copy bears the responsibihty to update aU the network copies. Thus, the appHcation element is no longer in sight. It is the responsibihty of the local copy of sleedns to remain synchronized with the other network copies. This can be accomphshed by sending multicast messages to aU Hsteners in the network on the sleedns port.
  • AU messages to and from the sleedns are preferably in Session Description Protocol (SDP) or XML format, and some (indicated below) have responses associated with them. If a response is not received before the expiration of the timer (configured in a configuration file), the request is repeated.
  • SDP Session Description Protocol
  • XML XML format
  • An appHcation element registers that is ready to receive messages. The registration is done at initialization. The local sleedns is responsible to multicast the new location to aU the other sleedns servers in the network. Each registration is stored with the time of its receipt. If the appHcation element is already registered, the entry in the DNS is updated with the new time, and success is returned.
  • Session Description Protocol SDP
  • SDP Session Description Protocol
  • Table 3 A semicolon separates fields from each other, and the order of the fields is not important.
  • the reply is the request, with a new result field, and the optional Hostname and HostTCPaddress fields supphed.
  • AppHcation elements can query the sleedns for the address of another element. This is done by the library routine sendTo without the knowledge of the appHcation.
  • the fields in the reply are described in Table 6.
  • An appHcation element can hide itself from other elements by deregistering with the local sleedns.
  • the local server is responsible to deregister the element by multicasting to all the other servers on the network. Each deregistration is stored with the time of its receipt. If an attempt is made to deregister.an element that is already deregistered, the DNS entry is updated, and the return wiU indicate success. Deregistering a non-existent element is also treated as a success.
  • Each sleedns server communicates with all the others on the network.
  • the synchronization messages are multicast to the sleedns port on all hosts.
  • the synchronization messages look Hke the original requests, with aU of the optional fields fiUed out by the sending server.
  • the status field is changed to upper case so that registrations are forwarded with status set to 'R' and deregistration messages have a status of 'D.'
  • Each host periodicaUy multicasts a heartbeat message to the other hosts.
  • the time between heartbeats is set in the configuration file.
  • the heartbeat message contains a count of registered elements and the time of the last update.
  • the server receiving the heartbeat message has the same number of entries, the time from the update field and the network address of the sending server are recorded in a table. There is no acknowledgement or response to the heartbeat.
  • a server receives a message with a different number of current registrations, the host with the less recent (older) update time sends a session request message with its count to the host with the more recent update time. Only one update session is aUowed at a time. Once the host with the smaUer number receives a session header message from a host, any other session header message is rejected.
  • an acceptance message is returned that echoes back the session open request and reports that the server is ready to begin the session.
  • the fields in the registration message are described in Table 13.
  • the data stored by the sleedns server is preferably kept in shared memory so that it can survive the coUapse and restart of the server process.
  • the SLEE DNS Server makes two clones of itself at initiahzation time by caUing the UNLX system function fork.
  • the original executable and each of the forked processes is referred to as a thread.
  • the main thread is the original executable that is launched by the operating system and is responsible for: (1) initiahzing what has to be present in all threads, (2) forking the two chUd tasks, (3) receiving all messages over the UDP socket, (4) processing registrations, deregistration requests, and queries, (5) multicasting the synchronization messages to other servers, and (6) setting the canceUation flag to end a session for the download session thread.
  • the heartbeat thread is in a constant loop that waits for the amount of time in the configuration file, and then multicasts the heartbeat message.
  • the count rectification session thread sends a copy of each registration entry to the server that requested to see aU the registrations. Its loop is controUed by the canceUation flag that may be set by the main thread.
  • the state machine for sending instances of sleedns is shown in Table 16.
  • Node A 160a includes caU control and device control 162, and a finite state machine 164 that controls the appHcation. Above the finite state machine are the DNS Hbraries 166 that aUow access to the States 168a, 168b, 168c and SLBs 170a, 170b, 170c that are distributed across the network.
  • the DNS servers 172a (on Node A 160a), 172b (on Node B 160b), 172c (on Node C 160c) keep each other synchronized so that the server 172a on Node A is aware of the existence of the States 168b, 168c and SLBs 170b, 170c on the other nodes.
  • the messaging Hbraries allow the appHcation on Node A to execute States and SLBs on the other nodes, e.g., Nodes B and C.
  • the other nodes can be within the same network segment, on different network segments, or even on different continents.
  • the sleelib a group of Hbrary functions, is provided to make the interface relatively clean and easy.
  • the Hbrary is preferably written in C. AppHcations and appHcation elements that use the Hbrary include specific headers files and Urik sleel ⁇ b.o into their programs.
  • the Hbrary assumes the use of IP4 multicasting between network nodes so that new nodes can come on the network without being specifically known to the UN X network configuration files.
  • the sleedns and sleeport modules are running on the local computer in order to permit the Hbrary to function properly.
  • a finite state machine (FSM) 180 is on the left with sleelib 186 Hnked in.
  • the notation "FSMz” means “some (z) finite state machine”.
  • the state process 182 is in the middle with sleelib 186 Hnked in.
  • the notation "StateN” means "some (N) state”.
  • the SLB is on the right with sleelib 186 linked in.
  • the notation "SLBx” means “some (x) SLB”. It is noted that the finite state machine 180, the state process 182, and the SLB 184 are each independent processes rather than threads.
  • the FSM 180 calls sleelnit during its initiaUzation phase. After that, the FSM 180 performs whatever processing is required. When a transition occurs from one state to another, the FSM 180 sends a message to the state 182 that should do the processing by caUing sleeSend. The FSM is free to continue processing whUe waiting for a response, or it can immediately caU sleeRecv to block for a response. A loop is provided in the FSM that wiU lead from the bottom to the top. It is, of course, not necessary for the appHcation on the left to be a finite state machine.
  • the state 182 caUs sleelnit during its initiaUzation phase. Although it is typical for the state to do Httle processing before waiting for input from the FSM (or some other appHcation), it is avaUable for processing. Eventually, the state waits for input from some other source by caUing sleeRecv. When the input arrives, the state 182 processes the input as required. EventuaUy, the state caUs sleeReply to send synchronizing information back to the FSM that sent the input. In the example shown in the Fig. 10, the state makes a caU to SLB for some processing.
  • Fig. 10 merely iUustrates that there is a secondary method to send data to another entity and a mechanism to receive an expected reply that wiU not be interleaved with other forms of input.
  • the SLB 184 process is substantiaUy a repHca of the state process 182, except it is simplified.
  • the SLB caUs sleelnit during its initiaUzation phase. After that, the SLB receives input by calHng sleeRecv, and it sends responses back to the sender by calling sleeReply.
  • the standard flow is sleelnit, sleeSend, sleeRecv.
  • the standard flow is sleelnit, sleeRecv, optional caUs to sleeSubmit and sleeRead, and then sleeReply.
  • the state may then send to another state or to another SLB for additional processing.
  • the standard flow is sleelnit, sleeRecv, sleeReply.
  • the SLB may use sleeSubmit and sleeRead to send data to another state or another SLB for processing. Neither the state nor the SLB must reply.
  • finite state machine It is not necessary for what is shown as a finite state machine to be a finite state machine. Any type of application will do. It is not necessary for the state process to implement a "state" for a finite state machine. It is not necessary for the SLB to be in the picture. The iUustration means to show a typical usage.
  • the sleelnit function initiaUzes the SLEE DNS environment on behalf of an appHcation.
  • the function binds two UDP sockets for Hstening, and creates a UDP socket for communicating with the SLEE DNS server.
  • the sleeSend function sends the contents of sendbuf to the process registered as the "destination".
  • the sleeSend function keeps a table of recently used addresses so that it is not necessary to do a SLEE DNS look up for each message.
  • the sleeSend function sends sendlen bytes of data.
  • the function will time out in some combination of seconds seconds and usec microseconds. If both seconds and usecs are zero, there wiU be no time out, and the function wiU block until the send wiU succeed or faU at the kernel level.
  • the sleeReply function provides a way for an appHcation element to return data and/or control to the appHcation element that sent the sleeReply function data for processing. A response can be received without interfering with the main sleeRecv/sleeReply loop.
  • AppHcation elements that want to send to another appHcation element caU sleeSubmit and then receive a response by calling sleeRead.
  • the sleeSubmit function has the responsibUity to query the SLEE DNS to look up the host, LP address, and port for the named element, and to send the UDP message to that port on that host.
  • the sleeSubmit function keeps a table of recently used addresses so that it is not necessary to do a SLEE DNS look up for each message.
  • the sleeRead function reads for an incoming reply to a message previously sent by calling sleeSubmit.
  • the call processing language (CPL) of the SLEE implements EO/AT Class 5 services on the SX.
  • Each conventional Class 5 feature is dissected into a sequence of atomic functions.
  • Analysis of Class 5 services is used to create a transition table which maps each transition in a caU sequence to a basic (or atomic) function (SLB) that performs a specific feature interaction.
  • the caU processing language (CPL) then generates a caU state transition table, which is implemented in the SX BCP function.
  • the BCP loads the caU state transition table into memory and uses it to determine which, if any, SLB gets called during call processing when a caU transitions into a new state (e.g., idle/nuU to off-hook).
  • the overall control of the execution of the SLBs resides within clearly defined finite state machines (FSMs) which, similar to the caU state transition tables, are generated by the CPL and loaded into the SX BCP.
  • FSMs finite state machines
  • the FSMs for the originating and terminating sides of a caU are defined by the LTU, as foUows.
  • the SX BCP which emulates an EO/AT switching exchange, starts the originating basic call state model (O-BCSM) process.
  • O-BCSM models the caUer Hfting the receiver, dialing a number, and making a call.
  • the O-BCSM states are enumerated as foUows:
  • Auth_Orig_Attempt detects that someone wishes to make a caU
  • T_BCSM (T_BCSM) object O_Alerting: waiting for caUed party to answer O _Active: active conversation O_Disconnect: a disconnect message is received from the T_BCSM O_Suspended: a suspend indication is received from the TJBCSM O_Reanswer: party picks up receiver after placing it down momentarily O_Exception: cleanup, Hne releases, appropriate messages.
  • O_MidCaU signaHng action by caUing party (hook flash); interruption
  • O_Abandon caUing party hangs up before the call becomes active
  • T-BCSM The terminating basic call state model (T-BCSM) models the called party receiving a caU.
  • T-BCSM states are enumerated as follows:
  • T_Alerting caUed party is alerted via ringing (timed activity)
  • T_Disconnects called party disconnects
  • T_MidCall signaling action by called party (hook flash); interruption.
  • T_Abandon abandon message from O_BCSM.
  • the caU states and the events that cause transitions between them need to be made avaUable to the SLEE 34.
  • the caU finite state machines are located close to the persistent call data, which resides within the domain of the SX 14.
  • a tight coupHng between the SLEE 34 and the SX connection control domain is made in the basic caU process function (BCP) 20.
  • the BCP 20 loads the caU finite state machines (O-BCSM 190 and T-BCSM 192) and respective transition tables 194, 196 into memory and uses them to perform caU control and determine which SLB 198a, 198b, 198c, . .
  • Each state has at least two outcomes, success and failure. The outcome triggers the process to the next state.
  • the functions that are used to assemble and disassemble the UDP packets are sleeParmsAddO and sleeParmsGetO, respectively.
  • a clean up routine has also been implemented caUed sleeParmCleanO.
  • FSM finite state machine
  • the buffer that wiU be used to hold the packet being built wUl be initiaHzed in this routine.
  • the entire buffer wiU be initiaHzed to nuU characters for the sake of simpHcity.
  • the record counter that is kept to track the number of records being added to the buffer is also initiaHzed as weU as aU pointers that are being used within the SLEE Parameter functions. sleeParmsAddO
  • This function is used to assemble information that needs to be communicated to other processes. This assembly is callable multiple times so that multiple records can be added to a send buffer used to hold all of the packet data. The number of records added to the packet are kept track of so that the number may be added to the top of the send buffer.
  • the function also contains standard error checking to validate information coming into the function and to send back the appropriate return values for the calHng routine to evaluate.
  • This function is used to dissect aU of the information within the UDP packet that has already been received and returns the information to the calling routine one record at a time. Each subsequent caU to the function returns the next record available within the packet. This is done through the parameter list of the function.
  • the function also contains standard error checking to validate the integrity of the packet being dissected and to send back the appropriate return values for the calling routine to evaluate.
  • This function cleans up all the sleeParm functions described above.
  • the function is placed in the function sleeCleanO (SLEE Library) and is responsible for the freeing of aUocated memory and all other general clean-up that may be needed.
  • the SLEE can operate in two modes: Mode 1, Loosely Coupled SLEE, or Mode 2, Tightly Coupled SLEE. From the perspective of a single Softswitch, it is possible to implement one SLEE operating in Mode 2 and one or more SLEEs operating in Mode 1. Furthermore, from a network perspective it is possible to implement a plurahty of SLEE in either mode of operation.
  • Broadband access is a superset of functionaHties that embody all of the essential capabiUties of a Class 5 SPCS (EO/AT) in the PSTN such that the User cannot distinguish between their Class 5 service deHvered through a Decoupled Telecommunications System versus a Class 5 SPCS in the PSTN.
  • EO/AT essential capabiUties of a Class 5 SPCS
  • an equivalent state machine is created through the SLEE CPL and then mobiHzed into the Softswitch.
  • This state machine combines the Originating and Terminating basic call state machines specified by the ITU for CapabiHty Set 2.
  • the SLEE function which implements this composite state machine is the Basic CaU Process (BCP).
  • BCP is a speciahzed implementation of the AppHcation Services Interworking Layer.
  • the BCP is a byproduct of the SLEE operating in mode 2.
  • the BCP function facUitates tightly coupled interaction between the SLEE and the Softswitch.
  • the BCP is the 'gearbox', subject to the previous analogy.
  • SLEE mode 2 is the appropriate operational mode for the broadband access network appHcation because it incorporates user services which are subject to the 'delay budget'.
  • Unified Messaging An example of a User application is Unified Messaging (UM).
  • UM is a relatively complex appHcation, it mainly involves repeated request/response pairs of user interactions where moderate delays are acceptable.
  • SLEE mode 1 is the appropriate operational mode for the UM appHcation because the delay budget is not an issue and the appHcation generaUy involves lengthy interactive sessions between the SLEE and other distributed AppHcation Server elements including media servers, messaging servers and web servers using protocols that are not typically supported in a Softswitch.

Abstract

This invention relates to the field of telecommunications. More particularly, this invention is a method and system for providing a service level executable environment in a telecommunications network linking a PSTN and a packet network. With reference to Fig.3, the service level executable environment (34) includes a scripting language, a compiler adapted to compile scripts written with the scripting language, and a plurality of dynamically loaded shared libraries, wherein the dynamically loaded shared libraries are distributed over the IP network (107) and executables from the compiler can utilize dynamically loaded shared libraries from different locations in the IP network (107). The invention includes signaling gateways (10) connected to an SS7 network (90) for support of PSTN (92) signaling; service switches (14) coupled to the signaling gateways; and media gateways (16) for interworking the IP network (107) and the PSTN (92).

Description

SERVICE LEVEL EXECUTABLE ENVIRONMENT FOR INTEGRATED PSTN AND IP NETWORKS AND CALL PROCESSING LANGUAGE THEREFOR
This application claims the benefit of provisional applications US Serial Number 60/182,111 filed February 11, 2000.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates broadly to telecommunications. More particularly, this invention relates to a switching infrastructure and developer environment for telecommunication applications.
2. State of the Art
For much of the history of the telecommunications industry, telephone calls have been connected primarily via the public switch telephone network (PSTN), a point-to-point telecommunications network. The PSTN includes end office (EO) and access tandem (AT) switches. The EO switches connect a local carrier to a subscriber (a party capable of making or receiving a call), and the AT switches connect local carriers and other intermediary AT switches together. In the PSTN, a path (circuit) is defined between the calling party and the called party through the EO and AT switches, and the call is connected over this path. For a long time, signahng associated with the call (e.g., information about the route through various switches to the called party) and the call content (e.g., analog voice signals) were sent over the same path in the network.
The PSTN was designed to handle voice calls having an average duration of five minutes. Due to a change in calling patterns, in which the average call has become longer, the PSTN network has become quite congested. The reason for the change in calling patterns is, at least in part, a result of the popularity of the Internet and an associated increased data traffic from modem use. Modem calls are typically relatively longer than voice calls, averaging thirty minutes in duration.
As a partial solution to the congestion, the SS7 (signaling system 7) system was deployed. In SS7, the signaling for setting up a path for the call is sent "out-of-band" (over a discrete network), and the call is then connected via a path through the legacy PSTN. While this removes the signaling traffic from the PSTN network switches, even this system does not satisfactorily relieve the PSTN network congestion. In the 1980's, long distance telecommunication was deregulated. New long distance companies, such as MCI and Sprint, among others, were granted equal access to end-office (EO) switches at the local exchange carrier central office in order to compete directly with AT&T by installing their own access tandem (AT) switches and their own long distance network.
With the Telecommunications Act of 1996, competition was opened for local telephone service, giving rise to competitive local exchange carriers (CLECs). CLECs were permitted equal access to the AT switches of the long distance companies, and local exchanges needed to make space available in their central offices for a competitor's EO switch. As such, the regulatory guidelines that governed the separation of functionalities which previously existed between an AT exchange (switch) and an equal access EO exchange have for the most part diminished. Therefore, switching systems residing in the local exchange today typically have both end-office and access tandem functionality; hence, the term EO/AT.
Given the increase in competition created by deregulation, the cost to the consumer to make a voice call, both local and long distance, has decreased. Consequently, the per call profit to the call provider has also decreased. As such, call providers have been eager to offer profit- making value-added enhanced services above and beyond Class 5 services such as caller-ID, three-way calling, call waiting, etc. Originally, these services were implemented on the EO switches; a typical implementation occurred on the EO switch of the called party. The implementation was "hard coded" into the switch, and a call provider was tied to the EO-switch vendor for services.
It was therefore desired to implement enhanced services in a manner which was both effective and did not rely on the switch vendor for services. To .meet this need, the Advanced Intelligent Network (AIN) has been implemented in some areas. The AIN comprises service control points in the SS7 network and operates to move call services away from the traffic switches to de-couple service logic from the switching function and provide an enhanced system of service distribution and third party service suppliers. However, the AIN system has been hindered by SS7 interoperability issues with respect to different Tier 1 International Carriers and also due to vendor-specific implementations. That is, an implementation of the AIN system is confined to a particular geographic area and/or vendor. For example, in Europe there are multiple carriers, each using a different and incompatible AIN protocol.
During the 1990's, the Internet grew at a tremendous rate. Traffic over the Internet is transferred in a uniform manner using Internet Protocol (IP). The IP network therefore has an architecture adapted to provide communication and services over a single and uniformly compatible system worldwide. As such, the IP (or other packet) network has been recognized as a possible substitute for the PSTN.
However, moving from the PSTN system to an IP (or other type of packet) network would require the challenging integration of the IP network with the legacy PSTN system. This is because any change from the PSTN system would necessarily be deployed over time. In addition, the IP network is a packet-based network. This is suitable for viewing web pages on the world-wide web where timing is not critical. It would be ideal to move enhanced call services away from the EO/AT switches and make available and distribute call services in a non-localized manner, similar to the manner in which web pages are made available. Yet, for some call services latency is critical.
Services are distinguished by class, with Class 5 service functions (e.g., three-way calling) requiring practically immediate implementation upon request and therefore residing onboard the stored program control switch (SPCS) in the PSTN. Over the years these embedded service functions have been highly optimized. In fact, it takes only 50-120 milliseconds for an SPGS to route a call to its destination from the time a user goes off-hook and dials the number, inclusive of cycling through a Class 5 feature interaction. This time measurement is referred to as the Class 5 delay budget, and is relatively immovable, as callers expect immediate response for such services. This benchmark poses significant challenges to next-generation telecommunication architecture utilizing an IP network.
When referring to "next-generation" architecture, it is presumed that the application server (AS) which handles the enhanced services will reside separately from the basic call processes (BCP), or call control elements, in the network. Where the AS has been decoupled from a switch, interworking between the decoupled AS and the. switch is often implemented using the H.323 Initiation Protocol (SIP). However, there is no evidence that a decoupled AS can be used in a loosely decoupled fashion to implement a Class 5 service in a production network. The Class 5 delay budget imposes an insurmountable barrier to Class 5 service distribution. As such, there is a significant difference between emulation of a Class 5 service in an offline laboratory, and actually replacing a Class 5 end-office switch delivering primary line telephone service to thousands of subscriber lines.
Moreover, once the challenge of integrating the IP and PSTN networks is accepted, it would be further beneficial to have a programming environment which is adapted to facilitate creation, deployment and distribution of enhanced services over the integrated network. Service distribution operates to relieve network congestion. Moreover, service distribution over an IP network reduces the relative high costs associated with using the PSTN for the implementation of such services.
For purposes of this disclosure, the telecommunications network(s) is often referred to using the following suggestive abstract terms: the media transport plane, the signalling and control plane, the application services plane, and the management plane. The media transport plane defines the portion of the network devoted to delivering content from one point (or multipoints) to another point (or multipoints) in the networt. The signalling and control plane is primarily used to set up and tear down connections. The application services plane is the portion of the network used to deliver enhanced services. The management plane is used for billing, record keeping, provisioning, etc.
Over the last several years, the the efforts of the telecommunications industry to integrate the PSTN with an IP network have been spent largely in proving out the new voice over packet switching technologies which primarily address the media transport plane. To a lesser extent, softswitches, which address the signaling and control plane in the new generation network have just come onto the horizon. This adoption cycle, albeit necessary, has continued at the expense of not realizing any significant advancements in telecommunications service delivery on a large scale during the same time period.
SUMMARY OF THE INVENTION
It is therefore an object of the invention to provide a network architecture that can be deployed in stages.
It is another object of the invention to provide a next generation network architecture that is suitable for both the PSTN and IP networks.
It is a further object of the invention to provide an integrated network that can deploy multiple types and classes of services.
It is an additional object of the invention to provide an integrated network that can implement Class 5 services and meet the Class 5 delay budget, i.e. a method for implementing service execution functional entities in a tightly-coupled fashion in relation to a Softswitch, such that the service execution functional entities operate in a similar fashion to that of an SPCS.
It is also an object of the invention to provide a Class 5 end-office switching in a next generation IP network, i.e. a method for implementing service execution functional entities in a loosely-coupled fashion in relation to a Softswitch, such that the service execution functional entities operate in a similar fashion to fully detached Application Servers on an IP network (such as the Internet).
It is still another object of the invention to provide an integrated system capable of distributing enhanced services over the network.
It is still a further object of the invention to provide an integrated network in which services are distributed in a manner which permits service latency requirements to be met, i.e. a method for providing location transparency or abstraction of the distribution of the service execution functional entities from its users.
It is yet another object of the invention to provide a developer environment for creating, deploying, and distributing services across a next generation IP network.
It is another object of the invention to provide a method for intercommunication between service execution functional entities and a Softswitch.
It is also an object of the invention to provide a method for intercommunication between individual service execution functional entities.
It is still another object of the invention to provide a method for dynamically duplicating or 'cloning' individual service execution functional entities such that the availability of a particular application or application feature may increase proportionally with demand.
It is yet another object of the invention to provide a client system for creating, naming, cataloguing, reusing, combining and re-combining service execution functional entities.
It is another object of the invention to provide a server system for storing service execution functional entities and for distributing executable service applications.
It is still another object of the invention to provide a client system for managing the server systems.
It is yet another object of the invention to provide client and server systems for run-time management of individual service execution functional entities. It is another object of the invention to provide client and server systems for creating, naming, cataloging and distributing state transition tables.
In accord with these objects, which will be discussed in detail below, a next generation telecommunications network architecture according to the invention efficiently integrates and offers services in both the PSTN and an IP network. The enveloping architecture generally includes signahng gateways (SG) connected directly to the SS7 network for PSTN signaling support, one or more service creation switches (SX) coupled to each SG, and a plurahty of media gateways (MG) (or broadband switches) coupled to each SX. Each MG includes hardware responsible for switching and interworking (converting signals) between the IP and PSTN networks.
The SX is preferably implemented in software and includes a media gateway controller (MGC) and a calling agent (CA). The MGC is responsible for controlling a set of endpoints across a given set of MGs, the set of endpoints comprising a domain. The CA contains the intelligence and policies used by the MGC to make routing decisions, as well as provides service interworking functionality; i.e., the CA works in conjunction with an application providing a service on a user's line. According to the invention, the SX supports both tightly coupled and loosely distributed appHcation server (AS) functions, with the tightly coupled AS functions (such as Class 5 services) residing in the SX, and the loosely coupled AS functions (e.g., voice mail) carried out in a service level executable environment (SLEE), described below. From a network perspective, the SX provides the basic connection control function over a domain of endpoints which may be media channels in a media gateway, subscriber line terminations in a residential gateway, or digital circuits in a trunking gateway. The capability of the SX to support both tightly and loosely coupled AS functions is a critical advantage over other proposed next-generation solutions. According to the presently preferred embodiment, the SLEE carries out both loosely coupled and tightly coupled services, with a portion of the SLEE embodied in the SX.
More particularly, the SLEE includes an application creation and management environment which utilizes dynamically loaded shared libraries (DLLs) to facilitate the deployment and distribution of enhanced services over the integrated network. The SLEE has an application layer, a Soft switch interworking layer, and a Media server interworking layer, and also includes run time commands suitable for debugging application files. The SLEE receives wervice request messages from an SX or user agent through an API, the SLEE Library, and is responsible for communicating with the Soft switch interworking layer and the Media server interworking layer. In the interworking layers (the capability layer), the SLEE loads specific appHcation triggering mechanisms which include a project state machine. The project state machine is a shared Hbrary loaded by the SLEE. Each project also has a different state machine that governs events at a finer level. The logic that handles each event is written in a scripting language and then compiled into the DLLs.
The SLEE can operate in a Loosely Coupled Mode, Mode 1, or a Tightly Coupled Mode, Mode 2. From the perspective of a single Softswitch, it is possible to implement one SLEE operating in Mode 2 and one or more SLEEs operating in Mode 1. Furthermore, from a network perspective it is possible to implement a plurality of SLEE in either mode of operation.
When describing appHcations for the Decoupled Telecommunications System, there are two broad classifications, Network AppHcations and User AppHcations.
An example of a Network appHcation is broadband access. Broadband access is a superset of functionaHties that embody all of the essential capabiHties of a Class 5 SPCS (EO/AT) in the PSTN such that the User cannot distinguish between their Class 5 service deHvered through a Decoupled Telecommunications System versus a Class 5 SPCS in the PSTN.
To achieve functional equivalence to the Class 5 SPCS in a Decoupled Telecommunications System, an equivalent state machine is created through the SLEE CPL and then mobiHzed into the Softswitch. This state machine combines the Originating and Terminating basic call state machines specified by the ITU for CapabiHty Set 2. The SLEE function which implements this composite state machine is the Basic CaU Process (BCP). The BCP is a speciaHzed implementation of the AppHcation Services Interworking Layer. The BCP is a byproduct of the SLEE operating in mode 2. The BCP function facilitates tightly coupled interaction between the SLEE and the Softswitch. The BCP is the 'gearbox', subject to the previous analogy. SLEE mode 2 is the appropriate operational mode for the broadband access network appHcation because it incorporates user services which are subject to the 'delay budget'.
An example of a User appHcation is Unified Messaging (UM). Although UM is a relatively complex appHcation, it mainly involves repeated request/response pairs of user interactions where moderate delays are acceptable. SLEE mode 1 is the appropriate operational mode for the UM appHcation because the delay budget is not an issue and the appHcation generaUy involves lengthy interactive sessions between the SLEE and other distributed AppHcation Server elements including media servers, messaging servers and web servers using protocols that are not typically supported in a Softswitch. Additional objects and advantages of the invention wiH become apparent to those skiHed in the art upon reference to the detailed description taken in conjunction with the provided figures.
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a high-level schematic diagram of the next generation network architecture of the invention;
Fig. 2 is a schematic of a service exchange switch (SX) for IP traffic routing and the functionatity thereof according to the invention;
Fig. 3 is a schematic of the interworking of the IP network and PSTN networks according to the invention;
Fig. 4 shows the multilayered SX to SG protocolover the SI Ethernet signahng interface;
Fig. 5 shows the multilayered MG to SX protocol over the S2 Ethernet signahng interface;
Fig. 6 shows a functional diagram of the interconnectivity of the SG, SX and MG, and the SLEE and Billing and Recordkeeping Server system objects.
Fig. 7 is a block diagram of the slee and the Hbraries, threads, and call flows loaded by the SLEE which effect appHcations for implementing call services;
Fig. 8 is a block diagram of a single project state machine ran within the SLEE;
Fig. 9 is a block diagram of the SLEE DNS servers software, iUustrating its scalable and distributable architecture;
Fig. 10 is a functional diagram of the basic appHcation elements accommodated by the SLEE Hbrary; and
Fig. 11 shows the interaction between the basic caU processing (BCP) and service level executable interface (SLEE). DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
In order to faciHtate understanding of the detailed description, Table 1 is provided. Table defines the acronyms used in the Specification and Drawings.
Figure imgf000010_0001
Figure imgf000011_0001
Figure imgf000012_0001
Turning now to Fig. 1, a next generation telecommunications network architecture according to the invention integrates PSTN and IP networks. The architecture generaUy includes signahng gateways (SG) 10 connected directly to the SS7 network 12 for PSTN signaling support, one or more service creation switches (SX) 14 coupled to each SG 10, and a plurahty of media gateways (MG) 16 coupled to each SX 14.
The MG 16 is a broadband switch designed to support switching and interworking between traditional circuit switched network (PSTN) and broadband or "packet-based" networks such as an IP network 107 and an ATM network 108 (Fig. 3). Generally speaking, the media gateway function is to terminate multiple physical or logical 'bearer' channels (typicaUy associated with User connections), and perform inter- working between two or more transport mediums (e.g. TDM, ATM, IP). The media gateway function exists in the media transport plane. As such, the MG 1 includes ports (or endpoints) that when connected create a connection. Each MG has means responsible for switching and interworking (converting signals) between the IP and PSTN networks, and consequently has interfaces for both IP (packet-based) and PSTN (TDM-based) networks.
Referring to Fig. 2, the SX 14 is generaUy an integrated services creation Softswitch platform which includes connection control, management capabiHty, and the abiHty to host the basic call process of the SLEE. In this mode, it supports several high-level control domain internal functions: basic caU processing (BCP) 20, application services interworking (ASI) 22, caU agent (CA) 24, generic signahng interface (GSI) 26, media gateway control (MGC) 28, and network management (NM) 30.
According to the invention, the SX 14 also includes carrier-ready modules including Class 5 services, and is an open service creation environment 34 (service level executable environment or SLEE) that enables the rapid deHvery of new carrier-class services and enhanced appHcations. Briefly, the SLEE 34 includes an application programming interface (API) caUed the SLEE Library which utilizes dynamicaUy loaded shared Ubraries (DLLs) to faciHtate the deployment and distribution of enhanced services which are not subject to the Class 5 delay budget over the integrated network. The basic caU processing (BCP) 20 is a speciaHzed ASI function that creates the coupling between the SX 14 and the SLEE 34. The BCP 20 and SLEE 34 intercommunicate using a special command set referred to as the SLEE Hbrary, which is described in detail below. The BCP 20 is modeled conceptuaUy on the ITU Advanced Intelligent Network (AIN 0.2) basic call process functions. That is, the BCP 20 uses separate originating and terminating views to express a connection between half-calls. In the BCP 20, a two-party caU is viewed as two separate half-caUs each with their own connection related data (context) and status (state). The BCP 20 controls aU caUs in the SX 14 which originate or terminate on a subscriber Hne. In addition, the BCP 20 also controls aU tandem trunk to trunk (AT to AT) caUs, which do not require any feature interaction with SLEE 34. In summary, the BCP 20 emulates within the SX 14 aU basic call control functions of EO/AT switches currently deployed in the PSTN.
The appHcation services interworking (ASI) function 22 manages the interaction between SX 14 and the appHcation service (AS) functions residing in the service control domain for any non-SLEE AS functions supported by the SX 14. When the SLEE AS functions are implemented, the BCP 20 replaces the thin ASI function 22.
The call agent (CA) 24 is described by its subfunctions, which include: caU admission control, call routing, caU detail record (CDR) management, and database management. The caU admission control determines which appHcation service function (AS) is responsible for controUing an inbound caU and selects the appropriate ASI to interface with a particular AS. Each AS must register with an SX 14 prior to receiving work. Call routing uses call related information to perform route table searches and returns one or multiple trunking facilities which may be used for termination. CaU routing is described in more detaU below. CDR management maintains the integrity of all CDR records in database 36, makes CDR information accessible to other functions in the SX 14 and periodicaUy writes CDR data to disk. Database management maintains the integrity of aU local SX database tables, and performs route table synchronization between active and standby SX systems as dynamic updates are submitted through management interfaces. GeneraUy speaking the caU agent (CA) function is to coordinate caUs and caller related activities and resources. Furthermore, a caU agent views a caU as a transaction which can include one or many participants. A caU agent provides basic caU related services to one or many caU parties based on their individual service pohcies. The caU agent control function exists in the signaling and control plane.
The generic signahng interface (GSI) function 26 performs common channel control signal interworking between the SX and the network, specifically SS7 and ISDN PRI. The GSI 26 translates raw ISUP, TCAP, AIN, IN and ISDN message structures into generic primitives understood by the SX 14. A generic address structure is used to carry call addressing information between the SX and the SG, e.g. calling party number/sub-address, caUed party number/sub-address and destination prefix. A generic circuit information structure is used to communicate circuit connection related information between an SX 14 and SG 10, e.g. endpoint type (ISUP trunk group or ISDN access port) and circuit/channel information.
The media gateway controUer (MGC) 28 performs interworking between an SX 14 and one or more MGs 16, and provides termination to a collection of endpoints in one or more domains. The MGC 28 translates the connection status (state) and caU transaction specific connection information (context), received through an MGC protocol (MGCP), into a generic set of primitives understood by other SX internal functions that may be required to faciHtate the caU transaction. The MGC 28 is also responsible for managing connections between the SX 14 and MGs 10, including such activities as endpoint audit and fail-over. GeneraUy speaking, the media gateway controUer function is to orchestrate and manipulate the connections between two or more physical or logical 'bearer' channels terminating on a single media gateway or terminating between two or more media gateway elements. Furthermore, a media gateway controUer may also orchestrate and manipulate the connections between two or more physical or logical 'bearer' channels between a media gateway and a media server(s). The media gateway control function exists in the signahng and control plane.
Network management (NM) 30 includes a number of subfunctions related to network management access control to the SX 14. The subfunctions include configuration session management, alarm interface, database interface, CDR interface, and high availability (HA). The configuration session management controls one or more sessions where a network administrator or a script emulating multiple configuration instructions is submitting configuration updates to the SX 14 using a command Hne interface (CLI). The SX is preferably run on a Sun Solaris 2.8 platform. The Solstice Enterprise Agents (SEA) from Sun Microsystems provides a software development kit that enables the building of subagents to manage different subsystems, components and appHcations within a system in Sun Solaris environment. The alarm interface handles alarms as SNMP traps in the SX system. Traps are predefined within each component and, when the trap conditions are met, components caU alarm functions within a support manager Hbrary to send out SNMP traps. The database interface is synchronized with a subscriber management portal centraHzed database, e.g., an ORACLE database. The CDR interface maintains all relevant switch and billing information. AU records are stored in database 36. The SX MGC/CA host generates raw (unformatted) CDR records for each caU from its internal database. CDR data is synchronized between both an active SX system 14 and a standby SX system 14a. As such, should the active SX system 14 become unavaUable, the standby SX system 14a is able to take over all existing operations without loss of data. The high avaUabiHty (HA) function 38 supports redundancy in the event of a failure. As such, the HA function coordinates aU internal HA related processes, monitors IP traffic and heartbeat messages over a serial link and two Ethernet interfaces, and determines when to perform failover and recovery functions. When a fail-over needs to occur (due to SX 14 faUure), the HA operates to mediate and coordinate faU-over processes between the active SX 14 and standby SX 14a systems. The HA also manages aU of the data repHcation required to maintain aU stable caUs in the system. The data elements which require repHcation include CDR records, subscriber profile data, BCP caU state information, MLB data (routing tables, IP addresses, etc.), and signaHng interface call transaction related data objects in MGC and GSI. At specified intervals, a Bilhng and Recordkeeping Server (BRS) 80 polls the SX 14 for any new CDR records.
In view of the above described internal functions, a typical caU flow through the SX 14 is now described. A notify message 40 from an MG 16 to the MGC 28 in the SX 14 signals a user off-hook event with the user ID (endpoint) and dialed digits attached. The MGC 28 makes the association between the user endpoint LD and a virtual channel (VC) address used internally in SX 14. The MGC 28 then signals the CA 24 on the new caU at 42 and the CA creates a caU context and a caU detail record (CDR) and appends these two objects to the caUing VC object. The caU context contains all information about the caU during its active Hfe and is made accessible to all internal functions of the SX 14. The CA 24 coordinates with the HA function 38 at 44 to provide the status of the caUing VC with the appended caU context and CDR information to the standby SX 14a at 46. The CA 24 signals the BCP 20 on the new call at 48, providing the BCP with a pointer to the calling VC object and passes control of further caU processing of the Hne to the BCP. The BCP 20 notes the status of the Hne and checks to see if any service function is required at this stage.
Assuming the SLEE 34 needs to analyze the dialed destination, the BCP 20 uses the current status of the Hne at 50 to determine which, if any, service function (a service independent building block or SIB as defined by the ITU) 52 in the SLEE needs to be called. If the BCP 20 determines that an SLB needs to be called, the SLB is called and performed on the dialed destination based on the caUing party's feature profile. The SLB returns a response to the BCP 20 which then updates the status of the Hne at 54. The SLEE 34 updates the subscriber profile data putting the dialed destination in the last number dialed field.
Based on the new line status, the BCP 20 signals the CA 24 at 56 to route the call to its destination. The CA 24 performs a route lookup and determines a preferred PSTN trunk group (e.g., ISUP or TCAP) for the caU and whether idle capacity is avaUable. The CA 24 coordinates with the HA function 38 to provide the updated status of the caUing VC with the appended caU context and CDR info to the standby SX 14a at 58.
The CA 24 signals the GSI 26 at 60 to initiate a caU to the user dialed destination on the preferred trunk group. Once an idle circuit in the trunk group is selected, its port id is passed back to the CA at 62. The CA then creates a context and CDR for the terminating connection (caUed VC) and appends these two objects to the called VC object.
During the destination call setup, the GSI 26 and MGC 28 exchange signals at 64 that coordinate the connection activity on the selected trunk group bearer channel with the MG 16.
Once the caUed party answers, the GSI 26 signals the CA 24 at 66. Now the caUing VC and the caUed VC are connected and the CA 24 updates the BCP 20 at 70. The CA coordinates at 68 with the HA function 38 to provide the updated status of the caUing VC/caUed VC with the appended caU context and CDR info to the standby SX 14a. The stable call is maintained on an SX faU-over.
The CA 24 signals the BCP 20 at 72 with respect to the connected caU, providing the BCP with a pointer to the calling/called VC objects. The BCP 20 notes the status of the Hne and' checks to see if any service function is required at this stage. In this example, it is assumed that the SLEE 34 is not required. The caU remains connected until either party hangs up.
Assuming the caUed party hangs up, the GSI 26 signals the CA 24 at 74 of the release from the network side, which the CA acknowledges, and the CA subsequently notifies the BCP at 76. The CA starts a process every few seconds which writes the CDR data into the database 36. The CA coordinates with the HA function 38 at 78 to provide the updated status of the caUing VC/caUed VC with the appended call context and CDR info to the standby SX 14a. This releases the connection resources and generates a CDR in the standby SX 14a. On a configurable time interval, the Billing and Recordkeeping Server (BRS) 80 acquires any. new CDR records (marked 'unread') from the local database 36 of the SX 14 at 82 (Figs. 2 and 3).
Referring to Fig. 3, the SX functions map, through interfaces, to other objects, appHcations, and management terminals in an IP network. The SX interfaces are grouped into the foUowing categories: signaHng interfaces SI and S2, gateway interface GW1, appHcation service interfaces ASI and AS2, management interfaces Ml, M2, M3, M4, and high avaUabiHty interface HAL According to the relationship between non-channel associated signaHng (NCAS) data and bearer channels, SX NCAS signaling functions can be divided into two classes: embedded and non-embedded. The embedded signaHng function classification means that the signaHng channel and the associated bearer channels terminate on the same piece of hardware. For example, in traditional telecommunication equipment, an ISDN D-channel is the 24th channel in a Tl (or the 30th channel in an El) interface and aU the other 23 (or 29) channels are for bearer purpose. Conversely, the non-embedded signaHng classification means that the signaling channel and the bearer channels terminate on different hardware equipment, e.g. in the case of SS7 A-links which terminate on dedicated equipment such as a signahng gateway, while the mapped bearer channels terminate on a trunking gateway. Channel associated signaHng (CAS) in the SX 14 is a subfunction of the MGC 28.
SignaHng interface SI represents a logical connection between the SS7 non-embedded signaHng function 90 of the GSI 26 of the SX 14 and the signaling gateway (SG) 10 used to deHver ISUP, TCAP, LN and ATN protocol-related information. The TCAP/ALN/1N information relates to toU-free number, local number portabihty, and caUing party name database queries.
The S 1 physical interface is Ethernet over which the multilayered SX to SG protocol shown in Fig. 4 is implemented. In this protocol, the caU signaling messages received on the signaling link from a PSTN signaHng end point 92 are processed by the Q.931 ISUP stack in the SG 10 and converted into GSI primitives (e.g. connection indication, etc.). The GSI primitives are then sent from the SG 10 to the SX 14 through the Ethernet SI. Several protocol layers are implemented between the SX 14 and the SG 10 to provide rehable and efficient transportation of the GSI primitives. First, a modified version of TALI is used as the transportation layer of the protocol between SX and SG implemented. TALI preferably runs on top of TCP/UDP and IP. TALI is a protocol originally submitted by Tekelec to the IETF to be reviewed for adoption as a standard, but rejected as a standard. A redundancy manager layer runs over TALI, and serves to maintain two mutual-backup connections between the SX 14 and the SG 10. A signaHng protocol multiplexing (SPM) layer which multiplexes and demultiplexes native signaHng protocols, such as ISDN, ISUP, ATM UNI, etc. runs over the redundancy manager layer. Preferably a backup mechanism is provided in which each SX 14 is coupled via SI interfaces to a pair of SGs 10. Generally speaking, the signaHng gateway (SG) function is to perform inter-working between two or more signaHng mediums (e.g. SS7, TCP/IP, etc.). The caU agent control function exists in the signaHng and control plane. The signaHng gateway control function exists in the signaHng and control plane.
The S2 physical interface represent a logical connection between the ISDN non- embedded signaHng function 94 of the GSI 26 and an ISDN endpoint 95 on the MG 16. The S2 physical interface is Ethernet over which the multilayered protocol shown in Fig. 5 is implemented.
With respect to provisioning the signaHng information of SI and S2, a centraHzed element management station (EMS) 96 of the Bilhng and Recordkeeping Server (BRS) 80 coordinates the provisioning of the SG 10, SX 14 and MG 16. After EMS provisioning is complete, the SG, SX, and MG coordinate their configurations such that during operation they can correctly map the logical resources in common between them.
The gateway interface (GW1) manages the interconnection of the SX 14 to an MG 16, preferably using the MGCP Version 1.0 protocol. The MGC 28 of the SX 14 implements specific media gateway control protocol (MGCP) packages 98 for Hne, trunk and channel- associated signaling (CAS) with the MG 16. For CAS, the signals are carried on the same facihty as the voice path. Since the MG 16 does not support direct termination of analog interfaces 102, the CAS control to the analog interface 102 is deHvered through digital supervision signaling (ABCD bits) over a DSLAM (DSL access multiplexer) 104 to an integrated access device (IAD) 106 using an ATM AAL-2 loop emulation protocol at 108. The IAD 106 is a customer located access device that can handle both voice and data services on the same access Hne and is connected to a telephone 110 at the customer premises.
The GW1 physical interface is Ethernet over which the IP, user datagram protocol (UDP), and MGCP protocol layers are implemented. In order to facilitate the implementation of redundant MGCs, MGCP uses domain names, rather than IP addresses to identify the MGC and the MG. Several LP addresses can be associated with a domain name. MGCP is a transaction-based protocol, which allows a new MGC function to take over control at any given point of time. When the gateway detects a new MGC source in a new MGCP request, the gateway then sends the associated responses to the new MGC, while responses to previous commands are still transmitted to the original source MGC.
The high avaUabiHty interfaces (HAl) manage the redundancy between the active and standby SX systems 14, 14a. The physical interfaces utiHzed by the HAl include four Ethernet connections and one serial connection.
Management interfaces Ml and M2 are for CLI provisioning and element management (EMS), respectively. Both Ml and M2 interfaces are SNMP over UDP. Management interface M3 is used to synchronize subscriber data between the subscriber management portal (SMP) 120 of the BiUing and Recordkeeping Server (BRS) 80 and one or more SX systems 14 in the network. Management interface M4 is used to puU CDR records from SX systems 14 to the biUing mediation platform (BMS) 122 of the BiUing and Recordkeeping Server 80. Both interfaces M3 and M4 are TCP/IP.
The AS 1 interface manages the interconnection of the ASI function 22 of the SX 14 to appHcation service functions (AS) 126. The appHcation server (AS) function is to coordinate caUs and caller related activities and resources for speciahzed purposes beyond the basic caU process and typically associated with enhanced service arrangements. Furthermore, an appHcation server may provide feature interaction management between appHcation program functions. The application server function exists in the appHcation services plane.
The SX is adapted to support two types of AS interfaces. The first interface type, designated ASI, defines the logical and physical interface between the SX BCP 20 and the SLEE 34. The second interface type, designated AS2, defines the logical and physical interface between the SX ASI 22 and an external AS 126 residing in the IP network. The physical characteristics of the AS 1 interface may be implemented two ways, depending on whether or not the SLEE resides on the same server as the SX. When the SLEE 34 and SX 14 reside on separate servers, the ASI physical interface is Ethernet over which the transport protocol used is UDP over IP. This option requires the network to support LP4 multicasting between nodes, and is implemented by enabHng IP multicast routing and LP PIM on all cHent-server interfaces. The BCP 20 and SLEE 34 communicate through a request/response API referred to as the SLEE Library. When the SLEE and SX reside on the same server, the ASI physical interface is UDP.
Within the SX, connection control primarily involves the signaHng and gateway interface functions being coordinated by the call agent function (CA) 24, with caU control residing in the basic caU process function (BCP) 20. An overview of SX connection control with respect to each interface type is provided in Table 2.
Figure imgf000019_0001
Figure imgf000020_0001
Fig. 6 also shows the interconnectivity of the SG 10, the SX 14, the MG 16, the SLEE 34 with modules 124a, 124b, 124c, 124d comprised of SLBS, and the Bilhng and Recordkeeping Management System 80, albeit providing a different functional overview than Fig.4. Both figures, used in conjunction with each other, faciHtate the understanding of the interconnectivity of objects.
Referring more particularly to the SLEE 34, the SLEE aUows for the implementation of many reusable basic appHcation service functions (modules), referred to as service independent buUding blocks (SLBs) 52. These SLBs may be representative of individual call states, speciaHzed service functions, or the set of atomic functions specified by the ITU for AIN 0.2. Using a caU processing language (CPL), discussed below, new SLBs can be scripted which are then combined and compiled into application scripts which execute in the SLEE. Because SLBs contain relatively few Hnes of programming code they can be easily and quickly tested. SLBs can be reused and combined with newly coded SLBs to create future service appHcations.
According to one embodiment, the SLEE implementation makes each SLB into a separate process, with user datagram protocol (UDP) as the preferred method of inter-process communication. This makes the implementation completely distributable, driven entirely by the time-to-hve attribute of the UDP message, which determines the scope of distribution (e.g., LAN segment, WAN, or world-wide network). As such, new features can be built and tested, and then sent to a customer system by reference in the SLEE Dynamic Naming Services (DNS) server which, as discussed below, permits the distribution of functional elements over the network. Within the SLEE, multiple copies of any SLB can be run as the caU load directed to a particular service function or feature peaks. Conversely, distribution of services can also be implemented by having a single SLEE connect to multiple SXs across the LP network. Rather than forcing appHcations or the SX to learn the details of using the SLEE DNS server, the SLEE Library, referenced above and described in detail below, is provided to make the interface clean and easy.
According to the presently preferred embodiment, the SLEE is instantiated by a C- language program module named slee. The slee executable is a generic implementation of very basic SLEE functions. Consequently, it can run in a variety of environments, wherever service level execution is desired: at the appHcation level, as part of the service creation switch (SX), or embedded within a Media Server (MS) or a similar device. A Media Server generally provides interworking between the SLEE and a media server which preferably supports HTTP. A media server functions to terminate one or many physical or logical *bearer' channels (typicaUy associated with User connections) into an ephemeral resource (dynamicaUy loaded digital signal processor-attached resource). Furthermore, a media server may mix one or many physical or logical 'bearer' channels into a multi-party conference. A media server is differentiated from a media gateway through its abihty to provide enhanced services to a bearer channel (e.g. speech recognition, interactive voice response scripts, text-to-speech, etc.). The media server function exists in the media transport plane. In effect, the media server is the capabiHty layer of the SLEE. The combination of the slee and the libraries, threads, and projects loaded by it make up the actual appHcation. A caU flow is implemented within a project.
Referring to Fig. 7, the SLEE 34 is shown with a number of projects 130 loaded in the lower right hand corner, a pool of threads 132 in the lower left hand corner, and three fixed threads 134, 136, 138 along the left side. Fixed thread 134 provides for communication between the SLEE and another node on the network. Fixed thread 136 provides for operator commands to control and monitor the SLEE while it is running. Fixed thread 138 provides for communication with the SX. For each project 130 that the SLEE 34 runs, a thread is retrieved from the thread pool 132, and the thread then runs the project-specific code. The SLEE module provides for balance between the threads that instantiate the projects.
The fixed threads govern a variety of interfaces, one interface per thread and one thread per interface. The fixed threads are written as C-language source modules and linked into the slee at compUe time. A configuration file slee.cfg governs which threads are loaded, and the order in which they are loaded. Fixed threads include the following:
opcmds thread (sleecmd.c)
This thread is the command thread, and provides a keyboard interface to the SLEE to aUow reconfiguration, shutdown, and similar commands.
sleenode thread (sleenode.c)
This thread aUows communication between the SLEE in a subject node and the SLEE in other nodes. This thread also accepts requests from other non — SLEE services to the SLEE (e.g., a request from the notification process that the SLEE make caUs to pager bureaus, and to send CDR's for notification events handled by the notification process).
database interface thread (sleedam.c)
This thread waits for database events to occur and forwards these events through the main SLEE thread to the appropriate caU flow. timer thread (sleepuls.c)
This thread tracks the time remaining for an array of script-managed functions. When each timer reaches zero, the caU context in informed, and any wait condition pausing the script is interrupted.
Media server thread (sleemmx)
This thread waits for events from the Media server. When a new event arrives, it is part of SLEE's queue. The SLEE's main thread forwards the event to the appropriate call flow in order that the script handles the information returned by the Media server.
Soft switch API thread (sleermx)
This thread manages the API with the Soft switch. When a new event arrives, it is placed on the queue for the slee main thread, which forwards the event to the appropriate caU flow.
The various SLEE fixed threads have input and output mechanisms that differ based on the purpose of the thread.
SLEE main thread (slee.c)
This thread services a Hnked hst of queue of events. AU the other threads add events to this queue through a function within the main slee thread caUed sleejxddEvent. This thread removes events from its queue and adds them to the linked Hst queue for the appropriate caU flow.
sleecmd thread
This queue removes its input from a UNLX message queue. Its output is typicaUy to a file caUed /usr2 USM2/LOGS/slee.out.
sleedam thread
This thread gets all new input from the database interface (DBLF) through a caU to the function Get_Database_Response. The output is to the slee event queue.
sleepuls thread
This thread has no input. Rather, scripts can initiaUze one of five function timers through a statement with the syntax:
setContext(funcTimer[x], VALUE) The funcTimer[0] tracks the number of seconds left before ANM (answer) is returned to the network. The caU to set the high limit is
setContext(funcTimer[0], thisContext->timer[21])
When this timer expires, the function signalCall (in sleecaU.c) causes notification to the thread handhng the call in progress that the timer has expired. Threads can test the value of the timer (including when it reaches zero) by checking the value of thisContext->funcTimer[x]. The signal to the thread that the timer has expired will affect any current waits or timed waits.
sleemm thread
The input for this thread is through the function call in mmhb.c named mm_EventGet( ). The mmUb code manages TCP/IP socket connections to the various Media server servers. Output is to the slee main event queue.
sleerm thread
Input to this thread is through the TCP/IP socket connection that underHes the open API. Output is to the slee main event queue.
Referring to Fig. 8, the project state machine contains the logic that implements a project 130. Each project 130 can have a different state machine that governs the meaning of events at a finer level than the caU states. Each project state machine 140 is a shared Hbrary loaded by the slee module, and pulls messages off of a linked Hst created by the slee module and processes each as a separate event. The state machine tracks the context of each event and the result of each event handler (script).
The logic that handles each event is written in scripts in a caU processing language (CPL), and then compUed into dynamicaUy loaded shared Hbraries (DLLs). Each state machine 140 governs a pool 142 of threads that handle active caUs. The threads make calls to the shared Hbraries, to the state machine, and to the slee module.
The slee module is invoked as a separate process at the appHcation layer with a parameter that indicates the level at which it implements the SLEE, as foUows:
SLEE BLN/slee AP to run at the appHcation level The slee is run within its own thread in the Soft switch (if it runs there) and in the Media server. The entry point is a routine named slee(), which takes two parameters: the level at which it is running, and the path to the configuration information:
int slee ("SS", path); to run within the Soft switch int slee ("MS", path); to run within the Media server
The return code indicates whether the SLEE was able to initiaHze (0) or not (some negative value). AU of the caUs to MS devices that use device drivers that are not thread safe, are through caUs back through the slee thread, which may in turn call routines in the module that launches it. It is necessary for the slee to know at which layer it is operating because, depending on the layer, different scripts are loaded.
Also in the SLEE directories are the dynamicaUy loaded shared Hbraries (DLLs) that provide the API between the layers. In the case of the AP directory, there is a DLL that provides inter-node communication services; e.g., Access Node to Service Node, Guaranteed DeHvery, etc. The shared Hbraries also provide basic services such as trace file logging, alarm and trap notifications, etc. The shared Hbraries are preferably compiled for the specific operating system in which they run.
The slee module loads the unique processing logic (project state machines) for the various projects, and receives the run-time commands discussed below.
The appHcation layer slee has several functions. First, the appHcation layer slee module receives aU messages from the SS through the selected API, e.g., an interface such as PARLAY™ (from the Parlay Group) and S-100. The received message is then added to the appropriate Hnked Hst for the project that the message pertains to, and the project is notified to handle the message. Second, the appHcation layer slee module is also responsible for communicating with other layers. Third, the appHcation layer slee module controls connections to other nodes like Access Node to Service Node, the Guaranteed Message DeHvery system, and the database. Fourth, the appHcation layer slee module loads the node configuration detaUs and makes them available to the various project state machines.
According to the preferred embodiment, the slee module is preferably not loaded in the Soft switch (SS) layer. However, given an appropriate function, the slee module may be loaded in the SS layer. In the Media server, the slee is responsible for loading specific project logic where necessary.
By way of example, the foUowing high level pseudo-code for implementation of the slee module is provided:
Confirm that the Layer parameter is one of AP or SS or MS.
Load the configuration file slee.cfg.
For each shared Hbrary Hsted in the slee.cfg file,
Load the shared Hbrary from /SLEE/BLN/ α er. Lf the file is missing, generate an alarm and shut down gracefuUy. If appHcation layer, load the node parameters such as native language, node address, and address of the nearest Service Node. For each project subdirectory in /SLEE/BLN/Projects/Active: •
Launch the state machine for the project as a separate thread, passing the Layer parameter and the node configuration information. Create a thread scheduhng pattern that wiU round-robin through the projects when scheduHng control is necessary. Do until stopped:
Receive messages from other layers.
Add the message to the proper Unked Hst for the project. The project is determined from the combination of span, channel, and node received on each message from the Soft switch. Signal the project thread that a message was added to its Hst.
Each slee module has a control thread that reads a message queue for run time commands that can be entered at a keyboard. A separate module named tellslee knows how to communicate with the command thread through the message queue, and an operator can send messages directly to the slee module to affect how it runs. Commands all have a prefix that can be tested (e.g., " ! !") and then one of a series of standard commands:
SHUTDOWN: gracefully shut down aU the projects and the slee module itself.
KILL #: gracefuUy shut down a single project (whose LD is given in #) if possible, if not possible to cause a graceful shutdown, force an ungraceful shut down. KLLL ALL: gracefuUy shut down aU projects.
TRACELVL #: set the trace level to the number indicated by the digit '#'. LOAD: load or reload a project state machine or a shared Hbrary. SHOWCFG: display a Hst of the currently running projects, and other tables and global variables to a file in /imp for inspection. SHOWLIST #: show the messages stored on Hnked Hst '#'. SHOWLIST ALL: show the messages stored on aU of the Hnked Hsts. THREADS: show a Hst of all of the threads. CANCEL #: cancel thread number # in the Hst. CANCEL ALL: cancel aU threads in the Hst
As discussed above, the slee module launches the project state machine appropriate to the state machine's level of execution, AP (AppHcation), SS (Soft switch), or MS (Media server). The files that control the project state machines and the compiled scripts are contained in directories designated for the level of execution:
/usr/SLEE/BLN/Projects/Active/Pro/ectNα e/AP
/usr/SLEE/BLN/Projects/Active/Prς/'ectNαme/SS
/usr/SLEE/BLN/Projects/Active/Pro/ectNαme MS
In addition to the Active directory, there is a directory named Inactive: /ύsr/SLEE/BIN Projects/TΛactive/Pro/ectNflme/AP /usr/SLEE/BIN/Projects/Inactive/Pro/ectNαme/SS /usr/SLEE BIN/Projects/lnactive/Pro/ectNαme/MS
The Inactive directory is used to store test configurations or new projects while they are being uploaded to the node. Projects that are being decommissioned can also be moved into this directory. The directory can also hold reserve copies of previous versions of a project in case a roU back to a previous version is necessary.
Each of the Active and Inactive directories contain a file named inventory that names aU of the scripts that should be loaded by the project state machine.
A separate thread handles each event for a call. The threads make caUs to the shared Hbraries, to the state machine, and to the slee module. When the thread completes its handUng of the event (that is, when the script is completed), the thread is returned to the thread pool.
The transitions in the caU states are the responsibihty of the project state machine in the appHcation layer and its interface to persistent caU objects. Therefore, SLEE elements in the Soft switch and the Media server must trigger events in the appHcation layer to effect the changes in the caU's caU state. An unexpected release of the caU by the caUer wiU generate an event that wiU cause the Soft switch to broadcast an asynchronous release event to the appHcation and the Media server.
By way of example, the foUowing high level pseudo-code for implementation of the project state machine is provided:
Confirm that the Layer parameter is one of AP or SS or MS. Read the project global configuration variables from the database. Load the file /usr/SLEE/BIN/Projects/Active/ProjectNαme/Iαyer/inventory. For each file in the inventory,
Load the script. Create a thread scheduhng pattern that will round-robin through the projects when scheduhng control is necessary Receive messages from the slee. Get a thread from the pool (or create a new thread) to handle the message.
Each project state machine also has a control thread that reads a message queue for run time commands that can be entered at a keyboard. A separate module named tellproj knows how to communicate the command thread through the message queue, and an operator can send the messages or commands described above (SHUTDOWN, KILL #, TRACELVL, etc.) directly to the slee module to affect how it runs.
The inner workings of the SLEE can be monitored real time with the foUowing command: display.sh. The results are written to slee.out.
The command to show the names of scripts as they execute is: taU -f slee.log | grep AP_
The command to display the names of prompts as they play is: tail -f slee.log | grep V9
The command to be able to see each Soft switch event as it arrives is: tail -f slee.log | egrep "sw_|Rm"
The command to view the results of Media server functions as they are reported to the SLEE is: tail -f slee Jog | grep "API =" The command to see whether the SLEE is receiving caUs is: taU -f slee.log
The command to change the ISP service addresses whUe the SLEE is running is: teUslee ISP 0=phone_number Callfiow
The current settings of an ISP modem can be viewed by either: tellslee showisp Callfiow taU slee.out or: cat isp.cfg
Call Processing Language
As mentioned, the call processing language (CPL) is used to create scripts for the SLEE. A script, as briefly described above, is an event handler or a system independent buUding block (SIB), either high-level or low-level. Since events of telephony significance can take place on all layers of the OSI stack, the CPL does not limit itself to the AppHcation Layer. Instead, CPL scripts can be executed in a variety of environments. The first layering scheme separates the functionaHty of the appHcation logic from the Soft switch and the Media server.
Each caU is represented in the appHcation layer by a persistent caU object "owned" by the appHcation layer that maintains a number of items relevant to a caU. "Ownership" means responsibility to maintain the "call state". Since the appHcation layer "owns" the call object, changes to the call object are made only through the appHcation layer scripts. Scripts at other layers have to generate ("trigger") appHcation events to change information in the caU object. The caU object contains the subscriber profile data, the cumulating CDR data, and the appHcation state of the caU besides the caU state. The appHcation state is a variable that tracks the most recently handled event and the event next expected.
"Call state" means the state of the call in the sense described in the documentation for PARLAY™ or some similar standard appHcation server. Whenever an event in any layer would change the caU state, an appHcation layer event must be triggered so that the appHcation layer wiU change the caU state within the persistent caU object.
As a caU progresses, parts of the persistent caU object are sent between the appHcation layer and the layers lower in the OSI stack, and possibly back up to the appHcation layer. The result is that each caU is controUed by the appHcation layer. According to a preferred embodiment, scripts written in CPL are compUed into C- language statements, which are then compiled into shared Hbraries by a standard C compiler for the target computer. The compiler is made up of a specification preferably developed with the C code yacc command, a parser preferably developed with the C code lex command, and preferably a number of C code and header files. Once a script is written, the command to generate C code from the script is cpl SCRIPTNAME.cp. The output is a file named SCRIPTNAME.c. The C code is then compiled into a shared Hbrary according to the specifications of the target platform. The importance of implementing the scripts as shared Hbraries is that scripts can be dynamically loaded; even at run time, a command can be issued to load a new copy of a script. Any new caUs made wiU use the newly loaded version. The command interface for loading the new version of a script as a dynamicaUy Hnked Hbrary is described above. On the Linux operating system, it may be necessary to link the scripts together into a single large Hnked Hbrary that represents a whole caU flow. The caU flow can be changed during ran time as described above, but it is not possible to change individual scripts at run time.
The scripts for the CPL are written as plain ASCII files with new-Hne dehmiters. Scripts are composed of sections. Some sections are required, and other sections are optional and appear only when required by the script.
Scripts can request the execution of other scripts, either at the same layer of execution, or at other layers. "Run" or "jump" are the two possible commands when a script executes another script within the same layer; that is, if an appHcation script runs an appHcation script). The command "run" is used if the original script expects to continue running after the other script has begun executing (synchronously, like' a subroutine call). The syntax is run SCRfPT(parameters); for example, run AP_MainMenu(thisContext). The command "jump" is used if the original script is now finished and the other script will complete what the original script might have done (asynchronously, like fork and exec). The syntax is jump SCRIPTφarameters); for example, jump AP_NoiceRoute(thisContext). For instance, if there is a script that has been written to prompt a user with a question that wiU elicit a "yes" or "no" response (MS_Yesno), when another MS script wants to ask the user a yes or no question, the original script can "run" the MS_Yesno script. If there is a script that plays a "Goodbye" message and hangs up on the caUer (APJBye), any AP script that wants to hang up on the user in that fashion would "jump" to the AP_Bye script. A script can run another script in the background. The second script runs (in part) in parallel with the first script. The second script is caUed the "child" script, and the original script is called the "parent" script. The child script inherits certain features from the parent, including the call reference number that wiU tie CDR's produced by the child with the CDR's created by the parent. The syntax is: bgrun SCRLPT arameters); for example, bgrun AP_PrintFax(faxFileName,destination, "FAX", removeflg)
If a script running in one layer wants another layer to execute a script, it will "trigger" the running of the script with the command <LAYER>_trigger, where <LAYER> wiU be: MS for Media server, SS for Soft switch, and AP for application.
Scripts being run by the Soft switch or the Media server are preferably not aUowed to span changes in the caU state. Such changes are preferably required to be requested at the application level, where the caU states are tracked.
A script itself is delimited by the "start script" and "end script" key words. As such, the first non-comment or blank Hne must contain only the key words "start script" and a new Hne character. The last non-blank and non-comment line must contain only the key words "end script" and a new line character. Incorrectly formatted key words are ignored. Hence, required key words incorrectly formatted will be flagged as absent, and the script wiU not compile.
Scripts return a value of "SUCCESS" or "FAILURE." The return value signals to the requesting layer whether the values in the interface buffers are of any value. A return of FAILURE would indicate that the contents of the interface buffers are undefined. A return of OK would indicate that the contents are set as expected. Returns are coded within the then or else section with the keyword RETURN plus SUCCESS or FAILURE. ActuaUy, the "SUCCESS" keyword is translated into (void *) thisCall, where "thisCall" is the address of the call object, and the "FAILURE" keyword is translated to (void *)NULL.
Comment Hnes begin with a hash ('#') in the first position. Comments are aUowed anywhere within a script, including before the "start script" and after the "end script" keywords. Blank Hnes; that is, Hnes consisting only of white space and a new Hne, are aUowed at any point.
The header and code sections, described individuaUy hereafter, are required to be in aU scripts. The ibuffer (input buffers), obuffer (output buffers), prompts, and counters sections, also described hereafter, are optional, and their absence is not considered to be an error unless reference is made to them.
The header section begins with a line consisting of only the keywords "start header" and a new line and ends with a Hne consisting of only the keywords "end header" and a new Hne. Each field within the header consists of a keyword plus white space (any number of tabs or spaces) plus a value. The header must include required fields, and may include optional fields.
The foUowing fields must appear in the header, and in the foUowing sequence. ScriptName VALUE VALUE must start with:
MS for Media server, SS for Soft switch, or AP for AppHcation.
The two-letter prefix is foUowed by an underhne, and then any alpha-numeric characters. Preferably, scripts are named so that their purpose can be determined from the name. Example: MS_NewCaU.
ProjectNo VALUE VALUE must be numeric.
Example: 62357.
ProjectName VALUE VALUE is the overaU (meta-) project.
For example: ProjectA.
CreationDateVALUE VALUE is the date that the script was created, in ISO-8601 format.
Ex: March 16, 2000 appears as "2000-03-16."
ExecutedBy VALUE VALUE shows which layer executes the script. VaHd choices are:
MS for Media server, SS for Soft switch, and AP for appHcation.
Release VALUE VALUE is a description of the release of the CPL that the script is intended for.
Customer VALUE VALUE describes the customer for whom the appHcation is designed. The VALUE can consist of more than one word. AppHcation NALUE NALUE is the name given by the customer to the appHcation that the script pertains to. For example, R******. The NALUE can consist of more than one word.
The foUowing fields are optional and only appear if necessary:
UpdatedBy NALUE NALUE has the name of the person who last edited the script. For example, DFreedman or David Freedman.
UpdatedOn NALUE NALUE holds the date and time that the script was updated, in ISO-8601 format. For example, 8:53 PM of March 16, 2000 appears as in this field as 2000-03-1620:53.
An "input buffer" (ibuffer) is a buffer with data (input parameters) that is provided by the level that caUs the script. An ibuffer, when present, begins with a line that has the words "start ibuffer" and a new line, and ends with a Hne that has the words "end ibuffer" and a new Hne. The ibuffer section can contain up to five buffers. Each ibuffer description consists of the name of the buffer and the size of the buffer in bytes.
When the ibuffer section compUes, the name of each buffer becomes: char *buffername;
The pointer points to a field, thisContext->parms[x]. value, where x is a number between 0 and 4. An example of an ibuffer is
start ibuffer profile 8 project 32 end ibuffer
An obuffer section declares the buffers necessary during the execution of the script. The compUer executes a maUoc() caU for each obuffer, using the size of the buffer as a parameter. Buffer names have script scope. An obuffer section, if present, begins with a line that has the words "start obuffer" and a new Hne, and ends with a Hne that has the words "end obuffer" and a new Hne. The obuffer section can contain any number of buffers. The script refers to the buffers by name. Each obuffer description consists of the following and the size of the buffer to reserve. An example of an obuffer is: start obuffer account 16 caUerName 128 caUerMsg 128 end obuffer
The prompts section is optional and is present only if the script wiU play prompts. The prompts section begins with a line with the keywords "start prompts" and a new Hne, and the section ends with a Hne that has the keywords "end prompts" and a new line.
The VOX file is estabhshed by the keyword language discussed below. The individual prompts are Hsted in a two-part Hne, with the actual NOX-prompt name (up to 12-bytes), foUowed by an optional description. An example of a prompts section is:
start prompts
N900111 Welcome to Platform
V920611 Please Enter Last digits of your account
V920411 Sorry Not VaUd account number
V900411 Sorry this account is temporarily closed end prompts
The optional counters section is a Hst of script counters that can govern script flow. The section begins with a line that has the keywords "start counters" and a new Hne, and it ends with a Hne that has the keywords "end counters" and a new line. The counters themselves are declared a name; for example, "retries." Within the script code, the counters are referred to by their names. For example, given the declaration "retries", to increment the counter "retries" the script code would be "retries +1." Counter names have script scope.
The code section is required and contains what the script actuaUy does. The code section begins with a line with the key words "start code" and a new Hne, and ends with a Hne that contains the key words "end code" and a new Hne. Each Hne of code can have the foUowing elements, and only in the order specified.
The code section can have an optional code label field. The labels can be numbers or names. Name labels begin at the first position on the Hne with a colon, foUowed by label's name, as in :CLI_BlackHsted. The code section can also have a keyword language. If a prompt is to be played, the keyword language foUowed by a vahd choice sets the language in which prompts (VOX files) are to be played. The vahd choices for the language keyword are the "native" and "subscriber". The keyword "native" identifies the native language of the node or DNS on which the script is running. The keyword "subscriber" identifies the language selected by the subscriber in which to hear prompts.
If a prompt is to be played, the keyword prompt is followed by the name of the prompt selected from the list of prompts in the prompts section of the script:
Vnnnnnn means a prompt from a VOX file (the VOX file is specified by the language statement)
A digit string means to recite the number with aUowances for language variants
A var name
The syntax is then: prompt({promptNamel;promptName2;variableName,smartMode;
"digitString", smartMode;...}, timer, digitsToGet,trapMask), where the content between { and } is what is played to the caUer, timer is the index of the timer in the timer array that is the max time for input coUection referred to as Tnumber (for example, "T22"), digitsToGet is the maximum number of digits to get from the caUer, and trapMask is a double-quote delimited string of zeroes and ones that turn up trap detection on (T) or off ('0'). "Traps" are termination conditions that can end input collection. Traps include:
MAXWAΓLTLME Maximum initial sUence
LDDTLME Inter digit sUence timer
STAR The star key (*) was pressed
POUND The pound key (#) was pressed
MAXSIL Maximum sUence was detected
MAXTLME Maximum functional time
TONE An expected tone was detected
The material between { and } need not appear in any specific sequence. Each item, except the last, ends with a semicolon. promptNamel : Name of a prompt promptName2: A script can store a prompt name in an obuffer variable and request playing the prompt Two reasons for grouping prompt names is that the termination condition wiU stop aU of the output in the statement. That is, if the POUND trap is on and the caller presses '#' during the playing of promptNamel, aU output wiU stop and the SLEE wiU resume on the next Hne of script.
variableName, smartMode:
The request is to play the digits contained in the script obuffer named variableName. The smartMode flag teUs the Media server how to group the digits. The current values are: MS_SMARTNUM_NAMED_PROMPT = 0 treat the string as a prompt LD. MS_SMARTNUM_SPEAK_ONE_DIGIT = 1 speak each digit, one at a time. MS_SMARTNUM_SPEAK_TRIPLETS = 2 recite the digits in groups of three. MS_SMARTNUM_SPEAK_HUNDREDS = 3 plays the digits four at a time. MS_SMARTNUM_SPEAK_AND_TRLPLETS = 4 plays digits 3 at a time, uses "and" and "hundreds". MS_SMARTNUM_SPEAK_AND_HUNDREDS = 5 plays the digits four at a time, uses "and", and
"hundreds".
"digitString", smartMode
Plays a specific digit string enclosed in double-quotes using smartMode as above.
If a built-in routine is to be caUed, the keyword execute appears foUowed by the name of a built-in routine to execute and its parameters. The parameters to the routines foUow the name of the routine in parentheses; for example, "DTMF (parml, parm2, ..., parmN, trapMask)".
The trapMask field is a bit-map of events or "traps" known to the subroutine. Each trap is a termination condition. If the routine understands eight traps, the trapMask can be thought of as an 8-toggle switch. If all 8 bits are off, the toggle looks Hke this: 00000000. Lf the script wants to know that the second trap happens (or "fires"), the trapMask would look like this: 01000000. In other words, the bits are numbered from the left, beginning with 1. To instruct the script to behave a certain way if the trap fires, the script author writes a sequence Hne with the notation: if (trap2) then ... else ... The else is optional. The notations become clearer in view of the foUowing discussions of the keywords if, then, and else. The built-in routines will return if any of the traps is set in the trapMask and the situation trapped becomes true. If the script has execute DTMFQ with the trapMask enabHng any of those traps, and during the course of the execution of the DTMF function one of the enabled situations happens, the buUt-in routine wiU return execution to the script with a return code that indicates what trap occurred. A script statement containing the keyword if 'foUowed by the condition in parentheses that matches the trap wiU change the flow of execution appropriately. For example, if DTMF was caUed and the trapMask was 00100000, it would mean that the script author wanted to trap only the situation of maximum number of digits pressed. Preferably, the following Hne is provided in the script: if (trap3) then LABEL or, if there is need for an else clause (typically the last trap in a series): if (trap3) then LABELm else LABELn If present, the trapMask is the last parameter.
An operation consists of a counter, an arithmetic operator (e.g., plus or minus) and an optional operand. A counter can be referred to by its name in the counter section in the script header. Counters are initiaHzed to zero by default. The valid operations on a counter are shown below. Note that there is a space between the counter and the operator, and no space between the operator and the operand. counter =VALUE counter +VALUE counter -NALUE counter *NALUE counter /VALUE
The ijkeyword followed by a condition in parentheses is optional. For example: if (account == "**") then TwoStars states that if the buffer named "account" has the value "**" (begins with two stars), then continue at the label TwoStars. The expression between the parentheses "(account == "**")" is caUed a condition. If there is any other value in the "account" buffer, continue at the next Hne of the script. Every t/ statement must be foUowed by a condition and a then statement. The else is optional, and wiU only be present if it makes sense. Note that a trap that has fired is treated like a condition, and one can say "if (trap2) then ...".
The vaHd operators are: < "less than" for arithmetic comparisons
<= "less than or equal to" for arithmetic comparisons
== "equal to," both for arithmetic and string comparisons
> "greater than" for arithmetic comparisons
>= "greater than or equal to" for arithmetic comparisons
If there is no if or else clause in a line of code, the default is to continue on the foUowing Hne of the script.
In order to faciHtate understanding of the CPL, the foUowing sample script is provided:
# This script is a subroutine that plays the owner's Status Messages #
# Reference: ABCSample Service Logic
# Unified Messaging High Level Voice Menu Structure
#. start script
start header
ScriptName: AP_MaUboxLimit
ProjectNo: 2001
ProjectName: XYZProject
CreationDate: 2001-02-09
ExecutedBy: AP
Release: A
Customer: ABC
AppHcation: Sample
UpdatedBy: John Q. Smith
UpdatedOn: 2000-03-02 12:00 end header
# no ibuffers #start obuffer #end obuffer #start counters #end counters
start prompts V903511 Warning, your mailbox is full, end prompts
start code
#
# Mailbox usage >= 100%. This message is NOT interruptible. #
# Warning, your mailbox is full. cpl({V903511},0,0,"") waitfor PROMPT_COMPLETE return SUCCESS end code
end script
SLEE Domain Name Service (sleedns)
In accord with a preferred aspect of the invention, a Dynamic Naming Service (DNS) for the SLEE is provided. The sleedns permits service to be distributed over multiple segments in a network.
The sleedns module starts early in the LPL sequence of an appHcation service. It accepts requests over UDP on a defined port. When appHcations or application elements open their own ports for Ustening, the Hbrary function that performs the socket and bind commands sends a UDP registration request to the local sleedns process. The message contains the name of the element, the hostname of its host, the LP address of the host, and the port that the element Hstens on. AppHcation elements that want to send to another appHcation element issue commands in the format: sendTo("elementName, " messagePointer, sizeof message); The sendTo function has the responsibihty to query the sleedns to look up the host, LP address, and port for the named element, and to send the UDP message to that port on that host. The sendTo function keeps a table of recently used addresses so that it is not necessary to do a sleedns look up for each message. The table contains aU the occurrences of the named element, and the local server gives precedence to the local server, but is capable of sending messages in a round-robin fashion to other hosts.
If a processing element is over-burdened, it preferably deregisters with its local sleedns, and the local copy bears the responsibihty to update aU the network copies. Thus, the appHcation element is no longer in sight. It is the responsibihty of the local copy of sleedns to remain synchronized with the other network copies. This can be accomphshed by sending multicast messages to aU Hsteners in the network on the sleedns port.
A number of predefined messages are known to the server. AU messages to and from the sleedns are preferably in Session Description Protocol (SDP) or XML format, and some (indicated below) have responses associated with them. If a response is not received before the expiration of the timer (configured in a configuration file), the request is repeated.
An appHcation element registers that is ready to receive messages. The registration is done at initialization. The local sleedns is responsible to multicast the new location to aU the other sleedns servers in the network. Each registration is stored with the time of its receipt. If the appHcation element is already registered, the entry in the DNS is updated with the new time, and success is returned.
The Session Description Protocol (SDP) request to register an application element consists of the fields shown in Table 3. A semicolon separates fields from each other, and the order of the fields is not important. An example registration request would look like: r=ST4;p=20806
Figure imgf000039_0001
The reply is the request, with a new result field, and the optional Hostname and HostTCPaddress fields supphed. The reply to the example request is in the foUowing format: k=ACK;r=ST4;s=r;h=cρci_l.techcontrol.com;i=10.4.1.32;p=20806 If the request is rejected (for any reason), the response is in the foUowing format: k=NAK|reason;r=ST4;s=r;h=cpci_l.techcontrol.com;i=10.4.1.32;p=20806, with the fields identified in Table.4.
Figure imgf000040_0001
AppHcation elements can query the sleedns for the address of another element. This is done by the library routine sendTo without the knowledge of the appHcation. The SDP version of the query request looks Hke: q=ST3;p=20806 The fields in the request are described in Table 5.
Figure imgf000040_0002
The reply to a query preferably has as many of the fields suppHed as possible; for example, k=ACK;q=ST3;s=r;h=cρci_l.techcontrol.com;i=10.4.1.32;p=20806 If there are no registered instances ofthe ElementName, the reply is as foUows: k=NAK|Entry not found; q=TCS;s=q;h=cpci_l.techcontrol.com;i=10.4.1.32;p=20806 The fields in the reply are described in Table 6.
Figure imgf000041_0001
An appHcation element can hide itself from other elements by deregistering with the local sleedns. The local server is responsible to deregister the element by multicasting to all the other servers on the network. Each deregistration is stored with the time of its receipt. If an attempt is made to deregister.an element that is already deregistered, the DNS entry is updated, and the return wiU indicate success. Deregistering a non-existent element is also treated as a success.
The request to deregister an element is provided in the foUowing format: d=STl;ρ=20806, with the fields described in Table 7.
Figure imgf000042_0001
The SDP version of the reply to a deregistration request is in the foUowing format: k=ACK;r=STl ;s=d;h=cρci_l .techcontrol.com;i=l 0.4.1.32;p=20806
If the deregistration fails for any reason, the reply begins k=NAK|reason, with the fields described in Table 8.
Figure imgf000042_0002
Each sleedns server communicates with all the others on the network. The synchronization messages are multicast to the sleedns port on all hosts. The synchronization messages look Hke the original requests, with aU of the optional fields fiUed out by the sending server. The status field is changed to upper case so that registrations are forwarded with status set to 'R' and deregistration messages have a status of 'D.'
Each host periodicaUy multicasts a heartbeat message to the other hosts. The time between heartbeats is set in the configuration file. The heartbeat message contains a count of registered elements and the time of the last update. An example of a heartbeat message is the foUowing: b=967230863;e=14;i=10.4.1.32;p=20550, with the" fields described in Table 9.
Figure imgf000043_0001
Lf the server receiving the heartbeat message has the same number of entries, the time from the update field and the network address of the sending server are recorded in a table. There is no acknowledgement or response to the heartbeat.
If a server receives a message with a different number of current registrations, the host with the less recent (older) update time sends a session request message with its count to the host with the more recent update time. Only one update session is aUowed at a time. Once the host with the smaUer number receives a session header message from a host, any other session header message is rejected. An example of a session request message is the foUowing: o=967230863;i=10.4.1.18;e=12;p=20550, with the fields described in Table 10.
Figure imgf000044_0001
If the server that receives the session message is able to start an update session, an acceptance message is returned that echoes back the session open request and reports that the server is ready to begin the session. The message looks like this: k=ACK;o=967230863;i=10.4.1.18;e=12;p=20550 If the server that receives this message is already in session, or the UNIX fork function caU faUs, the server rejects the session by a message in the foUowing format that foUows to the sending server: k=NAK;o=967230863;i=10.4.1.18;e=12;p=20550, with the fields described in Table 11.
Figure imgf000044_0002
An acceptance (k=ACK) message is foUowed immediately by the start of transmission header message. The message is in the foUowing format: x=STX;o=967230863;i=10.4.1.18;e=14;p=20550, with the fields described in Table 12.
Figure imgf000045_0001
Then the sending server sends a copy of each registration to the receiving host: r=ST4;e=14; h=cpci_l .techcontrol.com;i=10.4.1.32;ρ=20806;o=967230863 The fields in the registration message are described in Table 13.
Figure imgf000045_0002
The receiving server can interrupt the flow when the counts are equal, as foUows: k=CAN;o=967230863;i=10.4.1.18;e=12;ρ=20550 with the fields described in Table 14.
Figure imgf000046_0001
The data stored by the sleedns server is preferably kept in shared memory so that it can survive the coUapse and restart of the server process.
The SLEE DNS Server makes two clones of itself at initiahzation time by caUing the UNLX system function fork. The original executable and each of the forked processes is referred to as a thread. The main thread is the original executable that is launched by the operating system and is responsible for: (1) initiahzing what has to be present in all threads, (2) forking the two chUd tasks, (3) receiving all messages over the UDP socket, (4) processing registrations, deregistration requests, and queries, (5) multicasting the synchronization messages to other servers, and (6) setting the canceUation flag to end a session for the download session thread.
The heartbeat thread is in a constant loop that waits for the amount of time in the configuration file, and then multicasts the heartbeat message.
The count rectification session thread sends a copy of each registration entry to the server that requested to see aU the registrations. Its loop is controUed by the canceUation flag that may be set by the main thread.
The state machine that governs the receiving end of the count rectification is shown in Table
15.
Figure imgf000047_0001
The state machine for sending instances of sleedns is shown in Table 16.
Figure imgf000047_0002
Figure imgf000048_0001
The SLEE DNS servers provide the advantage of aUowing for a software architecture that is infinitely scalable and fuUy distributed. Referring to Fig. 9, Node A 160a includes caU control and device control 162, and a finite state machine 164 that controls the appHcation. Above the finite state machine are the DNS Hbraries 166 that aUow access to the States 168a, 168b, 168c and SLBs 170a, 170b, 170c that are distributed across the network. The DNS servers 172a (on Node A 160a), 172b (on Node B 160b), 172c (on Node C 160c) keep each other synchronized so that the server 172a on Node A is aware of the existence of the States 168b, 168c and SLBs 170b, 170c on the other nodes. The messaging Hbraries allow the appHcation on Node A to execute States and SLBs on the other nodes, e.g., Nodes B and C. The other nodes can be within the same network segment, on different network segments, or even on different continents.
SLEE Library
Rather than forcing the appHcation to learn the details of using the SLEE DNS server, the sleelib, a group of Hbrary functions, is provided to make the interface relatively clean and easy. The Hbrary is preferably written in C. AppHcations and appHcation elements that use the Hbrary include specific headers files and Urik sleelϊb.o into their programs.
The Hbrary assumes the use of IP4 multicasting between network nodes so that new nodes can come on the network without being specifically known to the UN X network configuration files. Preferably, the sleedns and sleeport modules are running on the local computer in order to permit the Hbrary to function properly.
Referring now to Fig. 10, the three basic appHcation elements that the Hbrary accommodates are shown: a finite state machine (FSM) 180, a state process 182, and a SLB 184. The finite state machine 180 is on the left with sleelib 186 Hnked in. The notation "FSMz" means "some (z) finite state machine". The state process 182 is in the middle with sleelib 186 Hnked in. The notation "StateN" means "some (N) state". The SLB is on the right with sleelib 186 linked in. The notation "SLBx" means "some (x) SLB". It is noted that the finite state machine 180, the state process 182, and the SLB 184 are each independent processes rather than threads.
The FSM 180 calls sleelnit during its initiaUzation phase. After that, the FSM 180 performs whatever processing is required. When a transition occurs from one state to another, the FSM 180 sends a message to the state 182 that should do the processing by caUing sleeSend. The FSM is free to continue processing whUe waiting for a response, or it can immediately caU sleeRecv to block for a response. A loop is provided in the FSM that wiU lead from the bottom to the top. It is, of course, not necessary for the appHcation on the left to be a finite state machine.
The state 182 caUs sleelnit during its initiaUzation phase. Although it is typical for the state to do Httle processing before waiting for input from the FSM (or some other appHcation), it is avaUable for processing. Eventually, the state waits for input from some other source by caUing sleeRecv. When the input arrives, the state 182 processes the input as required. EventuaUy, the state caUs sleeReply to send synchronizing information back to the FSM that sent the input. In the example shown in the Fig. 10, the state makes a caU to SLB for some processing. The sending of the data is accompHshed by caUing sleeSubmit, and the response is read by caUing sleeRead. It is not necessary for every state to call another appHcation element (SLB). Fig. 10 merely iUustrates that there is a secondary method to send data to another entity and a mechanism to receive an expected reply that wiU not be interleaved with other forms of input.
The SLB 184 process is substantiaUy a repHca of the state process 182, except it is simplified. The SLB caUs sleelnit during its initiaUzation phase. After that, the SLB receives input by calHng sleeRecv, and it sends responses back to the sender by calling sleeReply.
For the FSM 180, the standard flow is sleelnit, sleeSend, sleeRecv. For the state 182, the standard flow is sleelnit, sleeRecv, optional caUs to sleeSubmit and sleeRead, and then sleeReply. The state may then send to another state or to another SLB for additional processing. For the SLB 184, the standard flow is sleelnit, sleeRecv, sleeReply. The SLB may use sleeSubmit and sleeRead to send data to another state or another SLB for processing. Neither the state nor the SLB must reply. Of course, if the sender of the input is blocked on a reply, the state or the SLB could leave a process blocked on a sleeRecv or sleeRead forever. The effects on the robustness of the system are easy to predict. If the FSM has aU of its states contained within itself, there is no need to caU sleelnit, sleeSend, or sleeRecv. A similar statement hold true for the state and the SLB. Note that the FSM, the state, and the SLB are not "aware" that there is UDP messaging that leaves the elements loosely coupled. The FSM, the state, and the SLB could each be located on a different computer, and there are no geographical boundaries on the data. It is not necessary for what is shown as a finite state machine to be a finite state machine. Any type of application will do. It is not necessary for the state process to implement a "state" for a finite state machine. It is not necessary for the SLB to be in the picture. The iUustration means to show a typical usage.
The sleelnit function initiaUzes the SLEE DNS environment on behalf of an appHcation. The function binds two UDP sockets for Hstening, and creates a UDP socket for communicating with the SLEE DNS server.
The sleeSend function sends the contents of sendbuf to the process registered as the "destination". The sleeSend function keeps a table of recently used addresses so that it is not necessary to do a SLEE DNS look up for each message. The sleeSend function sends sendlen bytes of data. The function will time out in some combination of seconds seconds and usec microseconds. If both seconds and usecs are zero, there wiU be no time out, and the function wiU block until the send wiU succeed or faU at the kernel level.
The sleeReply function provides a way for an appHcation element to return data and/or control to the appHcation element that sent the sleeReply function data for processing. A response can be received without interfering with the main sleeRecv/sleeReply loop. AppHcation elements that want to send to another appHcation element (Hke a subroutine) caU sleeSubmit and then receive a response by calling sleeRead. The sleeSubmit function has the responsibUity to query the SLEE DNS to look up the host, LP address, and port for the named element, and to send the UDP message to that port on that host. The sleeSubmit function keeps a table of recently used addresses so that it is not necessary to do a SLEE DNS look up for each message. The sleeRead function reads for an incoming reply to a message previously sent by calling sleeSubmit.
The call processing language (CPL) of the SLEE implements EO/AT Class 5 services on the SX. Each conventional Class 5 feature is dissected into a sequence of atomic functions. Analysis of Class 5 services is used to create a transition table which maps each transition in a caU sequence to a basic (or atomic) function (SLB) that performs a specific feature interaction. The caU processing language (CPL) then generates a caU state transition table, which is implemented in the SX BCP function. Upon initialization, the BCP loads the caU state transition table into memory and uses it to determine which, if any, SLB gets called during call processing when a caU transitions into a new state (e.g., idle/nuU to off-hook).
The overall control of the execution of the SLBs resides within clearly defined finite state machines (FSMs) which, similar to the caU state transition tables, are generated by the CPL and loaded into the SX BCP. The FSMs for the originating and terminating sides of a caU are defined by the LTU, as foUows.
When the caUing party initiates a caU, the SX BCP, which emulates an EO/AT switching exchange, starts the originating basic call state model (O-BCSM) process. The O-BCSM models the caUer Hfting the receiver, dialing a number, and making a call. The O-BCSM states are enumerated as foUows:
O_Null: caU does not exist
Auth_Orig_Attempt: detects that someone wishes to make a caU
CoUect_Lnfo: diaHng string is coUected from the diahng party
Analyzejfofo: complete string is translated into a routing address
Select_Route: actual physical route is selected
Auth_CaU_Setup: relevant caU type restrictions are examined
Send_CaU: control of the caU is transferred to the terminating basic call state model
(T_BCSM) object O_Alerting: waiting for caUed party to answer O _Active: active conversation O_Disconnect: a disconnect message is received from the T_BCSM O_Suspended: a suspend indication is received from the TJBCSM O_Reanswer: party picks up receiver after placing it down momentarily O_Exception: cleanup, Hne releases, appropriate messages. O_MidCaU: signaHng action by caUing party (hook flash); interruption O_Abandon: caUing party hangs up before the call becomes active
The terminating basic call state model (T-BCSM) models the called party receiving a caU. The T-BCSM states are enumerated as follows:
T_Null: call does not exist
Authorize_Terrnination_Attempt: caU is verified if to be passed to the terminating party
Select_FaciUty: terminating resource is selected
Present_Call: call is presented
T_Alerting: caUed party is alerted via ringing (timed activity)
T_Active: caU enters active state
T_Disconnects: called party disconnects
TJBxception: cleanup, Hne releases, appropriate messages
T_MidCall: signaling action by called party (hook flash); interruption.
T_Abandon: abandon message from O_BCSM.
Referring to Fig. 11, in order to emulate EO/AT stored program switching functions and process a high volume of caUs within tight delay constraints, the caU states and the events that cause transitions between them need to be made avaUable to the SLEE 34. In addition, the caU finite state machines are located close to the persistent call data, which resides within the domain of the SX 14. A tight coupHng between the SLEE 34 and the SX connection control domain is made in the basic caU process function (BCP) 20. The BCP 20 loads the caU finite state machines (O-BCSM 190 and T-BCSM 192) and respective transition tables 194, 196 into memory and uses them to perform caU control and determine which SLB 198a, 198b, 198c, . . ., 190a, 190b, 190c, . . ., if any, gets caUed when a call transitions into a new state. Each state has at least two outcomes, success and failure. The outcome triggers the process to the next state.
The protocol for data interaction between the SLEE state module and the finite state machines is as foUows:
Figure imgf000053_0001
The data types of the above fields are defined to be ANSI C data types and are Hsted below: Data LD char
Length of Data Field char
Data Field Description char Payload as described in Tables 17 and 18.
Figure imgf000053_0002
Figure imgf000053_0003
Figure imgf000054_0001
An initiaUzation function, sleeParmsInitO, aUows the initialization of the buffer that wiU be used to send the packet data. The functions that are used to assemble and disassemble the UDP packets are sleeParmsAddO and sleeParmsGetO, respectively. In order to release any buffers that may be dynamicaUy allocated within the course of usage of the above routines, a clean up routine has also been implemented caUed sleeParmCleanO. These functions do not send or receive any data, but rather are data placeholders permitting other routines ready access to the packet information. The functions are made avaUable to both the finite state machine (FSM) as weU as directly within the SLEE and are designed to be re-entrant capable.
sleeParmsInitO
The buffer that wiU be used to hold the packet being built wUl be initiaHzed in this routine. The entire buffer wiU be initiaHzed to nuU characters for the sake of simpHcity. The record counter that is kept to track the number of records being added to the buffer is also initiaHzed as weU as aU pointers that are being used within the SLEE Parameter functions. sleeParmsAddO
This function is used to assemble information that needs to be communicated to other processes. This assembly is callable multiple times so that multiple records can be added to a send buffer used to hold all of the packet data. The number of records added to the packet are kept track of so that the number may be added to the top of the send buffer. The function also contains standard error checking to validate information coming into the function and to send back the appropriate return values for the calHng routine to evaluate.
sleeParmsGetO
This function is used to dissect aU of the information within the UDP packet that has already been received and returns the information to the calling routine one record at a time. Each subsequent caU to the function returns the next record available within the packet. This is done through the parameter list of the function. The function also contains standard error checking to validate the integrity of the packet being dissected and to send back the appropriate return values for the calling routine to evaluate.
sleeParmsCleanO
This function cleans up all the sleeParm functions described above. The function is placed in the function sleeCleanO (SLEE Library) and is responsible for the freeing of aUocated memory and all other general clean-up that may be needed.
From the foregoing, it wiU be appreciated that the SLEE can operate in two modes: Mode 1, Loosely Coupled SLEE, or Mode 2, Tightly Coupled SLEE. From the perspective of a single Softswitch, it is possible to implement one SLEE operating in Mode 2 and one or more SLEEs operating in Mode 1. Furthermore, from a network perspective it is possible to implement a plurahty of SLEE in either mode of operation.
When describing appHcations for the Decoupled Telecommunications System, there are two broad classifications, Network AppHcations and User AppHcations. An example of a Network appHcation is broadband access. Broadband access is a superset of functionaHties that embody all of the essential capabiUties of a Class 5 SPCS (EO/AT) in the PSTN such that the User cannot distinguish between their Class 5 service deHvered through a Decoupled Telecommunications System versus a Class 5 SPCS in the PSTN.
To achieve functional equivalence to the Class 5 SPCS in a Decoupled Telecommunications System, an equivalent state machine is created through the SLEE CPL and then mobiHzed into the Softswitch. This state machine combines the Originating and Terminating basic call state machines specified by the ITU for CapabiHty Set 2. The SLEE function which implements this composite state machine is the Basic CaU Process (BCP). The BCP is a speciahzed implementation of the AppHcation Services Interworking Layer. The BCP is a byproduct of the SLEE operating in mode 2. The BCP function facUitates tightly coupled interaction between the SLEE and the Softswitch. The BCP is the 'gearbox', subject to the previous analogy. SLEE mode 2 is the appropriate operational mode for the broadband access network appHcation because it incorporates user services which are subject to the 'delay budget'.
An example of a User application is Unified Messaging (UM). Although UM is a relatively complex appHcation, it mainly involves repeated request/response pairs of user interactions where moderate delays are acceptable. SLEE mode 1 is the appropriate operational mode for the UM appHcation because the delay budget is not an issue and the appHcation generaUy involves lengthy interactive sessions between the SLEE and other distributed AppHcation Server elements including media servers, messaging servers and web servers using protocols that are not typically supported in a Softswitch.
There have been described and iUustrated herein an embodiments of methods and systems for providing integration between PSTN and LP networks. While particular embodiments of the invention have been described, it is not intended that the invention be limited thereto, as it is intended that the invention be as broad in scope as the art wiU aUow and that the specification be read likewise. Thus, while particular files, modules, threads, parameters, etc. have been disclosed by name and with a particular implementation, it wiU be appreciated that other files, modules, threads, parameters, etc., with different names and implemented in different manner, yet provide the same functionaUty, may be used as well. In addition, while particular elements have been described as preferably being implemented in hardware and other in software, it wiU be appreciated that hardware elements may be implemented in software and software elements may be implemented in hardware. Most significantly, whUe the invention has been described with respect to an IP network, it wiU be appreciated that virtuaUy any packet network may be used in Heu of an LP network. It wiU therefore be appreciated by those skilled in the art that yet other modifications could be made to the provided invention without deviating from its spirit and scope as claimed.

Claims

Claims:
1. In a telecommunications network Hnking a PSTN and a packet network, a service level executable environment comprising: a) a scripting language; b) a compiler means for compihng scripts written with said scripting language into executables; c) a plurahty of dynamicaUy loaded shared Hbraries, wherein said plurality of dynamicaUy loaded shared libraries are distributed over the LP network and executables can utilize dynamicaUy loaded shared libraries from different locations in the IP network.
2. A service level executable environment according to claim 1, further comprising: d) a domain name server, wherein said plurality of dynamicaUy loaded shared Hbraries are located by said domain name server.
3. A service level executable environment according to claim 1, wherein: said dynamicaUy loaded shared libraries includes a plurality of system independent building blocks.
4. A service level executable environment according to claim 1, wherein: said scripting language permits one executable to cause another executable to be executed.
5. A service level executable environment according to claim 1, further comprising: d) a plurality of executables located at different locations in the packet network.
6. A service level executable environment according to claim 5, wherein: one of said executables at one location in the packet network includes means for causing another of said executables at another location in the packet network to be executed.
7. A method for distributing services over a packet network linked to a PSTN: a) distributing a plurality of dynamicaUy loaded shared libraries over the packet network; b) using a scripting language to write telecommunication function scripts which call dynamically loaded shared libraries from different location on the packet network; and c) comptiing the scripts into executables.
8. A caU processing language (CPL) for use with a service level execution environment (SLEE) in a service creation switch, the SLEE having a plurahty of levels, and the switch coupled to a media gateway, said CPL for creating caU service functions to be provided by the switch to the media gateway, said CPL comprising: a scripting means for creating scripts, said scripts to be executed in the SLEE, said scripting means including, i) means for indicating a layer of the SLEE in which the script is to be run; and ii) means for one script executing another script.
9. A call processing language according to claim 8, wherein: said other script is run at least partiaUy in paraUel with said one script.
10. A call processing language according to claim 8, wherein: said scripts include means for prompting.
11. A caU processing language according to claim 8, wherein: said scripts include buffers.
PCT/US2001/004450 2000-02-11 2001-02-09 Service level executable environment for integrated pstn and ip networks and call processing language therefor WO2001059999A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
AU2001238153A AU2001238153A1 (en) 2000-02-11 2001-02-09 Service level executable environment for integrated pstn and ip networks and call processing language therefor
US10/181,831 US7934206B2 (en) 2000-02-11 2001-02-09 Service level executable environment for integrated PSTN and IP networks and call processing language therefor
CA2399720A CA2399720C (en) 2000-02-11 2001-02-09 Service level executable environment for integrated pstn and ip networks and call processing language therefor
US13/092,444 US20110194556A1 (en) 2000-02-11 2011-04-22 Service Level Executable Environment for Integrated PSTN and IP Networks and Call Processing Language Therefor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US18211100P 2000-02-11 2000-02-11
US60/182,111 2000-02-11

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/092,444 Division US20110194556A1 (en) 2000-02-11 2011-04-22 Service Level Executable Environment for Integrated PSTN and IP Networks and Call Processing Language Therefor

Publications (1)

Publication Number Publication Date
WO2001059999A1 true WO2001059999A1 (en) 2001-08-16

Family

ID=22667102

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/004450 WO2001059999A1 (en) 2000-02-11 2001-02-09 Service level executable environment for integrated pstn and ip networks and call processing language therefor

Country Status (4)

Country Link
US (2) US7934206B2 (en)
AU (1) AU2001238153A1 (en)
CA (1) CA2399720C (en)
WO (1) WO2001059999A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003053074A1 (en) * 2001-12-17 2003-06-26 Siemens Aktiengesellschaft Method for providing pstn/isdn services in next generation networks
WO2011107997A1 (en) * 2010-03-04 2011-09-09 Parthasarathy Ramasamy Alternate structure with improved technologies for computer communications and data transfers
CN102323772A (en) * 2010-04-05 2012-01-18 微软公司 State machine with the database operation symbol is expressed

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6041109A (en) * 1995-12-29 2000-03-21 Mci Communications Corporation Telecommunications system having separate switch intelligence and switch fabric
US6104802A (en) 1997-02-10 2000-08-15 Genesys Telecommunications Laboratories, Inc. In-band signaling for routing
US7031442B1 (en) 1997-02-10 2006-04-18 Genesys Telecommunications Laboratories, Inc. Methods and apparatus for personal routing in computer-simulated telephony
US6711611B2 (en) 1998-09-11 2004-03-23 Genesis Telecommunications Laboratories, Inc. Method and apparatus for data-linking a mobile knowledge worker to home communication-center infrastructure
US6985943B2 (en) 1998-09-11 2006-01-10 Genesys Telecommunications Laboratories, Inc. Method and apparatus for extended management of state and interaction of a remote knowledge worker from a contact center
US6418461B1 (en) 1997-10-06 2002-07-09 Mci Communications Corporation Intelligent call switching node in an intelligent distributed network architecture
USRE46528E1 (en) 1997-11-14 2017-08-29 Genesys Telecommunications Laboratories, Inc. Implementation of call-center outbound dialing capability at a telephony network level
US7907598B2 (en) 1998-02-17 2011-03-15 Genesys Telecommunication Laboratories, Inc. Method for implementing and executing communication center routing strategies represented in extensible markup language
USRE46153E1 (en) 1998-09-11 2016-09-20 Genesys Telecommunications Laboratories, Inc. Method and apparatus enabling voice-based management of state and interaction of a remote knowledge worker in a contact center environment
US7075914B2 (en) * 2000-05-08 2006-07-11 Microtune (San Diego), Inc. Software modem architecture
WO2002019732A1 (en) * 2000-09-01 2002-03-07 Nokia Corporation Architecture for service script execution and management
US8019587B1 (en) * 2000-09-06 2011-09-13 Ciscotechnology, Inc. Software upgrade of redundant network components
FR2815213B1 (en) * 2000-10-05 2004-09-24 Cit Alcatel TELECOMMUNICATION EQUIPMENT FOR MIGRATION OF CALL CONTROL
US6839342B1 (en) * 2000-10-09 2005-01-04 General Bandwidth Inc. System and method for interfacing signaling information and voice traffic
US7123708B1 (en) * 2001-03-01 2006-10-17 Nt Investors, Inc. Neutral tandem telecommunications network providing transiting, terminating, and advanced traffic routing services to public and private carrier networks
US7307963B2 (en) * 2001-08-03 2007-12-11 At&T Corp. Architecture and method for using IEEE 802.11-like wireless LAN system to emulate private land mobile radio system (PLMRS) radio service
US7738407B2 (en) * 2001-08-03 2010-06-15 At&T Intellectual Property Ii, L.P. Method and apparatus for delivering IPP2T (IP-push-to-talk) wireless LAN mobile radio service
GB0124261D0 (en) * 2001-10-09 2001-11-28 Nokia Corp Event related communications
CN100352304C (en) * 2001-11-29 2007-11-28 Sk电信有限公司 Method for controlling data of base station
US7069546B2 (en) * 2001-12-03 2006-06-27 Corrigent Systems Ltd. Generic framework for embedded software development
US7286545B1 (en) * 2002-03-26 2007-10-23 Nortel Networks Limited Service broker
US6876727B2 (en) 2002-07-24 2005-04-05 Sbc Properties, Lp Voice over IP method for developing interactive voice response system
US7440464B2 (en) * 2002-08-29 2008-10-21 Nokia Corporation Server control plane connections recovery in a server-gateway architecture based telecommunication network
US6807266B2 (en) * 2002-08-30 2004-10-19 3Com Corporation Method and apparatus for provisioning a soft switch
CA2400548A1 (en) * 2002-08-30 2004-02-29 Catena Networks Canada Inc. Call control system for the dynamic migration of subscribers from legacy access networks to next-generation packet networks
US8305926B2 (en) 2002-09-04 2012-11-06 At&T Intellectual Property Ii, L.P. Method and apparatus for self-learning of call routing information
US20040133627A1 (en) * 2003-01-07 2004-07-08 Raghuraman Kalyanaraman Communication system, a computer program code embodying in the communication system and methods of operating the same
KR100489686B1 (en) * 2003-01-08 2005-05-17 삼성전자주식회사 Method for processing event of softswitch
US7911994B2 (en) * 2003-02-28 2011-03-22 Openwave Systems Inc. Confirmation of delivery of content to an HTTP/TCP device
US20050097512A1 (en) * 2003-10-30 2005-05-05 Vangilder James H. Telecommunications service program
US7412045B2 (en) * 2003-10-30 2008-08-12 Hewlett-Packard Development Company, L.P. Telecommunications service program
US8363637B2 (en) * 2004-06-30 2013-01-29 Movius Interactive Inc. Telephony protocol server and telephony protocol client in a distributed IP architecture telecommunications system
US7701929B2 (en) 2004-06-30 2010-04-20 Movius Interactive Distributed telecommunications architecture providing redundant gateways and IP device integration
US20060002403A1 (en) * 2004-06-30 2006-01-05 Glenayre Electronics, Inc. Distributed IP architecture for telecommunications system
US20060050856A1 (en) * 2004-09-03 2006-03-09 Pence Jeffrey W Computer telephony server for scripted call termination
US8102988B2 (en) * 2004-10-20 2012-01-24 Neutral Tandem, Inc. Method and system for dynamically terminating wireless and wireline calls between carriers
US20060153068A1 (en) * 2004-12-17 2006-07-13 Ubiquity Software Corporation Systems and methods providing high availability for distributed systems
EP1701474A1 (en) * 2005-03-09 2006-09-13 Siemens Aktiengesellschaft Monitoring system for a communication network for unambiguous detection of the destruction of a network element
US20060268729A1 (en) * 2005-05-27 2006-11-30 Alcatel Methods and apparatus for monitoring link integrity for signaling traffic over a path traversing hybrid ATM/Ethernet infrastructure in support of packet voice service provisioning
US9008075B2 (en) 2005-12-22 2015-04-14 Genesys Telecommunications Laboratories, Inc. System and methods for improving interaction routing performance
EP1947800B1 (en) * 2007-01-19 2009-11-18 Alcatel Lucent Broadcast of service information to user equipments connected to a PSTN, using NGN infrastructure
WO2008105032A1 (en) * 2007-02-28 2008-09-04 Fujitsu Limited Communication method for system comprising client device and plural server devices, its communication program, client device, and server device
CN101304605B (en) * 2007-05-10 2011-06-22 中兴通讯股份有限公司 Method for implementing reanswer call
US8447039B2 (en) * 2007-09-26 2013-05-21 Cisco Technology, Inc. Active-active hierarchical key servers
US20090138296A1 (en) * 2007-11-27 2009-05-28 Ebay Inc. Context-based realtime advertising
US8516435B2 (en) * 2008-06-19 2013-08-20 International Business Machines Corporation System and method for generating implementation artifacts for contextually-aware business applications
CN101727345B (en) * 2008-10-29 2013-09-04 国际商业机器公司 Method and system for controlling loading state of dynamic link library DLL
US8374169B2 (en) * 2009-01-26 2013-02-12 Mitel Networks Corporation System and method for transition of association between communication devices
US20110010690A1 (en) * 2009-07-07 2011-01-13 Howard Robert S System and Method of Automatically Transforming Serial Streaming Programs Into Parallel Streaming Programs
US20110179304A1 (en) * 2010-01-15 2011-07-21 Incontact, Inc. Systems and methods for multi-tenancy in contact handling systems
EP2594051B1 (en) * 2010-07-13 2014-05-21 Telefonaktiebolaget LM Ericsson (publ) Systems and methods recovering from the failure of a server load balancer
CN103004230A (en) * 2010-07-16 2013-03-27 阿尔卡特朗讯公司 Control capabilities for information recording sessions
CN102437998B (en) * 2010-09-29 2015-11-25 中兴通讯股份有限公司 Application store system and the method using this application store system to develop
EP3886418A1 (en) * 2010-11-19 2021-09-29 Sunduka Oy A communication method and a communication system for tailored mobile communication
US10033612B2 (en) 2011-04-01 2018-07-24 Voapps, Inc. Adaptive signaling for network performance measurement, access, and control
US9774486B2 (en) * 2013-02-28 2017-09-26 Level 3 Communications, Llc Registration of SIP-based communications in a hosted VoIP network
US9015679B2 (en) 2013-07-16 2015-04-21 Sap Se System and method for translating business application functions into DBMS internal programming language procedures
US9256660B2 (en) * 2013-08-06 2016-02-09 Telefonaktiebolaget L M Ericsson (Publ) Reconciliation protocol after ICR switchover during bulk sync
GB2519220B (en) * 2013-08-30 2020-11-25 Metaswitch Networks Ltd Apparatus, methods, computer software and computer program products for telecommunications service migration
US9229674B2 (en) 2014-01-31 2016-01-05 Ebay Inc. 3D printing: marketplace with federated access to printers
US9595037B2 (en) 2014-12-16 2017-03-14 Ebay Inc. Digital rights and integrity management in three-dimensional (3D) printing
CN106709336A (en) * 2015-11-18 2017-05-24 腾讯科技(深圳)有限公司 Method and apparatus for identifying malware
WO2017165883A1 (en) 2016-03-25 2017-09-28 Voapps, Inc. Adaptive signaling for network performance measurement, access, and control
CN107580152B (en) * 2017-09-19 2023-05-19 贵阳朗玛信息技术股份有限公司 Voice value-added service system and communication method thereof
WO2020014569A1 (en) 2018-07-12 2020-01-16 Ribbon Communications Predictive scoring based on key performance indicators in telecommunications system
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568487A (en) * 1993-11-30 1996-10-22 Bull, S.A. Process for automatic conversion for porting telecommunications applications from the TCP/IP network to the OSI-CO network, and module used in this process
US5961586A (en) * 1997-05-14 1999-10-05 Citrix Systems, Inc. System and method for remotely executing an interpretive language application

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4788718A (en) 1987-10-05 1988-11-29 American Telephone And Telegraph Company, At & T Laboratories Call data collection and modification of received call distribution
US5515425A (en) 1993-01-19 1996-05-07 At&T Corp. Telecommunications system with active database
US5590180A (en) 1993-09-30 1996-12-31 Hitachi, Ltd. Communication method of supplying information in intelligent network and apparatus therefor
US5469500A (en) * 1993-11-12 1995-11-21 Voiceplex Corporation Method and apparatus for delivering calling services
US5703940A (en) * 1993-11-12 1997-12-30 Intervoice, Inc. Method and apparatus for delivering calling services
JPH07264287A (en) * 1994-03-18 1995-10-13 Fujitsu Ltd Communication system integrating intelligent network and telecommunications management network
AU2264195A (en) * 1994-04-21 1995-11-16 British Telecommunications Public Limited Company Service creation apparatus for a communications network
US6031840A (en) 1995-12-07 2000-02-29 Sprint Communications Co. L.P. Telecommunications system
EP0767940B1 (en) * 1994-06-30 2000-03-08 Intel Corporation Data pre-fetch for script-based multimedia systems
KR100338575B1 (en) * 1994-08-04 2002-07-18 내쉬 로저 윌리엄 Intelligent communications networks
US5537466A (en) * 1994-08-04 1996-07-16 British Telecommunications, Plc. Intelligent communications networks
JP3089316B2 (en) 1994-11-09 2000-09-18 日本電信電話株式会社 Data aggregation method and data aggregation system
KR0173052B1 (en) 1994-12-20 1999-03-30 양승택 Discount ration processing method of information fee
US5706286A (en) 1995-04-19 1998-01-06 Mci Communications Corporation SS7 gateway
US5687223A (en) 1995-05-10 1997-11-11 Mci Corporation Method for acquiring statistics in a telephone network employing flexibly changeable rules
US5799073A (en) 1995-06-07 1998-08-25 Southwestern Bell Technology Resources, Inc. Apparatus and method for recording call related data
US5764740A (en) 1995-07-14 1998-06-09 Telefonaktiebolaget Lm Ericsson System and method for optimal logical network capacity dimensioning with broadband traffic
US5727051A (en) 1995-07-14 1998-03-10 Telefonaktiebolaget Lm Ericsson (Publ.) System and method for adaptive routing on a virtual path broadband network
DE69626127T2 (en) * 1995-11-02 2003-10-23 British Telecomm Service generating device for a communication network and corresponding method
ATE311728T1 (en) * 1995-12-11 2005-12-15 Hewlett Packard Co METHOD FOR PROVIDING TELECOMMUNICATION SERVICES
WO1997022212A1 (en) * 1995-12-11 1997-06-19 Hewlett-Packard Company Method of accessing service resource items that are for use in a telecommunications system
DE69635386T2 (en) * 1995-12-11 2006-06-22 Hewlett-Packard Development Co., L.P., Houston Method for providing telecommunication services
GB9603582D0 (en) * 1996-02-20 1996-04-17 Hewlett Packard Co Method of accessing service resource items that are for use in a telecommunications system
US5732127A (en) 1995-12-21 1998-03-24 Erricson, Inc. Real-time network for distributed telecommunication accounting systems
US5712908A (en) 1995-12-22 1998-01-27 Unisys Corporation Apparatus and method for generating call duration billing records utilizing ISUP messages in the CCS/SS7 telecommunications network
US5754634A (en) 1996-01-23 1998-05-19 Bell Atlantic Network Services, Inc. System and method for tracking and reporting incoming calls
EP0888585A1 (en) * 1996-03-19 1999-01-07 Massachusetts Institute Of Technology Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
US6069890A (en) 1996-06-26 2000-05-30 Bell Atlantic Network Services, Inc. Internet telephone service
US6335927B1 (en) * 1996-11-18 2002-01-01 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
US6754181B1 (en) * 1996-11-18 2004-06-22 Mci Communications Corporation System and method for a directory service supporting a hybrid communication system architecture
KR100250996B1 (en) 1996-12-18 2000-04-15 이계철 Method for extracting call set-up failure and premature disconnect probability using communication network data
US5954829A (en) * 1996-12-30 1999-09-21 Mci Communications Corporation System, method, and computer program product for digital cross connect testing
EP1235415A3 (en) * 1997-02-20 2006-01-04 Hewlett-Packard Company, A Delaware Corporation Provision of telecommunication services
US5912954A (en) 1997-02-28 1999-06-15 Alcatel Usa Sourcing, L.P. Method and system for providing billing information in a telecommunications network
US6381650B1 (en) * 1997-03-10 2002-04-30 Palm, Inc. Method for finding the address of a workstation assigned a dynamic address
US5991803A (en) * 1997-03-28 1999-11-23 Telefonaktiebolaget Lm Ericsson (Publ) Decoupling service creation environment from service logic execution environment
US6351646B1 (en) * 1997-06-23 2002-02-26 Telefonaktiebolaget Lm Ericsson Software HLR architecture
US7184430B2 (en) * 1997-06-30 2007-02-27 Siemens Communications, Inc. Telecommunication system
US6173437B1 (en) 1997-07-24 2001-01-09 Intervoice Limited Partnership Multimedia scripting tool
US6163836A (en) * 1997-08-01 2000-12-19 Micron Technology, Inc. Processor with programmable addressing modes
US5991377A (en) 1997-08-11 1999-11-23 Bellsouth Intellectual Property Corporation System and method for manipulating data fields in a call structure for synchronizing billing information and retaining original calling party information
US5937035A (en) 1997-09-15 1999-08-10 Lucent Technologies Inc. Interswitch telephone status monitoring
US6393481B1 (en) * 1997-10-06 2002-05-21 Worldcom, Inc. Method and apparatus for providing real-time call processing services in an intelligent network
US6425005B1 (en) * 1997-10-06 2002-07-23 Mci Worldcom, Inc. Method and apparatus for managing local resources at service nodes in an intelligent network
US6594355B1 (en) * 1997-10-06 2003-07-15 Worldcom, Inc. Method and apparatus for providing real time execution of specific communications services in an intelligent network
US6418461B1 (en) * 1997-10-06 2002-07-09 Mci Communications Corporation Intelligent call switching node in an intelligent distributed network architecture
US6363411B1 (en) * 1998-08-05 2002-03-26 Mci Worldcom, Inc. Intelligent network
US6002754A (en) 1997-11-25 1999-12-14 International Business Machines Corp. Billing formatter for telephone systems utilizing intelligent peripherals in advanced intelligent network
US6006035A (en) * 1997-12-31 1999-12-21 Network Associates Method and system for custom computer software installation
US7137126B1 (en) * 1998-10-02 2006-11-14 International Business Machines Corporation Conversational computing via conversational virtual machine
US7047232B1 (en) * 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US6940847B1 (en) * 1999-01-15 2005-09-06 Telefonaktiebolaget Lm Ericsson (Publ) System and method for providing access to service nodes from entities disposed in an integrated telecommunications network
US6819667B1 (en) * 1999-08-05 2004-11-16 Lucent Technologies Inc. PSTN-internet notification services
WO2001022228A1 (en) * 1999-09-17 2001-03-29 Nortel Networks Limited System and method for producing a verification system for verifying procedure interfaces
US6708327B1 (en) * 1999-10-14 2004-03-16 Techonline, Inc. System for accessing and testing evaluation modules via a global computer network
US6701366B1 (en) * 1999-11-09 2004-03-02 Nortel Networks Corporation Providing communications services
US7509648B1 (en) * 2000-02-28 2009-03-24 At & T Corp. Paradigm in multimedia services creation methodology, and new service creation and service execution environments
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US6681386B1 (en) * 2000-05-22 2004-01-20 International Business Machines Corporation Method, system, and program for parameter expansion, generation, and execution of scripts in a networked environment
US7190773B1 (en) * 2001-02-27 2007-03-13 Verizon Data Services Inc. Device independent caller ID
US7007063B2 (en) * 2001-05-24 2006-02-28 International Business Machines Corporation Server side program interface to service logic execution environment
US6914969B2 (en) * 2001-06-18 2005-07-05 International Business Machines Corporation Service logic execution environment for telecommunications service components
US7072957B2 (en) * 2001-05-31 2006-07-04 International Business Machines Corporation Remote administration and monitoring of a service component in a service logic execution environment
US7003765B1 (en) * 2001-12-12 2006-02-21 Oracle International Corporation Computer-based pre-execution analysis and verification utility for shell scripts
US7240068B2 (en) * 2002-09-06 2007-07-03 Truetel Communications, Inc. Service logic execution environment (SLEE) that is running on a device, supporting a plurality of services and that is compliant with a telecommunications computing standard for SLEES
US7168064B2 (en) * 2003-03-25 2007-01-23 Electric Cloud, Inc. System and method for supplementing program builds with file usage information
US7215751B2 (en) * 2004-01-22 2007-05-08 International Business Machines Corporation System and method for processing caller information across heterogeneous networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568487A (en) * 1993-11-30 1996-10-22 Bull, S.A. Process for automatic conversion for porting telecommunications applications from the TCP/IP network to the OSI-CO network, and module used in this process
US5961586A (en) * 1997-05-14 1999-10-05 Citrix Systems, Inc. System and method for remotely executing an interpretive language application

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003053074A1 (en) * 2001-12-17 2003-06-26 Siemens Aktiengesellschaft Method for providing pstn/isdn services in next generation networks
US7599352B2 (en) 2001-12-17 2009-10-06 Nokia Siemens Networks Gmbh & Co. Kg Method for providing PSTN/ISDN services in next generation networks
WO2011107997A1 (en) * 2010-03-04 2011-09-09 Parthasarathy Ramasamy Alternate structure with improved technologies for computer communications and data transfers
CN102323772A (en) * 2010-04-05 2012-01-18 微软公司 State machine with the database operation symbol is expressed

Also Published As

Publication number Publication date
CA2399720A1 (en) 2001-08-16
AU2001238153A1 (en) 2001-08-20
US20030161296A1 (en) 2003-08-28
US7934206B2 (en) 2011-04-26
US20110194556A1 (en) 2011-08-11
CA2399720C (en) 2013-07-09

Similar Documents

Publication Publication Date Title
CA2399720C (en) Service level executable environment for integrated pstn and ip networks and call processing language therefor
CA2399715C (en) Methods and systems for creating, distributing and executing multimedia telecommunications applications over circuit and packet switched networks
US7707240B2 (en) Proxy for application server
US8467354B1 (en) Systems and methods for software-implemented telephony devices in a voice over internet protocol (VoIP) system
US7061923B2 (en) Method and apparatus for managing local resources at service nodes in an intelligent network
AU770505B2 (en) Method and apparatus for providing real-time call processing services in an intelligent network
CA2697058C (en) Dynamic routing of telephone calls to one out of a plurality of computer telephony servers comprising premises- and network-based servers
US6804711B1 (en) Method and apparatus for managing call processing services in an intelligent telecommunication network
US20020159439A1 (en) Dynamically downloading telecommunication call services
WO2001076205A1 (en) Telecommunications system and methods
WO2002030094A2 (en) Networked computer telephony system driven by web-based applications
US6785375B1 (en) Communications system
US6985480B2 (en) System, software and method for implementing an integrated, device independent, packet telephony framework software solution
Cisco Release Notes for the Cisco Media Gateway Controller Software Release 9.2(2)
Rosen VoIP gateways and the Megaco architecture
CA2313852A1 (en) Mobile agent-based service architecture for internet telephony and method of controlling service mobility
Solomonides The evolution of control architectures towards next generation networks
Wang Building value-added services using mobile agents in SIP based internet telephony
Escolme Migrating an IN services platform (SCP) to an IP-based applications platform
Perdikeas et al. An Intelligent Network Architecture for Internet-PSTN Service Interworking
Collins Service creation and deployment on an intelligent network
Guide et al. Media Gateway Control Protocol (MGCP) Version 1.0

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 10181831

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2399720

Country of ref document: CA

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP