WO2007134338A2 - Hitless application upgrade for sip server architecture - Google Patents

Hitless application upgrade for sip server architecture Download PDF

Info

Publication number
WO2007134338A2
WO2007134338A2 PCT/US2007/069021 US2007069021W WO2007134338A2 WO 2007134338 A2 WO2007134338 A2 WO 2007134338A2 US 2007069021 W US2007069021 W US 2007069021W WO 2007134338 A2 WO2007134338 A2 WO 2007134338A2
Authority
WO
WIPO (PCT)
Prior art keywords
application
server
version
sip
calls
Prior art date
Application number
PCT/US2007/069021
Other languages
French (fr)
Other versions
WO2007134338A3 (en
Inventor
Anno R. Langen
Rao Nasir Khan
Jaroslaw Wilkiewicz
Original Assignee
Bea Systems, 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
Priority claimed from US11/748,791 external-priority patent/US8112525B2/en
Priority claimed from US11/748,767 external-priority patent/US8171466B2/en
Application filed by Bea Systems, Inc. filed Critical Bea Systems, Inc.
Publication of WO2007134338A2 publication Critical patent/WO2007134338A2/en
Publication of WO2007134338A3 publication Critical patent/WO2007134338A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1063Application servers providing network services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54508Configuration, initialisation
    • H04Q3/54516Initialization, software or data downloading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54541Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme using multi-processor systems
    • H04Q3/54558Redundancy, stand-by

Definitions

  • the current invention relates generally to managing telecommunications and more particularly to upgrading applications within a network environment.
  • PSTN Public Switched Telephone 5 Networks
  • VoIP Voice Over Internet Protocol
  • FIGURE IA is an exemplar ⁇ ' i! lustration of a functional system layers in various embodiments.
  • FIGURE IB is another exemplary illustration of functional system layers in a 25 communications platform embodiment.
  • FIGURE ' 1 C is an exemplary illustration of a SIP server deployed in a production environment, in accordance with various embodiments,
  • FIGURE 2 is an exemplary illustration of the SlP server cluster architecture in accordance with various embodiments of the invention.
  • FIGURE 3 is an exemplary illustration of a near cache in the SIP server cluster architecture in accordance with various embodiments of the invention.
  • FIGURE 4A is an exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments
  • FIGURE 4B is another exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments.
  • FIGURE 4C is an exemplary flow diagram of rollback functionality of the hitless application upgrade, in accordance with various embodiments
  • FIGURE 5 is an exemplary illustration of a call flow in a typical SlP communication session, in accordance with various embodiments.
  • references to embodiments in this disclosure are not necessarily to the same embodiment, and such references mean at least one. While specific implementations are discussed, it is 15 understood that this is done for illustrative purposes only. A person skilled in the relevant ait will recognize that other components and configurations may be used without departing from the scope and spirit of the invention.
  • a SiP server can be comprised of an ensine tier and a state tier distributed on a cluster network environment
  • the en ⁇ me tier can include a set of engine nodes that send, receise and process various messages
  • the state tier can include a set of state tici replica nuclei that maintain in-memory state data associated with various SlP sessions Applications can be deployed and executed on the 5 engine tier
  • These applications can be adapted to process telecommunication sessions, data and calls such as ⁇ ia the SlP protocol Iu certain embodiments, an application ma ⁇ need to be upgraded or modified such as by re-compiling and re-deploj ing the application onto the engine tier in one embodiment, a new version of an application can be deplo>ed alongside an
  • FIGURE IA is an exemplary illustration of functional system layers in accordance with various embodiments Although this diagiam depicts components as logically separate, such depiction is merely for illustrative purposes It will be apparent to those skilled in the art that the components portrayed iu this figure can be arbitrarily combined
  • a Session Initiation Protocol (SIP) Server 102 and a Network Gatekeeper 104 can comprise a portfolio of products that coliectisely make up the Communications Piatfoim 100
  • the SIP Server 102 provides the Communications Platform 100 with a subsystem in which application components, that interact with S IP-based networks may be deployed
  • the Network Gatekeeper 104 pros ides a policy-driven telecommunications Web services
  • a variety of shared and re-usable software and service infrastructure components comprise the Communications Platform 100.
  • an Application Ser ⁇ er such as the WebLogicTM Application Server by BEA Systems, inc. of San Jose, California This Application Server may be augmented and adapted for deployment in telecommunications 5 networks, while providing many features and functionality of the WebLogic Server counterpart widely deployed in enterprise computing environments
  • Application Server embodiments for use in the telecommunications applications can ⁇ ro ⁇ ide a variety of additional features and functionality, such as without limitation;
  • HW/OS Generalized for wide range of target platforms
  • communications platform embodiments can provide a variety of additional features and functionality, sucli as without limitation.
  • Optimized for Telecom HW /OS /HAM W platforms support (SAF, ATCA, HA M 20 /W, etc.)
  • FIGURE I B is another exemplary illustration of functional system layers in a communications platform embodiment
  • this diagram depicts components as logically separate, such depiction is merely for illustrative purposes. It will be apparent to those skilled in the art that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firmware and/or hardware. Furthermore, it will be apparent to those skilled in the art that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firmware and/or hardware. Furthermore, it
  • Communications platform 100 comprises a SlP Server (WLSS) 102 and a Network Gatekeeper (WLNG) S 04.
  • Tools for interacting with Web Services such as a Web 5 Service - Universal Description Discovery Interface (WS/UDDI) 1 10, a Web Service - Business Process Execution Language (WS/BPEL) 112 may be coupled to the SIP Server 102 and the Network Gatekeeper 104 in embodiments.
  • a log/trace and database 1 14 can assist with troubleshooting.
  • the Communications Platform 100 can interface with an OSS/BSS system 120 via resource adapters 122. Such interfaces can be any interfaces.
  • a policy engine 128 can control the activities of the above-described components which can be implemented in a scalable cluster environment (SCE) 130
  • a Communications Platform embodiment can provide an open, high performance,
  • the Communications Platform is suitable k ⁇ use by £or Network Infrastructure Vendor, Network Operators and Communications Service Providers in multiple deployment scenarios ranging from fully IMS oriented network
  • 25 Providers an execution environment in which to host applications (such as the WebLogic Network Gatekeeper), components and standard service enablers.
  • applications such as the WebLogic Network Gatekeeper
  • components such as the WebLogic Network Gatekeeper
  • standard service enablers such as the WebLogic Network Gatekeeper
  • FIGURE IC is an exemplary illustration of a SlP server deployed in a production environment, in accordance, with various embodiments. Although this diagram depicts components as logically separate, such depiction is merely for illustrative purposes, it will
  • the SlP server 102 can be used as a back-to-back user agent 5 (B2BLJ A) 150 in a typical telecommunications environment.
  • B2BUA can take the place of an intermediary between communications between user agents 160, 16.2, including various cellular phones, wireless devices, laptops, computers, applications, and other components capable of communicating with one another electronically.
  • the B2BUA 150 can provide multiple advantages, including controlling the flow of communication
  • ⁇ 0 between user agents enabling different user agents to communicate with one another (e.g. a web application can communicate with a cellular phone), as well as various security advantages.
  • the user agents can transmit to the SIP server instead of communicating directly to each other and thus malicious users can be prevented from sending spam and viruses, hacking into other user agent devices, and otherwise
  • the SIP server 102 can be implemented as & Java Enterprise Edition application server that has been extended with support for the session initiation protocol (SIP) as well as other operational enhancements that allow it to meet tlie demanding requirements of the next generation protocol-based communication networks.
  • SIP session initiation protocol
  • SlP session initiation protocol
  • server 102 can include an Enterprise Java Beans (EJB) container 144, a Hyper Text Transfer Protocol (HTTP) servlet container 142, an SiP servlet container 140, various Java 2 Enterprise Edition (J2EE) services 146, and SlP 150 and HT TP 148 components.
  • EJB Enterprise Java Beans
  • HTTP Hyper Text Transfer Protocol
  • SiP SiP
  • J2EE Java 2 Enterprise Edition
  • SlP 150 and HT TP 148 components can be fully integrated into the SIP servlet container 140 and can offer much greater ease of use than a traditional protocol stack.
  • API Programming Interface
  • S ⁇ P serv ⁇ et API can define a higher layer of abstraction than simple protocol stacks provide and can thereby can free up the developer from concern about the mechanics of the S ⁇ P protocol itself. For example, the developer can be shielded from syntactic validation of received requests, handling of
  • the container is a server software that hosts applications (i e contains them), in the case of a SIP container, it hosts SiP applications.
  • the container can 5 perform a number of SIP functions as specified by the protocol thereby taking the burden off the applications.
  • the SlP container can expose the application to SIP protocol messages (via the SIP Servlet API) on which applications can perforin various actions Different applications can thus be coded and deployed to the container that provides various telecommunication and multimedia services,
  • FIGURE 2 is an exemplary illustration of the SIP server cluster architecture in accordance with various embodiments of the invention.
  • this diagram depicts components as logically separate, such depiction is merely for illustrative purposes. It will be apparent to those skilled iu the an that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firm ware and/or hardware.
  • FIGURE 2 shows Host A implementing both an engine node and a data node, this should not be
  • FIGURH 2 illustrates two host machines, it is possible and even advantageous to implement many more such hosts in order to take advantage of distribution, load balancing and failover that such a system can provide
  • a message such as a phone call request or some other transfer of data associated with SIP
  • a message can come into the cluster from the internet (such as over VoIP), phone, or some other type of network 200
  • This message can be received and handled by a load balancer 202 which can be responsible distributing message traffic across the engines ⁇ such as engine node 1 216 and engine node 2 208) in the cluster.
  • the load balancer can be
  • the load balancer can be implemented as software that distributes the messages to the various engines.
  • the primary goal of the load balancer 202 can be to provide a single public address that distributes 5 incoming SIP requests to available servers in the SIP server engine tier 210. Such distribution of requests can ensure that the SIP server engines are fully utilized.
  • the load balancer 202 can also be used for performing maintenance activities such as upgrading individual servers or applications without disrupting existing SIP clients.
  • the SIP server can provide a two-tier cluster architecture
  • a stateless engine tier 210 can process all signaling traffic and can also replicate transaction and session state to the state tier 212 and its partitions 222.
  • Each partition 222 can consist of any number of nodes (replicas) 218, 214 distributed across any number of hosts such as host 1 220 and host 2 204 which can be implemented as computers linked in a cluster type network
  • the state tier 212 can be an n ⁇ vvay peer-replicated Random Access Memory (RAM) store that maintains various data objects which can be accessed by the engine nodes in the engine tier.
  • RAM Random Access Memory
  • the state tier can also function as a lock manager where call state access follows a simple library book model (i.e. a call state can be checked out by one SlP engine at a time).
  • the engine tier 210 can be implemented as a cluster of S ⁇ P server instances that hosts the SfP servlets which provide various features to SIP clients.
  • SfP servlets which provide various features to SIP clients.
  • the engine tier 2 iO is stateless, meaning that most SIP session state information is not persisted in the engine tier, but is obtained by querying the state tier 212 which can in turn provide replication and fail over services for S ⁇ P session data.
  • the engine tier can have state maintained in a local near cache for improving latency.
  • the primary goal of the engine tier 210 can be to provide maximum throughput
  • the STP serv lets can be deplo) ed uniformly to ail server instances b> targeting the cluster itself and the load balance? need not maintain affimt ⁇ between SIP clients, and individual servers in the engine tier
  • the state tier 212 can be implemented as a cluster of SIP serv er instances that provides a high-performance, highly -available, in-memon store for maintaining and retrieving session state data for SIP servlets
  • This session data may be required by SlP applications in the SIP server engine tier 210 in order to process incoming messages
  • session data can be managed in one or more partitions
  • each partition manager a fixed portion of ⁇ he concurrent call state
  • the first partition could manage one half of the concurrent call state (e H A-M) and the second partition can manage the other half (e g Nf-/)
  • each can manage a third of the call state and so on Additional partitions can be added as needed to manage large numfaei of concurrent calls
  • each partition 222 multiple servers can be added to provide redundancy and iai lover should the olhct servers in the partition fail
  • those servers can be referred to as replicas because each server maintains a duplicate copy of the partition's call state l*or example, nodes 21 S and 214 of the partition 222 can be implemented as replicas
  • the data can be split evenly across a set of partitions, as prev iously discussed.
  • the number of ieplicas in the partition can be called the replication factor, since it determines the lc ⁇ cl of redundancy and strength of failov er that it provides For example, if one node goes down oi becomes disconnected from the network, any available replica can automatically provide call state
  • Replicas 214, 2 S 8 can join and leav e the partition 222 and each replica can serv e as exactly one partition at a time
  • the total available call state storage capaeif) of the cluster is a summation of ⁇ he capacities of each partition 222 hi one embodiment, each partition 222 can pccr-replicated, meaning that clients
  • I l architecture wherein one store acts as a primary and the other nodes serve as secondaries. Latency is reduced because there is no wait for the second hop of primary-secondary systems.
  • the peer-replicated scheme can provide better fai lover characteristics as well, since there does not need to be change propagation delay,
  • the engine nodes 208, 216 can he responsible for executing the call processing.
  • Each cai! can have a call state associated with it.
  • This call state can. contain various information associated with the call, such as the ids of the cailer/eallee, where the caller is, what application is running on the callee, any tinier objects that may need to fire in order to process the call flow (as discussed below), as well as any other data
  • ⁇ 0 that may correlate to a call or a message.
  • the state for each call can be contained in the state tier 212.
  • the engine tier 210 could be stateless in order to achieve the maximum performance. In alternative embodiments, however, the engine tier can have certain amounts of state data stored thereon at various times.
  • a typical message processing flow can involve locking/getting
  • the operations supported by the replicas for normal operations can include:
  • the engine tier can maintain mainly short lived objects and any long lived objects which may be needed for message processing can be stored on the state tier. This can provide improvements in latency during garbage collection.
  • the Java Virtual Machine (JVM) garbage collector can safely and quickly remove the short lived objects from memory without interfering with the execution of
  • JVM Java Virtual Machine
  • Short lived objects are not as easily removed by the garbage collector (since they may be referenced and depended on by various entities) and thus in some cases, the JVM garbage collector may need to stop processing all threads in order to safely perform its garbage collection. This is due in part to the scoping of the short lived and long lived objects. Short
  • the engine tier can maintain mostlv short lived objects in eases where longer li ⁇ ed objects are needed b ⁇ the engine tie ⁇ , the> can be
  • the state tier 212 can maintain call state in ⁇ arious data objects residing in the random access memory (RAM) of a computer This can provide ⁇ O significant access speed advantages to the engine tier 210 over the use of a database
  • call state can be maintained in a database or some other form of persistent store, which can be accessed ⁇ albeit slower)
  • the engine tier State of various applications running on the SIP server can also be maintained on the state tier Developers can be provided an API to allow their applications to access the state tier 15 and to store v arious data thereon for later access by vadous applications
  • application state may be stoted in a database
  • the SlP server can deploy and host a multitude of applications that provide ⁇ arious serv ices to SlP clients Fo? example, a webl ⁇ x application can be deployed on the SIP 20 server and provide web conferencing and video conferencing features to numerous customers Other such applications can also be running on the SlP server at v arious times
  • the hitless application upgrade can enable the SlP server to upgrade a deployed SlP application to a newer v ersion without losing the existing calls being processed by the
  • This type of upgrade can be accomplished by deploying a newer application version alongside the older version which is already running on the engine tier
  • the SiP server can (hen automatically manage the calls and messages such that new calls are routed to the new version of the application, while the old established calls continue to be 5 processed by the older version. Once all established calls are completed, the older version of the application can be undepJoyed
  • the hilless application upgrade can also enable the user to commit or roll back the changes caused by the new versions of the applications. Jn this manner, a smoother and more dynamic transition is provided for upgrading the various services of a corporation.
  • FIGURES 3A-3B are exemplary illustrations of the hill ess application upgrade functionality, in accordance with various embodiments of the invention. Although each of these diagrams depicts components as logically separate, such depiction is merely for illustrative purposes it will be apparent to those skilled in the art that the components portrayed in these figures can be arbitrarily combined or divided into separate software,
  • a SiP server including a SIP servlet container 308.
  • a load balancer 300 can be receiving incoming SlP message traffic and distributing that traffic to the various engine nodes 304, 306 for processing in the engine tier 302. Some (or all) of the messages and requests received by the engine nodes, can then be directed to be handled by the SIP App v l 3 12..
  • a system administrator of the SiP server may wish to upgrade or substitute a new version of SlP App Vl 312 without disrupting the existing calls being handled thereby
  • the hitiess application upgrade can take enable such features, as illustrated in FIGURE 3B.
  • SIP App v2 a new version of the SIP application, such as SIP App v2
  • (version two) 316 can be deployed on the engine node A 304 alongside the old version SlP App vl 312
  • the SiP server can then manage the SIP serviet mapping such that new
  • Version information can be assigned to each updated application in order to distinguish it from the older application versions. For example, whenever a SlP application is deployed, a version number can be associated therewith. Alternatively, only
  • ⁇ O new updated applications may be assigned a version number and other applications that are already deployed may be assumed to be older versions by the SIP server.
  • the application name can be replaced with calls to a helper method that obtains the base application name.
  • the SiP server can provide SipApplicatkmRuniimeMBeau methods for obtaining the base application name and version identifiers as well as for determining whether the current application version is active or retiring.
  • the S ⁇ P server can use a version identifier such as a string value appended to the application name in order to distinguish between multiple versions of a given application
  • the version can be appended to the context root or to the archive name when the application is packaged for deployment.
  • the SIP server can subsequently strip the version string specified from the application's deployment name so that it can recognize when several versions of the same application are deployed. If two versions are indeed deployed, the server can begin routing new requests to the most recently-deployed
  • the server can allow the other deployed application to complete in-flight calls while directing no new calls to it. This process can be referred to as retiring because eventually, the older version will process no S ⁇ P messages.
  • the server can also distinguish between a deployment that has no version identifier and a subsequent version that does specify a version identifier. This can enable upgrades of applications that were packaged
  • the original deployment SIP ⁇ pp v l 3 !2 can then process messages only for established or in-flight calls (e g calls that were initiated with the original deployment) After these in-flight calls 5 are completed, the original deployment version can be removed as no longer being necessary
  • an active session count can be obtained from the application's runtime bean instance or a script prepared by a system administrator When the count of active sessions for that ⁇ ersion of the application reaches zero, the hitiess application upgrade can be graceful Iy
  • a method ' ' gctActivcVersionState ⁇ )' ⁇ can return an integer value that describes the state of a selected application version
  • a returned value of zero can indicate that the particular ⁇ crsio ⁇ of the application is inactive, meaning that the application is being retired Alternatively, it can mean that this version has not yet been activated
  • Kach host or engine node can be httlcssly upgraded one at a time, in order to test the performance of the new application version without disrupting the entire system Alternativ ely, all engine nodes can be upgraded in parallel, sequentially or some rna> be left with older application versions Furthermore, rollback functionality can also be
  • the SlP server can restore the previous sen let mappings, as previously discussed
  • a configured load balances 300 can be used to peifomi a hve upgrade of the SIP server software or a deployed SIP application on a production installation When updating the SIP server or when upgrading a SlP sen let where the
  • a new engine tier can be created in order to host newly-upgraded engine tier instances or new versions of SIP sen lets Subsequently, servers in the engine tier can be shut down, upgraded and then restarted in the new target cluster In some cases, it may be preferable to shut down each 5 server one at a time so as to maintain current ca!! processing Similarly, it ma ⁇ be preferable to target all deployed SIP serslets to the engine tier duster, rather than to indiv idual managed server instances within the cluster After all servers have been upgraded, the older cluster can be removed and no longer used When the engine tier cluster is finished upgrading, servers in the state tier can be upgraded similarly one at a
  • FIGURE 4 ⁇ is an exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments Although this figure depicts functional steps in a particular sequence for purposes of illustration, the process is not necessarily limited to this particular order or steps One skilled in the art will appreciate that the various steps
  • a SiP .server can he distributed ovei a cluster type network in order to pros ide services to various SIP clients ⁇ n application deploy ed on the SlP server can process incoming message traffic from the SIP clients, as illustrated in step 402,
  • a new version of the application can be deployed on the SIP server, alongside the existing version of the application, in step 406
  • the new ⁇ crsion can be activated in oidei to begin processing calls, as illustrated m step 408
  • the SLP server or the SIP sen let container therein
  • the container can direct the incoming messages for new calls to the new version of the application
  • the container can
  • 2S direct incoming messages for previously established calls to the old version of the application T hus, for at least some period of tune, the two versions can be running simultaneously
  • FIGURE 4B is another exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments Although this figure depicts functional steps in a
  • an incoming message can be received from a SlP client by a load balancer of the cluster network.
  • the load balancer can then distribute 5 the message to a SIP server having two versions of the application running, as previously discussed
  • the container can then determine whether the message is for an already established SlP session or whether the message is a request that would establish a new SiP session between the client and the SlP server.
  • the SlP server can route messages for previously iO established S ⁇ P sessions to the old version of the application that is executing alongside the new version on the SiP server.
  • the messages for new S ⁇ P sessions can be routed to the new version, as illustrated in step 428. This can be achieved by the SIP server replacing the existing servlet mappings for the application being upgraded with new servlet mappings specified in the SIP deployment descriptor of the new version, upon
  • an active session count can be maintained, such as by the SIP server itself or via scripts Implemented by a system administrator. The count is likely to decrement as existing calls (that are being handled by the old version of the application) are ended by various SIP clients. Whenever this active session count reaches zero, the new
  • 20 version deployment can be gracefully committed, as illustrated in step 432, by undeployi ⁇ g the old version of the application. AH incoming traffic is then directed to the new version of the application. In this manner, no interruption in calls need be experienced by the S ⁇ P server.
  • FIGURE 4C is an exemplary flow diagram of rollback functionality of the hitless
  • a new version is deployed in the SlP server for processing incoming messages as previously discussed. New messages which are associated with new calls can be directed to this newly deployed version, as illustrated in
  • step 444 the new version of the application may not be functioning as previously expected.
  • new functionality added to the new version may cause an increase in latency or simply way not process messages as intended.
  • a rollback can be performed.
  • the rollback can be initiated by ⁇ ndeploying the new version of the application. Subsequently, the incoming messages for all calls, established and new, can be routed back to the old version of the application, as illustrated in step 448. This can be achieved by restoring the previous servlet mappings that were changed by the SiP server. Furthermore, since the deployment and undepioyment of the new version can be initiated by ⁇ ndeploying the new version of the application. Subsequently, the incoming messages for all calls, established and new, can be routed back to the old version of the application, as illustrated in step 448. This can be achieved by restoring the previous servlet mappings that were changed by the SiP server. Furthermore, since the deployment and undepioyment of the new version can be initiated by ⁇ ndeploying the new version of the application. Subsequently, the incoming messages for all calls, established and new, can be routed back to the old version of the application, as illustrated in step 448. This can be achieved by restoring the previous servlet mappings
  • FIGURE 5 is an exemplary illustration of a simplified call flow in a typical SlP
  • a back to back user agent (B2BUA) 500 having a ⁇ inning SlP server thereon can take the place of being an intermediary between the communications sent between various users. This can be done for purposes of controlling the call and message flow between user agent !. 502 and user agent 2 504 and in order to prevent any unwanted behavior and messages (e.g. spamrai ⁇ g, hacking, viruses, etc.) from being sent
  • B2BUA back to back user agent
  • ⁇ t should be noted that although user agent 1 502 and user agent 2 504 are illustrated as telephones in FIGURE 5, the SlP messages can come from various other sources as well.
  • the user agent can also be a cell phone, a wireless device, a laptop, an application or any other component that can initiate a S ⁇ P type of communication.
  • FIGURE 5 illustrates communications between two user
  • 30 agents there can be more such user agents taking part of a single communication session. For example, during a conference call, there may be 20 or 30 user
  • a telephone call can be set up between user agent 1 502 and user agent 2 504 sla the use of the SIP serv er
  • the fust message sent from user 5 agent I 502 to the SlP server on the B2BU ⁇ 500 can be an invite message, requesting to set up a telephone call with use* agent 2 504
  • the invite message can be received by the load balancer 202 of the SlF server and it can be directed to an engine in the engine tier 210 for processing
  • the engine tier (e g an application executing thereon) can
  • pci form logic far determining various factors associated with the call, such as determining whether user agent 1 502 is allowed to make the type of call attempted to be initiated, determining whether the callee that will be contacted is properly identified, as ⁇ ve!i as any othef logic that the serv er may need to calculate before attempting to set up a telephone call
  • the engine can then generate state aioimd the fact that a call is being set
  • the engine can also determine how to find the target of the call (i e user agent 2 504) and the right path to route the message to the callee
  • user agent I is an originator (as well as the terminator) of the call and user agent 2 is referred to as the callee
  • the SiP server can send a " 100 tr> ing" message back to usci agent 1 *>02. indicating that it has received the invite message and that it is in the process of handling it
  • the "100 trying" message is part of the SlP protocol definition and can be used by a server in order to stop the user agent from re-transmitting the invite request
  • the user agent may have interference which might
  • SIP protocol defines various re-transmission schemes in oidei to handle such ni obi lit) and interruptions Messages such as "' ! OC) trying, " "' 180 ringing. "1 and "200 OK " ate just some of the examples of messages defined in SlP for handling communication
  • the SlP server can then send an invite message to
  • user agent 2 504 can then send a "200 ok" message to the SIP server, the server can transmit that message to user agent 1 502
  • the user agent i 502 can send a.n acknowledgement ("Ack" message) to lhe SIP server which can be transmitted along to user agent 2 504 and at this point a sound transfer conversation 5 can be set up between the two user agents.
  • This sound transfer can be implemented via real transfer protocol (RTP) on a media server.
  • RTP real transfer protocol
  • either user agent can choose to terminate the call by sending a "Bye" message, In this illustration, user agent 1 502 terminates the call by sending a ' "Bye” message to the SIP server which sends it off to user agent 2 504.
  • RTP real transfer protocol
  • the SlP server can transmit that message to user agent 1 and the conversation can be truly ended.
  • the vertical lines such as those extending downward from the user agents 502, 504 and the B2BUA 500 can each illustrate and be referred to as a single call leg.
  • the call flow for each call leg may be time sensitive as some messages
  • the user agent A 502 may continue to re-transmit the initial invite message until it receives a " 100 trying" message from the B2BUA 500. As such, in some cases certain messages may need to be processed synchronously while others may be allowed to process in parallel.
  • 25 transmitting steps may be added, changed, interrupted or rearranged in case of interference or failure of various components.
  • sequences can be controlled by various timer objects residing on the S ⁇ P server.
  • the SIP server after receiving the invite message from one user agent, the SIP server will typically forward that invite to another user agent and wait for a
  • tiieu the in ⁇ te message may need to be retransmitted to the second user agent because it mav be assumed that the ⁇ sei agent did not receive the first message Thit> type of re-transmission can be controlled by the protocol timer objects which may be 5 residing in the state tier
  • the protocol timer objects which may be 5 residing in the state tier
  • an initial Tl timer value of 500 milliseconds can control the retransmission Interval for the invite request and responses and can also set the value of various other timers
  • time* objects which can be executing on the le ⁇ ei of the entire call For example, if after a specified period of lime, nothing i_,
  • the entire call may be purged from the system This specified period of time can also be controlled by firing a rimer object
  • a ⁇ engine tier servers add new call state data to the state tier, state tie ⁇ instances queue and maintain a complete list of SlP protocol timers and application timers associated with each call F,ngine tier servers can periodically poll the
  • the processing of the timer objects can be executed by the engine server as determined by the state tier serve* I 1
  • the state tier can
  • the state data may not need to be pushed onto the engine server since that data ma> alread) be available in the cache
  • the timers can be fetched from the state tier, however upon the timer firing, the engine can fetch the call state using the cache
  • system server clocks Io a common time source (e.g within a few milliseconds) in order achieve maximum performance.
  • a.n engine tier server with a system clock that is significantly faster than other servers may process more expired timers than the other engine tier 5 servers. In some situations this may cause retransmits to begin before their allotted time and thus care may need to be taken to ensure against it,
  • the SlF Servlet API can provide a timer service to be used by applications.
  • the TimerService can define a
  • SipAppUcationSession can be implicitly associated with the timer.
  • an application defined Tiiner ⁇ stener is invoked and ServietTimer object passed up, through which the SipAppUcationSession can be retrieved which presides the right context of the
  • the engine tier servers continual Iy access the state tier replicas in order to retrieve and write call state data.
  • the engine tier nodes can also detect when a state tier server has failed or become disconnected. For example, in one
  • the engine when an engine cannot access or write call state data for some reason ⁇ e.g. the state tier node has failed or become disconnected) then the engine can connect to another replica in the partition and retrieve or write data to that replica.
  • the engine can also report that failed replica as being offline. This can be achieved by updating the view of the partition and data tier such that other engines can. also be notified about the offline
  • Additional failover can also be provided by use of an echo server running on the same machine as the state tier server.
  • the engines can periodically send heartbeat messages to the echo server, which can continually send responses to each heartbeat request. If the echo server fails to respond for a specified period of time, the engines can 30 assume that the state tier server has become disabled and report that state server as previously described. In this manner, even quicker failover detection is provided, since the
  • Failover can also be provided for the engine tier nodes.
  • the engine tier nodes can periodically poll the stale tier nodes in order to determine which
  • the state tier nodes can notice whenever the engine tier node has failed to poll Jf a specified period of lime elapses and the engine tier has not polled the state tier, the state server can then report that engine as unavailable ⁇ e.g. having failed or disconnected from the network). In this manner, failover can be implemented for both the state tier and the engine tier, thereby providing a more reliable
  • the invention encompasses in some embodiments, computer apparatus, computing systems and machine-readable media configured to carry out the foregoing methods.
  • the present invention may be conveniently 15 implemented using a conventional general purpose or a specialized digital computer or microprocessor programmed according to the teachings of the present disclosure, as will be apparent to those skilled in the computer art.
  • the invention may also be implemented by the preparation of application specific integrated circuits or by interconnecting an appropriate network of conventional component circuits, as will be readily apparent to those skilled in the art.
  • the present invention includes a computer program product which is a storage medium (media) having instructions stored thereon/in which can be used to program a
  • the storage medium can include, but is not limited to, any type of rotating media including floppy disks, optical discs, DVD, CD-ROMs, rnicrodrive, and magneto-optical disks, and magnetic or optical cards, nanosy stems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
  • the present invention includes software for controlling both the hardware of the general purpose/specialized computer or microprocessor, and for enabling the computer or microprocessor to interact
  • Such softwaje may include, but is uot limited to, device dmers, operating s ⁇ stems, and user applications
  • Embodiments can provide, by way of example and without limitation, services such as
  • VoIP services including, without limitation the following features
  • Call logs The ability to view calls made over a given period of time online, ability to associate names with phone numbers, integrate call log information to other applications such as IM
  • Locate me This is adx anced call forwarding Rather than have all calls forwarded to a single location (e g , voice mail) when the caller is busy. Locate me can try multiple
  • a unci raa ⁇ have two office locations a mobile, and a pager, and it may make sense to forward a call to both office locations first.
  • Personal conferencing ⁇ user could use an existing application (e g , Wi client) to schedule a Web/audio conference to start at a certain time Since the IM client already has 5 personal profile information, the conferencing system sends out the Web conference link information either thsough IM and/or email to the participants The phone contact information in the profile is used to automatically ring the participants at the time of the conference
  • Lifetime number This is the facility where a single ⁇ irtual number can travel with iO a customer wherever they live Even if they move, the old number continues to work, and reaches them at their new location This is really the analog of static IP addresses in a phone network
  • Speed dial I his is the ability to drarnaticall) expand the list of numbers that can be dialed through short -ke) and accelerator combinations This is another example of a 15 converged application, since It's ⁇ ery likely that w hen a user will set up this information. when they work through the call logs on the operator user portal, and the updated information needs to be propagated to Die network side in real-time
  • Media delivery services including, without limitation the following features Depending on the service les ⁇ l agreement users are willing to sign up to, the 20 quality of media delivered (e g number of frames per second) will vary
  • the policy engine enables segmenting the customer base by revenue potential, and to maximize return on investment made in the network
  • Context-sensitive applications including, without limitation the following features
  • a typical example here is the need for applications that have ⁇ short lifetime, 2 ⁇ extremely high usage peaks within their lifetime, and immediacy For example, voting on
  • Integrated applications including, without limitation the following features
  • the final class of applications is one that combines wireline and wireless terminal 30 usage strigiios ⁇ n example of an Integrated application i.s the following a mobile terminal user is on a conference call on their way to work When he reaches his office, he enters a special key sequence to transfer the phone call to his office phone The transfer
  • a computer progiam product vvhieh is a storage 5 medium (medial having instructions stored thereon/in which can be used to program a general purpose or specialized computing processor(sVde ⁇ ice(s) to perform any of the features presented herein
  • I he storage medium can include, but is not limited to, one or more of the following any type of phy sical media including floppy disks, optica! discs, DVDs, CD-ROMs, microdmes, magneto-optical disks, holographic storage, ROMs,
  • SO RAMs SO RAMs, PRAMS, F.PROMs, ELPROMs. DRAMs, VRAVb, flash memory devices, magnetic or optical cards, nanosystems (including molecular memon ICs). paper or paper- based media, and any ts pe of media or device suitable for storing instructions and/ or information
  • Various embodiments include a computer program product that can be transmitted in whole or in parts and over one or more public and/or prh ate networks
  • the transmission includes instructions which can be used by one or mo ⁇ e processors to perform any of the features * presented herein
  • the transmission includes instructions which can be used by one or mo ⁇ e processors to perform any of the features * presented herein
  • the transmission ma> Include a plurality of sepaiate transmi.ssio ⁇ s
  • the present disclosure includes software for controlling both the hardware of general
  • Such software may include, but h not limited to, dc ⁇ ice drivers, operating systems, execution ernironrnernyeontainers, user interfaces and applications

Abstract

The SIP server can be comprised of an engine tier, and a state tier distributed on a cluster network environment. The engine tier can send, receive and process various messages. The state tier can maintain in-memory state data associated with various SIP sessions. Various applications can be running on the engine tier, A.new version of an application can. be deployed along side the old versions, simultaneously tutoring on the SIP server (Fig 4C, #440). Incoming messages for new calls can be directed by, the SIP server to the ne version of the application. Incoming messages for previously established calls can be directed to the old version of the application (Fig 4C, #440). Once the old version is finished processing calls, it can be undeployed (Fig 4C, #448).

Description

H π LESS APPLICATION I PGRADE FOR SIP SERVER ARCHITECTURE
COPYRIGHT NOTICE
5 A portion of the disclosure of this patent document contains materia! which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records., but otherwise reserves all copyright rights whatsoever. 10
CLAIM OF PRIORITY
This application claims priority to the following United States Applications, each of which is incorporated herein by reference:
United States Provisional Patent Application No. 60/800,943, entitled HΪTLHSS 15 APPLICATION UPGRADE FOR SlP SERVER ARCHITECTURE, by Anno R. Langen et al , filed on May 16, 2006 (Attorney Docket No BEAS-0206 I USG)-
United States Patent Application No 1 1/748.767, entitled HIlXESS APPLICATION UPGRADE FOR SIP SERVER ARCHITECTURE, by Anno R. Langen et al . tiled on May 15, 2007 (Attorney Docket No BEAS-0206 U)SI);
20 United States Patent Application No. 1 1 /748,791 , entitled ENGINE NEAR
CACHE FOR REDUCING LATENCY IN A TELEOMMUNICATIONS ENVIRONMENT, by Anno R. Langeπ et ai., filed on May 15, 2007 (Attorney Docket No. BEAS-2062US1 );
United States Patent Application No. 1 1/378,188, entitled SYSTEM AND 25 METHOD FOR MANAGING COMMUNICATIONS SESSIONS IN A NETWORK, by Reto Kramer et al , tiled on March 17, 2006 (Attorney Docket No BEAS-1744USi );
United States Patent Application No. 1 1084,056, entitled SYSTEM AND METHOD FOR A GATEKEEPER IN A COMMUNICATIONS NETWORK, by Reto Kramer et al.. filed on March 17, 2006 (Attorney Docket No. BEAS-l %2USi), 30 United States Provisional Patent Application No. 00/801,091 entitled SlP AND
HTTP CONVERGENCE IN NE TWORK COMPUTING ENVIRONMENTS, by Anno R. Langen et aL filed on May 16, 2()0ό (Attorney Docket No BEAS-2060US0); United States Provisional Patent Application No. 60/801 ,083 entitled ENGINE MEAR CACHE FOR REDUCING LATENCY IN A TELEOMMUNiCATIQNS ENVIRONMENT, by Anno R. Langen et ai., filed on May 16, 2006 (Attorney Docket No BEAS-2062US0):
5 United States Patent Application No. 1 1/434,022 entitled SYSTEM AND
METHOD FOR CONTROLLING DATA FLOW BASED UPON A TEMPORAL POLICY, by Narendra Vemula et ai , filed on May 15, 200ό (Attorney Docket No. BEAS- 20MU SO);
United States Patent Application No. 1 1/434,024 entitled SYSTEM AND 10 METHOD FOR CONTROLLING ACCESS TO LEGACY PIfSH PROTOCOLS BASED UPON A POLICY, by Bengt-inge Jakobsson et si , filed on May 15, 2006 (Attorney Docket No. BEAS-2066US0),
United States Patent Application No. 1 !/434,0 K) entitled SYSTEM AND METHOD FOR CONTROLLING ACCESS TO LEGACY' MULTIMEDIA MESSAGE 15 PROTOCOLS BASED UPON A POLICY, by Andreas E. Jansson, tiled on May 15, 2006 (Attorney Docket No. BEAS-2067US0),
United States Patent Application No. 1 1/434,025 entitled SYSTEM AND METHOD FOR CONTROLLING ACCESS TO LEGACY SHORT MESSAGE PEER- TO-PEER PROTOCOLS BASED UPON A POLICY, by Andreas E. Jansson, filed on 20 May 15. 2006 (Attorney Docket No. BEAS-2068US0K
United States Patent Application No. 1 1/432,934 entitled SYSTEM AND METHOD FOR SHAPING TRAFFIC, by Jan Thomas Svensson, filed on May 12, 2005 (Attorney Docket No. BEAS-2O7OUSO)
25 £!EI;D.OF THE.1NVENT|ON
The current invention relates generally to managing telecommunications and more particularly to upgrading applications within a network environment.
BACKGROUND
30 Conventionally, telecommunications and network infrastructure providers have relied on often decades old switching technology to providing routing for network traffic. Businesses and consumers, however, are driving industry transformation by demanding new converged voice, data and video services. The ability to meet these demands often can be limited by existing IT arsd network infrastructures that are closed, proprietary and too rigid to support these next generation services. As a result, telecommunications companies are transitioning from traditional, circuit-switched Public Switched Telephone 5 Networks (PSTN), the common wired telephone system used around the world to connect any one telephone to another telephone, to Voice Over Internet Protocol (VoIP) networks VoIP technologies enable voice communication over "vanilla" IP networks, such as the public Internet. Additionally, a steady decline in voice revenues has resulted in heightened competitive pressures as carriers vie to grow data/service revenues and reduce 10 chum through the delivery of these more sophisticated data services. Increased federal regulation, security and privacy issues, as well as newly emerging standards can further compound the pressure.
However, delivering these more sophisticated data services has proved to be .more difficult than first imagined. Existing IT and network infrastructures, closed proprietary 15 network-based switching fabrics and the like have proved to be too complex and too rigid to allow the creation and deployment of new service offerings. Furthermore, latency and migration of services have become important issues in addressing the processing of telecommunications, as more and more users expect seemingly instantaneous and uninterrupted access to their devices 20
M! EI>KSCB,IPJlON OF.Ti;!|LDRAWINGS
FIGURE IA is an exemplar}' i! lustration of a functional system layers in various embodiments.
FIGURE IB is another exemplary illustration of functional system layers in a 25 communications platform embodiment.
FIGURE' 1 C is an exemplary illustration of a SIP server deployed in a production environment, in accordance with various embodiments,
FIGURE 2 is an exemplary illustration of the SlP server cluster architecture in accordance with various embodiments of the invention.
30 FIGURE 3 is an exemplary illustration of a near cache in the SIP server cluster architecture in accordance with various embodiments of the invention. FIGURE 4A is an exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments
FIGURE 4B is another exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments.
5 FIGURE 4C is an exemplary flow diagram of rollback functionality of the hitless application upgrade, in accordance with various embodiments
FIGURE 5 is an exemplary illustration of a call flow in a typical SlP communication session, in accordance with various embodiments.
ϊ 0 DETAILED. DESC RIPTtON
The invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements.
References to embodiments in this disclosure are not necessarily to the same embodiment, and such references mean at least one. While specific implementations are discussed, it is 15 understood that this is done for illustrative purposes only. A person skilled in the relevant ait will recognize that other components and configurations may be used without departing from the scope and spirit of the invention.
In the following description, numerous specific details are set forth to provide a thorough description of the invention. However, it will be apparent to those skilled in the 20 art that the invention may be practiced without these specific details. In other instances, we! i -known features have not been described in detail so as not to obscure the invention.
Although a diagram may depict components as logically separate, such depiction is merely for illustrative purposes. Tt can be apparent to those skilled in the art that the components portrayed can be combined or divided into separate software, firmware and/or 25 hardware components. For example, one or more of the embodiments described herein can be implemented in a network accessible device/appliance such as a router.
Furthermore, it can also be apparent to those skilled in the art thai such components, regardless of how they are combined or divided, can execute on the same computing device or can be distributed among different computing devices connected by one or more 30 networks or other suitable communication means.
In accordance with embodiments, there is provided a hitless application upgrade for a session initiation protocol (SIP) server architecture. A SiP server can be comprised of an ensine tier and a state tier distributed on a cluster network environment The enαme tier can include a set of engine nodes that send, receise and process various messages The state tier can include a set of state tici replica nuclei that maintain in-memory state data associated with various SlP sessions Applications can be deployed and executed on the 5 engine tier These applications can be adapted to process telecommunication sessions, data and calls such as \ia the SlP protocol Iu certain embodiments, an application ma\ need to be upgraded or modified such as by re-compiling and re-deploj ing the application onto the engine tier in one embodiment, a new version of an application can be deplo>ed alongside an
ΪO old v ersion, which is simultaneously running on the SIP server Subsequently, incoming messages for new calls can be directed by the SIP server to the new version of the application Incoming messages for prcvioυslv established calls can be directed to the old version of the application hi one embodiment once the old version lias completed processing al! of its. calls, it can be υn-dcploycd In this manner, an application can be
15 upgraded to a new version without affecting any existing call processing
FIGURE IA is an exemplary illustration of functional system layers in accordance With various embodiments Although this diagiam depicts components as logically separate, such depiction is merely for illustrative purposes It will be apparent to those skilled in the art that the components portrayed iu this figure can be arbitrarily combined
20 or divided into separate software, firmware and'Or hardware Furthermore, it will also be apparent to those skilled in the art that such components, regardless of how the\ are combined or divided, can execute on the same computing device or can be distributed among different computing dev ices connected by one oi rnoic networks or othei suitable communication means
2^ A Session Initiation Protocol (SIP) Server 102 and a Network Gatekeeper 104 can comprise a portfolio of products that coliectisely make up the Communications Piatfoim 100 The SIP Server 102 provides the Communications Platform 100 with a subsystem in which application components, that interact with S IP-based networks may be deployed The Network Gatekeeper 104 pros ides a policy-driven telecommunications Web services
30 gateway that allows gianulas eontioS oves access to netvsojK resouices fiom un-truntεd domains A variety of shared and re-usable software and service infrastructure components comprise the Communications Platform 100. For example, an Application Ser\er, such as the WebLogic™ Application Server by BEA Systems, inc. of San Jose, California This Application Server may be augmented and adapted for deployment in telecommunications 5 networks, while providing many features and functionality of the WebLogic Server counterpart widely deployed in enterprise computing environments Application Server embodiments for use in the telecommunications applications can ρro\ ide a variety of additional features and functionality, such as without limitation;
• Optimized for Peak Throughput
10 * Clustering for Scalability and High-Performance
Generalized for wide range of target platforms (HW/OS) support
• Extensive deployment configuration options
• Optimized for local management
• Plug and play Enterprise Information Systems (EiS) support
15 Analogously, communications platform embodiments can provide a variety of additional features and functionality, sucli as without limitation.
• Highly Deterministic Runtime Environment Clustering for High-Availabi iity ( HA } and Scalabi I ity
Optimized for Telecom HW /OS /HAM W platforms support (SAF, ATCA, HA M 20 /W, etc.)
• Hardened configuration
• Optimized for Telecom NMS integration
• Telecommunications network connectors and interfaces
• Parti tϊ oni ng, repli cat? on an d fai 1 over
25 FIGURE I B is another exemplary illustration of functional system layers in a communications platform embodiment Although this diagram depicts components as logically separate, such depiction is merely for illustrative purposes. It will be apparent to those skilled in the art that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firmware and/or hardware. Furthermore, it
30 will also be apparent to those skilled in the art that such components, regardless of how they are combined or divided, can execute on the same computing device or can be distributed among different computing devices connected by one or more networks or other suitable communication means
Communications platform 100 comprises a SlP Server (WLSS) 102 and a Network Gatekeeper (WLNG) S 04. Tools for interacting with Web Services, such as a Web 5 Service - Universal Description Discovery Interface (WS/UDDI) 1 10, a Web Service - Business Process Execution Language (WS/BPEL) 112 may be coupled to the SIP Server 102 and the Network Gatekeeper 104 in embodiments. A log/trace and database 1 14 can assist with troubleshooting. In some deployments, the Communications Platform 100 can interface with an OSS/BSS system 120 via resource adapters 122. Such interfaces can
Ϊ0 provide access to billing applications 124, Operation, Administration, and Maintenance (OAM) applications 126 and others. A policy engine 128 can control the activities of the above-described components which can be implemented in a scalable cluster environment (SCE) 130
A Communications Platform embodiment can provide an open, high performance,
15 software based fault-tolerant platform that allows operators to maximize revenue potential by shortening time to market and significantly reducing per-service implementation and integration cost and complexity. The Communications Platform is suitable kπ use by £or Network Infrastructure Vendor, Network Operators and Communications Service Providers in multiple deployment scenarios ranging from fully IMS oriented network
20 architectures to hybrid and highly heterogeneous network architectures. It is not restricted to use only in carrier networks, however, and may be deployed in Enterprise communications networks without restriction or extensive customization. When deployed in conjunction with an IP Multimedia Subsystem, the Communications Platform can serve in the role of an IMS SIP Application Server and offers Communications Service
25 Providers an execution environment in which to host applications (such as the WebLogic Network Gatekeeper), components and standard service enablers.
FIGURE IC is an exemplary illustration of a SlP server deployed in a production environment, in accordance, with various embodiments. Although this diagram depicts components as logically separate, such depiction is merely for illustrative purposes, it will
30 be apparent to those skilled in the art that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firmware and/or hardware. Furthermore, it will also be apparent to those skilled in the art that such components,
7 regardless of how they are combined or divided, can execute on the same computing device or can be distributed among different computing devices connected by one or more networks or other suitable communication means.
As illustrated, the SlP server 102 can be used as a back-to-back user agent 5 (B2BLJ A) 150 in a typical telecommunications environment. A B2BUA can take the place of an intermediary between communications between user agents 160, 16.2, including various cellular phones, wireless devices, laptops, computers, applications, and other components capable of communicating with one another electronically. The B2BUA 150 can provide multiple advantages, including controlling the flow of communication
Ϊ0 between user agents, enabling different user agents to communicate with one another (e.g. a web application can communicate with a cellular phone), as well as various security advantages. As an illustration, the user agents can transmit to the SIP server instead of communicating directly to each other and thus malicious users can be prevented from sending spam and viruses, hacking into other user agent devices, and otherwise
15 compromi sing security .
The SIP server 102 can be implemented as & Java Enterprise Edition application server that has been extended with support for the session initiation protocol (SIP) as well as other operational enhancements that allow it to meet tlie demanding requirements of the next generation protocol-based communication networks. In one embodiment, the SlP
20 server 102 can include an Enterprise Java Beans (EJB) container 144, a Hyper Text Transfer Protocol (HTTP) servlet container 142, an SiP servlet container 140, various Java 2 Enterprise Edition (J2EE) services 146, and SlP 150 and HT TP 148 components. The SΪP stack of the server can be fully integrated into the SIP servlet container 140 and can offer much greater ease of use than a traditional protocol stack, A SIP servlet Application
25 Programming Interface (API) can be provided in order to expose the full capabilities of the SIP protocol in the Java programming language. The SΪP servϊet API can define a higher layer of abstraction than simple protocol stacks provide and can thereby can free up the developer from concern about the mechanics of the SΪP protocol itself. For example, the developer can be shielded from syntactic validation of received requests, handling of
30 transaction layer timers, generation of non application related responses, generation of fully-formed SlP requests from request objects (which can involve correct preparation of system headers and generation of syntactically correct STP messages) and handling of lower-layer transport protocols such as TCP, UDP or SCTP
In. one embodiment the container is a server software that hosts applications (i e contains them), in the case of a SIP container, it hosts SiP applications. The container can 5 perform a number of SIP functions as specified by the protocol thereby taking the burden off the applications. At the same time, the SlP container can expose the application to SIP protocol messages (via the SIP Servlet API) on which applications can perforin various actions Different applications can thus be coded and deployed to the container that provides various telecommunication and multimedia services,
ΪO FIGURE 2 is an exemplary illustration of the SIP server cluster architecture in accordance with various embodiments of the invention. Although this diagram depicts components as logically separate, such depiction is merely for illustrative purposes. It will be apparent to those skilled iu the an that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firm ware and/or hardware.
15 Furthermore, it will also be apparent to those skilled in the art that such components, regardless of how they are combined or divided, can execute on the same computing device or can be distributed among different computing devices connected by one or more networks or other suitable communication means. For example, while the FIGURE 2 shows Host A implementing both an engine node and a data node, this should not be
20 construed as limiting the invention In many cases, it can be preferable to distribute the engine node and data node onto separate host machines. Similarly, while FIGURH 2 illustrates two host machines, it is possible and even advantageous to implement many more such hosts in order to take advantage of distribution, load balancing and failover that such a system can provide
25 As illustrated, a message, such as a phone call request or some other transfer of data associated with SIP, can come into the cluster from the internet (such as over VoIP), phone, or some other type of network 200 This message can be received and handled by a load balancer 202 which can be responsible distributing message traffic across the engines {such as engine node 1 216 and engine node 2 208) in the cluster. The load balancer can be
30 a standard load balancing appliance hardware device and it is not necessary that it he SlP aware; there is no requirement that the load balancer support affinity between the engines 216, 20S, and SlP dialogs or transactions. However in alternative embodiments, certain
9 advantages may be obtained by implementing a SIP-aware load balancer, as discussed in further deiai! below Alternatively, the load balancer can be implemented as software that distributes the messages to the various engines. In the various embodiments, the primary goal of the load balancer 202 can be to provide a single public address that distributes 5 incoming SIP requests to available servers in the SIP server engine tier 210. Such distribution of requests can ensure that the SIP server engines are fully utilized. The load balancer 202 can also be used for performing maintenance activities such as upgrading individual servers or applications without disrupting existing SIP clients.
In one embodiment, the SIP server can provide a two-tier cluster architecture
Ϊ0 model to handle the incoming messages. In this model, a stateless engine tier 210 can process all signaling traffic and can also replicate transaction and session state to the state tier 212 and its partitions 222. Each partition 222 can consist of any number of nodes (replicas) 218, 214 distributed across any number of hosts such as host 1 220 and host 2 204 which can be implemented as computers linked in a cluster type network
15 environment. The state tier 212 can be an n~vvay peer-replicated Random Access Memory (RAM) store that maintains various data objects which can be accessed by the engine nodes in the engine tier. In this manner, engines can be provided a dual advantage of faster access to the data objects than retrieving data from a database while at the same time, engines can be freed up from having to store the data onto the engine tier itself. This type
20 of separation can offer various performance improvements. The state tier can also function as a lock manager where call state access follows a simple library book model (i.e. a call state can be checked out by one SlP engine at a time).
The engine tier 210 can be implemented as a cluster of SΪP server instances that hosts the SfP servlets which provide various features to SIP clients. In one embodiment,
25 the engine tier 2 iO is stateless, meaning that most SIP session state information is not persisted in the engine tier, but is obtained by querying the state tier 212 which can in turn provide replication and fail over services for SΪP session data. In alternative embodiments, the engine tier can have state maintained in a local near cache for improving latency.
The primary goal of the engine tier 210 can be to provide maximum throughput
30 combined with low response time to SlP clients. As the number of calls or their duration increases, more server instances can be added to the engine tier to manage the additional load. It should be noted however, that although the engine tier may include many such
10 server instances, it can be managed as a single, logical entity For example, the STP serv lets can be deplo) ed uniformly to ail server instances b> targeting the cluster itself and the load balance? need not maintain affimt} between SIP clients, and individual servers in the engine tier
5 In various embodiments, the state tier 212 can be implemented as a cluster of SIP serv er instances that provides a high-performance, highly -available, in-memon store for maintaining and retrieving session state data for SIP servlets This session data may be required by SlP applications in the SIP server engine tier 210 in order to process incoming messages Within the state tier 212, session data can be managed in one or more partitions
ΪO 222. where each partition manager a fixed portion of {he concurrent call state For example, in a system mat uses mo partitions, the first partition could manage one half of the concurrent call state (e H A-M) and the second partition can manage the other half (e g Nf-/) With three partitions, each can manage a third of the call state and so on Additional partitions can be added as needed to manage large numfaei of concurrent calls
15 In one embodiment, within each partition 222, multiple servers can be added to provide redundancy and iai lover should the olhct servers in the partition fail When multiple servers participate in the same partition 222, those servers can be referred to as replicas because each server maintains a duplicate copy of the partition's call state l*or example, nodes 21 S and 214 of the partition 222 can be implemented as replicas
20 furthermore, to increase the capacity of the state tier 212, the data can be split evenly across a set of partitions, as prev iously discussed. The number of ieplicas in the partition can be called the replication factor, since it determines the lc\cl of redundancy and strength of failov er that it provides For example, if one node goes down oi becomes disconnected from the network, any available replica can automatically provide call state
2S data to the engine tier
Replicas 214, 2 S 8 can join and leav e the partition 222 and each replica can serv e as exactly one partition at a time Thus, in one embodiment, the total available call state storage capaeif) of the cluster is a summation of {he capacities of each partition 222 hi one embodiment, each partition 222 can pccr-replicated, meaning that clients
30 perfoππ all opeiations Ueads/writes) to all replica.s 218, 214 in the partition <v\ herein the current set of repiicas in the partition is called the partition view) This can provide improved latency advantages over more traditional synchronous "primary-secondary"
I l architecture wherein one store acts as a primary and the other nodes serve as secondaries. Latency is reduced because there is no wait for the second hop of primary-secondary systems. The peer-replicated scheme can provide better fai lover characteristics as well, since there does not need to be change propagation delay,
5 In one embodiment, the engine nodes 208, 216 can he responsible for executing the call processing. Each cai! can have a call state associated with it. This call state can. contain various information associated with the call, such as the ids of the cailer/eallee, where the caller is, what application is running on the callee, any tinier objects that may need to fire in order to process the call flow (as discussed below), as well as any other data
Ϊ0 that may correlate to a call or a message. The state for each call can be contained in the state tier 212. The engine tier 210, on the other hand, could be stateless in order to achieve the maximum performance. In alternative embodiments, however, the engine tier can have certain amounts of state data stored thereon at various times. in one embodiment, a typical message processing flow can involve locking/getting
15 the call state, processing the message and then putting/unlocking the call state The operations supported by the replicas for normal operations can include:
• lock and get call slate put and unlock call state
* lock and get call states with expired timers
20 In various embodiments, the engine tier can maintain mainly short lived objects and any long lived objects which may be needed for message processing can be stored on the state tier. This can provide improvements in latency during garbage collection. As an illustration, the Java Virtual Machine (JVM) garbage collector can safely and quickly remove the short lived objects from memory without interfering with the execution of
25 various other threads which may be in the process of executing. The longer lived objects, on the other hand, are not as easily removed by the garbage collector (since they may be referenced and depended on by various entities) and thus in some cases, the JVM garbage collector may need to stop processing all threads in order to safely perform its garbage collection. This is due in part to the scoping of the short lived and long lived objects. Short
30 lived objects typically exist in a different (more localized) memory scope than the long lived objects, which may be referenced by more entities. Thus, it can be more difficult for garbage collectors to ensure that every executing entity has finished using the long lived
12 objects and various threads are usually stopped in order to perform their regular garbage collection I his can introduce latency
!π order to dea! with such issues, the engine tier can maintain mostlv short lived objects in eases where longer li\ ed objects are needed b\ the engine tieτ, the> can be
5 retπe\ed from the state tier, used as short lived objects in the engine tier, and subsequent!) pushed back to the state tier This can be advantageous in that gaibagε collection can cause lesser interference with thread execution in the engine tier
In various embodiments, the state tier 212 can maintain call state in \arious data objects residing in the random access memory (RAM) of a computer This can provide ΪO significant access speed advantages to the engine tier 210 over the use of a database Alternatively, if latency is not an issue, call state can be maintained in a database or some other form of persistent store, which can be accessed {albeit slower) bv the engine tier State of various applications running on the SIP server can also be maintained on the state tier Developers can be provided an API to allow their applications to access the state tier 15 and to store v arious data thereon for later access by vadous applications Alternatively application state may be stoted in a database
.i.Hl.tj gj>s Appli cat i on Upgi ade
The SlP server can deploy and host a multitude of applications that provide \ arious serv ices to SlP clients Fo? example, a weblϊx application can be deployed on the SIP 20 server and provide web conferencing and video conferencing features to numerous customers Other such applications can also be running on the SlP server at v arious times
In many cases, a user may wish to upgrade the Sf P server or the applications running thereon with corresponding new v ersions, in order to add desired functionality and improve performance However, for most large corporations or telecommunication
2^ providers which are hosting high numbers of SlP applications with very large numbers of usejs, it may be impractical or even impossible to find a period of time when no customers are using the system, during which time such upgrades can be added Therefore it may be desirable to provide the SlP serv er with a more dv namic approach to upgrading applications and services, without interrupting the current calls, or services and without
30 di si upiing the business flow of the organization
The hitless application upgrade can enable the SlP server to upgrade a deployed SlP application to a newer v ersion without losing the existing calls being processed by the
13 application. This type of upgrade can be accomplished by deploying a newer application version alongside the older version which is already running on the engine tier The SiP server can (hen automatically manage the calls and messages such that new calls are routed to the new version of the application, while the old established calls continue to be 5 processed by the older version. Once all established calls are completed, the older version of the application can be undepJoyed The hilless application upgrade can also enable the user to commit or roll back the changes caused by the new versions of the applications. Jn this manner, a smoother and more dynamic transition is provided for upgrading the various services of a corporation.
10 FIGURES 3A-3B are exemplary illustrations of the hill ess application upgrade functionality, in accordance with various embodiments of the invention. Although each of these diagrams depicts components as logically separate, such depiction is merely for illustrative purposes it will be apparent to those skilled in the art that the components portrayed in these figures can be arbitrarily combined or divided into separate software,
15 firmware and/or hardware. Furthermore, it will also be apparent to those skilled in the art that such components, regardless of how they are combined or divided, can execute on the same computing device or can be distributed among different computing devices connected by one or more networks or other suitable communication means.
As illustrated in FIGURE 3A, a SiP server including a SIP servlet container 308.
20 310 can be running on various engine nodes 304, 306 and having a deployed SlP application thereon, such SIP App vl 312, 314. A load balancer 300 can be receiving incoming SlP message traffic and distributing that traffic to the various engine nodes 304, 306 for processing in the engine tier 302. Some (or all) of the messages and requests received by the engine nodes, can then be directed to be handled by the SIP App v l 3 12..
25 314.
In various embodiments, a system administrator of the SiP server may wish to upgrade or substitute a new version of SlP App Vl 312 without disrupting the existing calls being handled thereby The hitiess application upgrade can take enable such features, as illustrated in FIGURE 3B.
30 Sn one embodiment, a new version of the SIP application, such as SIP App v2
(version two) 316, can be deployed on the engine node A 304 alongside the old version SlP App vl 312 The SiP server can then manage the SIP serviet mapping such that new
14 requests are directed to the new version while subsequent messages for older, established dialogues are directed to the older application version until the calls complete. When all of the older dialogues have completed and the SIP App v ϊ 312 is no longer processing calls, it can be safely undeployed. This type of a system can ensure that no calls are dropped 5 during the upgrades of various production applications. In alternative embodiments, all old calls can be ended and new calls can be directed to the new application version.
Version information can be assigned to each updated application in order to distinguish it from the older application versions. For example, whenever a SlP application is deployed, a version number can be associated therewith. Alternatively, only
ΪO new updated applications may be assigned a version number and other applications that are already deployed may be assumed to be older versions by the SIP server. In cases where the application hard-codes the use of an application name (e.g. in composed applications where multiple SIP serviets process a given call), the application name can be replaced with calls to a helper method that obtains the base application name. For
15 example, the SiP server can provide SipApplicatkmRuniimeMBeau methods for obtaining the base application name and version identifiers as well as for determining whether the current application version is active or retiring.
The SΪP server can use a version identifier such as a string value appended to the application name in order to distinguish between multiple versions of a given application
20 For example, the version can be appended to the context root or to the archive name when the application is packaged for deployment. The SIP server can subsequently strip the version string specified from the application's deployment name so that it can recognize when several versions of the same application are deployed. If two versions are indeed deployed, the server can begin routing new requests to the most recently-deployed
25 application. The server can allow the other deployed application to complete in-flight calls while directing no new calls to it. This process can be referred to as retiring because eventually, the older version will process no SΪP messages. The server can also distinguish between a deployment that has no version identifier and a subsequent version that does specify a version identifier. This can enable upgrades of applications that were packaged
30 before version information was used on the SIP server,
As illustrated in FIGURE 3B, after deploying the new version of the existing application, it can be activated to process new calls. This can be done by the SIP server
15 replacing existing setvfet mappings for the application being upgraded with new serylet mappings specified in the SIP deployment descriptor of the new seision The original deployment SIP Λpp v l 3 !2 can then process messages only for established or in-flight calls (e g calls that were initiated with the original deployment) After these in-flight calls 5 are completed, the original deployment version can be removed as no longer being necessary In order to determine whether a deployed application is processing messages, an active session count can be obtained from the application's runtime bean instance or a script prepared by a system administrator When the count of active sessions for that \ersion of the application reaches zero, the hitiess application upgrade can be graceful Iy
10 committed by removing the old version For example, a method ''gctActivcVersionState{)'~ can return an integer value that describes the state of a selected application version A returned value of zero can indicate that the particular \crsioα of the application is inactive, meaning that the application is being retired Alternatively, it can mean that this version has not yet been activated
15 Λ graceful commit ma) involve letting the old version application finish routing messages to established calls before it is imdepioyed In alternative embodiments, an ungraceful commit may also be implemented by terminating al! existing calls and forcing all new calls to be directed to the new version While less customer-friendl\ , this option may still be useful for dealing vvith unwanted calls, security compromises or other
20 undesirables within an organization
Kach host or engine node can be httlcssly upgraded one at a time, in order to test the performance of the new application version without disrupting the entire system Alternativ ely, all engine nodes can be upgraded in parallel, sequentially or some rna> be left with older application versions Furthermore, rollback functionality can also be
2^ implemented for the SlP server For example, if after deploying the new version of the application, the system is not performing as expected, the new version can be urtdeptoyed and new calls can be touted to the old v ersion that was previously handling onl> established in-Slight calls l pon such undeployment of the new application version, the SlP server can restore the previous sen let mappings, as previously discussed
30 Sn various embodiments., a configured load balances 300 can be used to peifomi a hve upgrade of the SIP server software or a deployed SIP application on a production installation When updating the SIP server or when upgrading a SlP sen let where the
16 servlet's session data is incompatible with the older version, a new engine tier can be created in order to host newly-upgraded engine tier instances or new versions of SIP sen lets Subsequently, servers in the engine tier can be shut down, upgraded and then restarted in the new target cluster In some cases, it may be preferable to shut down each 5 server one at a time so as to maintain current ca!! processing Similarly, it ma\ be preferable to target all deployed SIP serslets to the engine tier duster, rather than to indiv idual managed server instances within the cluster After all servers have been upgraded, the older cluster can be removed and no longer used When the engine tier cluster is finished upgrading, servers in the state tier can be upgraded similarly one at a
IO time
FIGURE 4Λ is an exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments Although this figure depicts functional steps in a particular sequence for purposes of illustration, the process is not necessarily limited to this particular order or steps One skilled in the art will appreciate that the various steps
15 portrayed in this figure can be changed, omitted, rearranged, performed in parallel or adapted in various ways
As illustrated in step 402, a SiP .server can he distributed ovei a cluster type network in order to pros ide services to various SIP clients Λn application deploy ed on the SlP server can process incoming message traffic from the SIP clients, as illustrated in step
20 404 A new version of the application can be deployed on the SIP server, alongside the existing version of the application, in step 406 The new \ crsion can be activated in oidei to begin processing calls, as illustrated m step 408 As shown in step 410, the SLP server (or the SIP sen let container therein) can direct the incoming messages for new calls to the new version of the application Meanwhile, as illustrated in step 412, the container can
2S direct incoming messages for previously established calls to the old version of the application T hus, for at least some period of tune, the two versions can be running simultaneously
FIGURE 4B is another exemplary flow diagram of the hitless application upgrade, in accordance with various embodiments Although this figure depicts functional steps in a
30 particular sequence foi puiposes of illustration, the piocess is not necessaiily limited to this particular order or steps One skilled in the art will appreciate that the various steps
17 portrayed in this figure can be changed, omitted, rearranged, performed in parallel or adapted In various ways.
As illustrated in step 420, an incoming message can be received from a SlP client by a load balancer of the cluster network. In step 422, the load balancer can then distribute 5 the message to a SIP server having two versions of the application running, as previously discussed In step 424, the container can then determine whether the message is for an already established SlP session or whether the message is a request that would establish a new SiP session between the client and the SlP server.
As illustrated in step 426, the SlP server can route messages for previously iO established SΪP sessions to the old version of the application that is executing alongside the new version on the SiP server. The messages for new SΪP sessions, on the other hand can be routed to the new version, as illustrated in step 428. This can be achieved by the SIP server replacing the existing servlet mappings for the application being upgraded with new servlet mappings specified in the SIP deployment descriptor of the new version, upon
15 deployment of the new application version.
In step 430, an active session count can be maintained, such as by the SIP server itself or via scripts Implemented by a system administrator. The count is likely to decrement as existing calls (that are being handled by the old version of the application) are ended by various SIP clients. Whenever this active session count reaches zero, the new
20 version deployment can be gracefully committed, as illustrated in step 432, by undeployiπg the old version of the application. AH incoming traffic is then directed to the new version of the application. In this manner, no interruption in calls need be experienced by the SΪP server.
FIGURE 4C is an exemplary flow diagram of rollback functionality of the hitless
25 application upgrade, in accordance with various embodiments. Although this figure depicts functional steps in a particular sequence for purposes of illustration, the process is not necessarily limited to this particular order or steps. One skilled in the art will appreciate that the various steps portrayed in this figure can be changed, omitted, rearranged, performed in parallel or adapted in various ways.
30 As illustrated in step 440, a new version is deployed in the SlP server for processing incoming messages as previously discussed. New messages which are associated with new calls can be directed to this newly deployed version, as illustrated in
18 step 442. However, as shown in step 444, the new version of the application may not be functioning as previously expected. For example, new functionality added to the new version may cause an increase in latency or simply way not process messages as intended. In this scenario, a rollback can be performed.
5 As illustrated in step 446, the rollback can be initiated by υndeploying the new version of the application. Subsequently, the incoming messages for all calls, established and new, can be routed back to the old version of the application, as illustrated in step 448. This can be achieved by restoring the previous servlet mappings that were changed by the SiP server. Furthermore, since the deployment and undepioyment of the new version can
10 be done on a single engine tier node, impact on performance of the entire SlP server can be minimal. In this manner, hitless application upgrade can improve performance of the SIP server and various call processing as discussed below. Call Flow FIGURE 5 is an exemplary illustration of a simplified call flow in a typical SlP
15 communication session, in accordance with various embodiments. Although this figure depicts functional steps in a particular sequence for purposes of illustration, the process is not necessarily limited to this particular order or steps. One skilled in the art will appreciate that the various steps portrayed in this figure can be changed, omitted, rearranged, performed in parallel or adapted in various ways
20 As illustrated, a back to back user agent (B2BUA) 500, having a αinning SlP server thereon can take the place of being an intermediary between the communications sent between various users. This can be done for purposes of controlling the call and message flow between user agent !. 502 and user agent 2 504 and in order to prevent any unwanted behavior and messages (e.g. spamraiπg, hacking, viruses, etc.) from being sent
25 to the user agent device, ϊt should be noted that although user agent 1 502 and user agent 2 504 are illustrated as telephones in FIGURE 5, the SlP messages can come from various other sources as well. For example, the user agent can also be a cell phone, a wireless device, a laptop, an application or any other component that can initiate a SΪP type of communication. Similarly, while FIGURE 5 illustrates communications between two user
30 agents (502, 504), there can be more such user agents taking part of a single communication session. For example, during a conference call, there may be 20 or 30 user
19 agents tor all attendees of the conference, each of which could send SlP messages to the B2 Bl. A 500 and receive transmissions back therefrom
Continuing with the illustration, a telephone call can be set up between user agent 1 502 and user agent 2 504 sla the use of the SIP serv er The fust message sent from user 5 agent I 502 to the SlP server on the B2BUΛ 500 can be an invite message, requesting to set up a telephone call with use* agent 2 504 The invite message can be received by the load balancer 202 of the SlF server and it can be directed to an engine in the engine tier 210 for processing
In various embodiments, the engine tier (e g an application executing thereon) can
Ϊ0 then pci form logic far determining various factors associated with the call, such as determining whether user agent 1 502 is allowed to make the type of call attempted to be initiated, determining whether the callee that will be contacted is properly identified, as Λve!i as any othef logic that the serv er may need to calculate before attempting to set up a telephone call The engine can then generate state aioimd the fact that a call is being set
15 up, including generating the proper long lix ed and short lived objects associated with the messages, as previously discussed The engine can also determine how to find the target of the call (i e user agent 2 504) and the right path to route the message to the callee As illustrated herein, user agent I is an originator (as well as the terminator) of the call and user agent 2 is referred to as the callee
20 After reeeiv ing the im ite message, the SiP server can send a " 100 tr> ing" message back to usci agent 1 *>02. indicating that it has received the invite message and that it is in the process of handling it The "100 trying" message is part of the SlP protocol definition and can be used by a server in order to stop the user agent from re-transmitting the invite request In cellular phone environments, the user agent may have interference which might
2S cause an interruption or loss of various messages Therefore SIP protocol defines various re-transmission schemes in oidei to handle such ni obi lit) and interruptions Messages such as "' ! OC) trying," "' 180 ringing."1 and "200 OK" ate just some of the examples of messages defined in SlP for handling communication
Continuing with the illustration, the SlP server can then send an invite message to
30 the uses agent 2 504 and can reeehe back a " I SO tinging" message, indicating that uses agent 2 504 has received the invitation and is now waiting for a user to answer The SIP serv er engine tier can then Uansrnit the " 180 ringing" message back to user agent 1 502
20 When a person finally answers the phone, user agent 2 504 can then send a "200 ok" message to the SIP server, the server can transmit that message to user agent 1 502 The user agent i 502 can send a.n acknowledgement ("Ack" message) to lhe SIP server which can be transmitted along to user agent 2 504 and at this point a sound transfer conversation 5 can be set up between the two user agents. This sound transfer can be implemented via real transfer protocol (RTP) on a media server. At the end of the conversation, either user agent can choose to terminate the call by sending a "Bye" message, In this illustration, user agent 1 502 terminates the call by sending a '"Bye" message to the SIP server which sends it off to user agent 2 504. After receiving back a "200 ok" message from user agent
Ϊ0 2, the SlP server can transmit that message to user agent 1 and the conversation can be truly ended.
In various embodiments, the vertical lines such as those extending downward from the user agents 502, 504 and the B2BUA 500 can each illustrate and be referred to as a single call leg. The call flow for each call leg may be time sensitive as some messages
15 should be received or sent before others can be initiated. For example, as illustrated herein, the user agent A 502 may continue to re-transmit the initial invite message until it receives a " 100 trying" message from the B2BUA 500. As such, in some cases certain messages may need to be processed synchronously while others may be allowed to process in parallel.
20 It should be noted that this illustration of a call may be overly simplified for purposes of clarity. For example, there can be various other message transmissions (not illustrated) such as authentication messages for call er/cai lee, determining the type of user agent the SΪP server is communicating with and various other handshaking messages that can be exchanged between the SIP server and the user agents. Furthermore, message
25 transmitting steps may be added, changed, interrupted or rearranged in case of interference or failure of various components. Tlϊϊ?er_Objects
As previously discussed, in various embodiments there may be specific sequences of messages exchanged between the SIP server and the user agents for controlling the flow
30 of the call. These sequences can be controlled by various timer objects residing on the SΪP server. As a nori limiting illustration, after receiving the invite message from one user agent, the SIP server will typically forward that invite to another user agent and wait for a
21 response If no response is received within a period of time (e g a number of milliseconds), tiieu the inύte message may need to be retransmitted to the second user agent because it mav be assumed that the υsei agent did not receive the first message Thit> type of re-transmission can be controlled by the protocol timer objects which may be 5 residing in the state tier In one embodiment, an initial Tl timer value of 500 milliseconds can control the retransmission Interval for the invite request and responses and can also set the value of various other timers
In \ arioLis embodiments, there are also other time* objects which can be executing on the le\ei of the entire call For example, if after a specified period of lime, nothing i_,
10 heard back from eithet user agent, the entire call may be purged from the system This specified period of time can also be controlled by firing a rimer object
In one embodiment, a^ engine tier servers add new call state data to the state tier, state tie} instances queue and maintain a complete list of SlP protocol timers and application timers associated with each call F,ngine tier servers can periodically poll the
15 partitions of the state tier to determine which tuners base expired given the current time In order to a\oid contention on the timer tables, multiple engine tier polls to the state tier can be staggered The engine tier can then piocess the expired timers using threads in the sip timer Default execute queue Thus, the processing of the timer objects can be executed by the engine server as determined by the state tier serve* I1Or example, the state tier can
20 tell the engine Λ to execute the first half of ail due timer objects le g 1-100) and tell engine B to execute the other half (e g 101 -200) T he state tier can also simultaneously push the state onto the engine, since the state may need to be employed in executing the timer objects The engines can then process the timer, objects Ce g by sending appropriate messages, ending appropriate call^} and can later again query poll the state tier for which
2S timers have become due
When used with the near cache, the state data may not need to be pushed onto the engine server since that data ma> alread) be available in the cache Thus, when processing timers, the timers can be fetched from the state tier, however upon the timer firing, the engine can fetch the call state using the cache Further performance optimization can be
30 obtained by changing the selection of tiejs to give affinity to the engine holding the cache for a particular call Thus, the timers which are going to be executed can be sent to the appropriate engines which ha\ e the proper call state in the cache thereon
7? In various embodiments, it may be preferable to synchronize system server clocks Io a common time source (e.g within a few milliseconds) in order achieve maximum performance. For example, a.n engine tier server with a system clock that is significantly faster than other servers may process more expired timers than the other engine tier 5 servers. In some situations this may cause retransmits to begin before their allotted time and thus care may need to be taken to ensure against it,
In various embodiments, the SlF Servlet API can provide a timer service to be used by applications. There can be TimerService interface which can be retrieved from as a
ServletContext attribute. The TimerService can define a
ΪO "createTimer(SipApplicationSession appSession, long delay, boolean isPersistem, java.io SeriaiizahSe info)" method to start an application level tinier. The
SipAppUcationSession can be implicitly associated with the timer. When a timer fires, an application defined Tiinerϋstener is invoked and ServietTimer object passed up, through which the SipAppUcationSession can be retrieved which presides the right context of the
15 rimer expiry.
Failover
In various embodiments, the engine tier servers continual Iy access the state tier replicas in order to retrieve and write call state data. In addition, the engine tier nodes can also detect when a state tier server has failed or become disconnected. For example, in one
20 embodiment, when an engine cannot access or write call state data for some reason {e.g. the state tier node has failed or become disconnected) then the engine can connect to another replica in the partition and retrieve or write data to that replica. The engine can also report that failed replica as being offline. This can be achieved by updating the view of the partition and data tier such that other engines can. also be notified about the offline
25 state tier server as they access state data
Additional failover can also be provided by use of an echo server running on the same machine as the state tier server. The engines can periodically send heartbeat messages to the echo server, which can continually send responses to each heartbeat request. If the echo server fails to respond for a specified period of time, the engines can 30 assume that the state tier server has become disabled and report that state server as previously described. In this manner, even quicker failover detection is provided, since the
2λ engines can notice failed servers without waiting for the time that access is needed and without relying on the TCP protocol's retransmission timers to diagnose a disconnection,
Failover can also be provided for the engine tier nodes. As previously discussed, the engine tier nodes can periodically poll the stale tier nodes in order to determine which
5 timer objects it needs to execute. In turn, the state tier nodes can notice whenever the engine tier node has failed to poll Jf a specified period of lime elapses and the engine tier has not polled the state tier, the state server can then report that engine as unavailable {e.g. having failed or disconnected from the network). In this manner, failover can be implemented for both the state tier and the engine tier, thereby providing a more reliable
! 0 and secure cluster for message processi ng.
In other aspects, the invention encompasses in some embodiments, computer apparatus, computing systems and machine-readable media configured to carry out the foregoing methods. In addition to an embodiment consisting of specifically designed integrated circuits or other electronics, the present invention may be conveniently 15 implemented using a conventional general purpose or a specialized digital computer or microprocessor programmed according to the teachings of the present disclosure, as will be apparent to those skilled in the computer art.
Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the
20 software art. The invention may also be implemented by the preparation of application specific integrated circuits or by interconnecting an appropriate network of conventional component circuits, as will be readily apparent to those skilled in the art.
The present invention includes a computer program product which is a storage medium (media) having instructions stored thereon/in which can be used to program a
25 computer to perform any of the processes of the present invention. The storage medium can include, but is not limited to, any type of rotating media including floppy disks, optical discs, DVD, CD-ROMs, rnicrodrive, and magneto-optical disks, and magnetic or optical cards, nanosy stems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
30 Stored on any one of the machine readable medium (media), the present invention includes software for controlling both the hardware of the general purpose/specialized computer or microprocessor, and for enabling the computer or microprocessor to interact
24 with a human user or other mechanism utilizing the results of the present invention Such softwaje may include, but is uot limited to, device dmers, operating s\ stems, and user applications
Included in the programming (software) of the general specialized computei 01 5 microprocessor are software modules for implementing the teachings of the present invention, including, but not limited to providing systems and methods foi providing the SlP server architecture as discussed herein
Various embodiments may be implemented using a conventional general purpose Oi specialized digital computers) and 'Or processors) progiammed according to the 10 teachings of the present disclosure. as can be apparent to those skilled in the computer art Appropriate software coding can readily he prepared by skilled programmers based on the teachings of the present disclosure, as can be apparent to those skilled in the software art T he invention may also be implemented fax the preparation of integrated circuits and/or by interconnecting an appropriate network of conventional component circuits, as can be 15 readily appajent to those skilled in the art
Embodiments can provide, by way of example and without limitation, services such as
VoIP services, including, without limitation the following features
Basic features These include standards sen ices such as Voice mail, Caller ID 20 Call waiting, and call forwarding (the ability to forward a call to a different number)
AcK anced features Follow ing i s a bttef list of ad v ancetl features
Call logs The ability to view calls made over a given period of time online, ability to associate names with phone numbers, integrate call log information to other applications such as IM
2S Do not disturb The ability to specify policies around receiving calls for example, all calls during office hours to be automatically forwarded to a mobile teiminal, all calls during the night to be directed to voice mail etc
Locate me This is adx anced call forwarding Rather than have all calls forwarded to a single location (e g , voice mail) when the caller is busy. Locate me can try multiple
30 teiπύnals in sejies or in paialiel Foi example, a unci raa\ have two office locations a mobile, and a pager, and it may make sense to forward a call to both office locations first.
7^ then the pager, and then the mobile terminal Locate me is another example of feature interaction
Personal conferencing \ user could use an existing application (e g , Wi client) to schedule a Web/audio conference to start at a certain time Since the IM client already has 5 personal profile information, the conferencing system sends out the Web conference link information either thsough IM and/or email to the participants The phone contact information in the profile is used to automatically ring the participants at the time of the conference
Lifetime number This is the facility where a single \irtual number can travel with iO a customer wherever they live Even if they move, the old number continues to work, and reaches them at their new location This is really the analog of static IP addresses in a phone network
Speed dial I his is the ability to drarnaticall) expand the list of numbers that can be dialed through short -ke) and accelerator combinations This is another example of a 15 converged application, since It's \ ery likely that w hen a user will set up this information. when they work through the call logs on the operator user portal, and the updated information needs to be propagated to Die network side in real-time
Media delivery services, including, without limitation the following features Depending on the service lesεl agreement users are willing to sign up to, the 20 quality of media delivered (e g number of frames per second) will vary The policy engine enables segmenting the customer base by revenue potential, and to maximize return on investment made in the network
Context-sensitive applications including, without limitation the following features A typical example here is the need for applications that have ά short lifetime, 2^ extremely high usage peaks within their lifetime, and immediacy For example, voting on
American Idol during the show or immediate!) afterwards has prosed to be an extremely popular application
Integrated applications including, without limitation the following features The final class of applications is one that combines wireline and wireless terminal 30 usage scenaiios Λn example of an Integrated application i.s the following a mobile terminal user is on a conference call on their way to work When he reaches his office, he enters a special key sequence to transfer the phone call to his office phone The transfer
26 happens automatically without the user having to dial in the dial-in information again It's important to note hear that this capability be available without the use of any specific support from the hand-set (a transfct button for example)
Various embodiments include a computer progiam product vvhieh is a storage 5 medium (medial having instructions stored thereon/in which can be used to program a general purpose or specialized computing processor(sVde\ice(s) to perform any of the features presented herein I he storage medium can include, but is not limited to, one or more of the following any type of phy sical media including floppy disks, optica! discs, DVDs, CD-ROMs, microdmes, magneto-optical disks, holographic storage, ROMs,
SO RAMs, PRAMS, F.PROMs, ELPROMs. DRAMs, VRAVb, flash memory devices, magnetic or optical cards, nanosystems (including molecular memon ICs). paper or paper- based media, and any ts pe of media or device suitable for storing instructions and/ or information Various embodiments include a computer program product that can be transmitted in whole or in parts and over one or more public and/or prh ate networks
15 wherein the transmission includes instructions which can be used by one or moτe processors to perform any of the features* presented herein In \ arious embodiments, the transmission ma> Include a plurality of sepaiate transmi.ssioπs
Stored one or more of the computer readable medium (media), the present disclosure includes software for controlling both the hardware of general
20 purpose/specialized computers) and or processors), and for enabling the computers) and 'or processors) to Interact with a human user or other mechanism utilizing the results of the present invention Such software may include, but h not limited to, dc\ice drivers, operating systems, execution ernironrnernyeontainers, user interfaces and applications
The foregoing description of the preferred embodiments of the present i mention
2S has been prov ided for purposes of Illustration and description It is not intended to be exhaustive or to limit the invention to the precise forms disclosed Man) modifications and v ariations can be apparent to the practitioner skilled in the art Embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the relevant art to understand the invention
30 It is intended that the scope of the iπx eπtioπ be defined b\ the following claims and fheis equivalents
27

Claims

CLAIMSWlM.I.s .ciajmedjs ..
1. A computer Implemented method for upgrading an application, comprising' 5 maintaining a session initiation protocol (SiP) server distributed on a cluster network, the SIP server adapted to host applications, processing incoming messages by a first application deployed on the SΪP server; deploying a second application to the SIP server while maintaining processing by the first application; i 0 directing incoming messages for new calls to the second application; and directing the incoming messages for previously established calls to the first application.
2. The method of claim S wherein directing incoming messages further includes:
! 5 receiving a message by an engine node in a cluster network from a load balancer; determining by the SlP server on the engine node whether the message is associated with a new call or au established call , and assigning the message to the first application if the message is associated with the established call, otherwise assigning the message to the second application 20
3. The method of claim 1 further comprising: maintaining a count of active calls being processed by the first application,
4. The method of claim 3 further comprising.
25 undeploying the first application when the count of active calls processed by the first application reaches zero
5. The method of claim i further comprising: determining that the second application is not functioning as intended; and 30 undeploying the second application and directing the incoming messages for new calls back to the first application.
28
6. The method of claim i wherein deploying the second application further includes: activating the second application to process Incoming messages.
7. The method of claim 1 wherein the previously established call is an SiP session 5 established between the first application and a SIP client.
8. The method of claim 1 , further comprising: maintaining version information by the StP server In order to differentiate between the first application and the second application wherein the second application is a newer ! 0 versi on of the first appl i cati on .
9. The method of claim 1 further comprising: appending a version identifier string to the second application in order to distinguish the second application from the first, application by the SlP server, 15
10. The method of claim S wherein directing the incoming messages further includes; changing the servlet mappings by the SlP server such that incoming messages i^or new calls are routed to the second application and the incoming messages for old calls are routed to the first application. 20
1 1. A system for upgrading an application comprising: a session initiation protocol (SlP) server distributed over a cluster network and adapted to host applications; a first version application deployed on the SSP server for processing messages 25 directed to established calls; and a second version application deployed on the SIP server for processing messages directed to new calls.
12. The system of cl aim 11 , further comprising:
30 a load balancer for receiving an incoming message and directing {he message to an engine node in the cluster network wherein the SIP server running on the engine node determines whether the message is associated with a new call or an established call and
29 assigns the message to the first version application if the message is associated with the established call, otherwise assigns the message to the second application,
13. The system of claim 1 further comprising'
5 a count of active call s being processed by the first application that s s decremented as the first application finishes processing the messages for established calls,
14. The system of claim 13 wherein the first application is ursdepSoyed when the count of active calls processed by the first application reaches zero.
ΪO
15. The system of claim 1 1 wherein the second version application is υndeployed upon determining that the second version application is not functioning as intended and wherein the messages for new calls are directed to back to the first version application.
15 16. The system of claim 1 1 wherein a previously established call is an SiP session established between the first version application and a SIP client.
17. The system of claim 1 1 wherein the first version application and the second version application are simultaneously executing on the SIP server for a period of time 20
I S. The system of claim 1 1 further comprising" a version identifier string appended to the second version application in order to distinguish the second version application from the first, version application fay the SiP server. 25
10 A computer readable medium having instructions stored thereon which when executed by one or more processors cause a system to. maintain a session initiation protocol (SIP) server distributed on a cluster network, the SIP server adapted to host applications; 30 process incoming messages by a first application deployed on the SIP server; deploy a second application to the SIP server while maintaining processing by the first application,
30 direct incoming messages for new calls to the second application; and direct the incoming messages for previously established calls to the first application
31
PCT/US2007/069021 2006-05-16 2007-05-16 Hitless application upgrade for sip server architecture WO2007134338A2 (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US80109106P 2006-05-16 2006-05-16
US80108306P 2006-05-16 2006-05-16
US80094306P 2006-05-16 2006-05-16
US60/801,083 2006-05-16
US60/800,943 2006-05-16
US60/801,091 2006-05-16
US11/748,791 US8112525B2 (en) 2006-05-16 2007-05-15 Engine near cache for reducing latency in a telecommunications environment
US11/748,767 US8171466B2 (en) 2006-05-16 2007-05-15 Hitless application upgrade for SIP server architecture
US11/748,791 2007-05-15
US11/748,767 2007-05-15

Publications (2)

Publication Number Publication Date
WO2007134338A2 true WO2007134338A2 (en) 2007-11-22
WO2007134338A3 WO2007134338A3 (en) 2008-10-09

Family

ID=38694788

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2007/069021 WO2007134338A2 (en) 2006-05-16 2007-05-16 Hitless application upgrade for sip server architecture

Country Status (1)

Country Link
WO (1) WO2007134338A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009152703A1 (en) * 2008-06-17 2009-12-23 华为技术有限公司 Upgrading method and apparatus for session initiation protocol server
CN111026430A (en) * 2013-05-20 2020-04-17 派克赛泽有限责任公司 Method and system for flexible node composition on local or distributed computer system
CN116400935A (en) * 2023-06-09 2023-07-07 贵州爱信诺航天信息有限公司 Cross-platform deployment system and method based on domestic platform

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704933B1 (en) * 1999-02-03 2004-03-09 Masushita Electric Industrial Co., Ltd. Program configuration management apparatus
US6747970B1 (en) * 1999-04-29 2004-06-08 Christopher H. Lamb Methods and apparatus for providing communications services between connectionless and connection-oriented networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704933B1 (en) * 1999-02-03 2004-03-09 Masushita Electric Industrial Co., Ltd. Program configuration management apparatus
US6747970B1 (en) * 1999-04-29 2004-06-08 Christopher H. Lamb Methods and apparatus for providing communications services between connectionless and connection-oriented networks

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009152703A1 (en) * 2008-06-17 2009-12-23 华为技术有限公司 Upgrading method and apparatus for session initiation protocol server
CN111026430A (en) * 2013-05-20 2020-04-17 派克赛泽有限责任公司 Method and system for flexible node composition on local or distributed computer system
CN111026430B (en) * 2013-05-20 2023-10-13 派克赛泽有限责任公司 Method and system for flexible node composition on local or distributed computer system
CN116400935A (en) * 2023-06-09 2023-07-07 贵州爱信诺航天信息有限公司 Cross-platform deployment system and method based on domestic platform
CN116400935B (en) * 2023-06-09 2023-08-18 贵州爱信诺航天信息有限公司 Application installation system and method

Also Published As

Publication number Publication date
WO2007134338A3 (en) 2008-10-09

Similar Documents

Publication Publication Date Title
US8171466B2 (en) Hitless application upgrade for SIP server architecture
US8219697B2 (en) Diameter protocol and SH interface support for SIP server architecture
US8001250B2 (en) SIP and HTTP convergence in network computing environments
US7661027B2 (en) SIP server architecture fault tolerance and failover
US8112525B2 (en) Engine near cache for reducing latency in a telecommunications environment
US20080086567A1 (en) SIP server architecture for improving latency in message processing
US7844851B2 (en) System and method for protecting against failure through geo-redundancy in a SIP server
US7895475B2 (en) System and method for providing an instrumentation service using dye injection and filtering in a SIP application server environment
US9667430B2 (en) System and method for a SIP server with offline charging
US9723048B2 (en) System and method for providing timer affinity through notifications within a session-based server deployment
US20080147551A1 (en) System and Method for a SIP Server with Online Charging
US8078737B2 (en) System and method for efficient storage of long-lived session state in a SIP server
KR101189262B1 (en) System and method for managing communications sessions in a network
US8331351B2 (en) Communicating with session initiation protocol (SIP) application sessions using a message-oriented middleware system
US8179912B2 (en) System and method for providing timer affinity through engine polling within a session-based server deployment
US10146525B2 (en) Supporting hitless upgrade of call processing nodes in cloud-hosted telephony system
US7386114B1 (en) Distributed session-based data
WO2007134338A2 (en) Hitless application upgrade for sip server architecture
US20100329238A1 (en) System and method for exposing third party call functions of the intelligent network application part (inap) as a web service interface
CN102546712A (en) Message transmission method, equipment and system based on distributed service network
US9479606B2 (en) System and method for enhanced media brokering in VoIP network
WO2007134339A2 (en) Engine near cache for reducing latency in a telecommunications environment
Kim On SIP Server Clusters and the Migration to Cloud Computing Platforms
Van Den Bossche et al. ISE01-2: J2EE-based Middleware for Low Latency Service Enabling Platforms
JP4123440B2 (en) Object-oriented network distributed computing system, load balancing apparatus and server thereof

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07797496

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07797496

Country of ref document: EP

Kind code of ref document: A2