Developing a fault tolerant network design is essential in today's competitive market and in developing real-time and user-interactive applications such as unified messaging systems. Unified messaging systems at least require reliability and load balancing at the hardware level along with reliability at the software level. Reliability and load balancing at the hardware level are typically implemented by Internet Protocol private branch exchanges (IP-PBXs) and media gateways employing the use of, for example, domain name server service records (DNS SRV) and NPATR records as described in the Internet Engineering Task Force (IETF) RFC 3263, the entire disclosure of which is incorporated herein by reference. Other systems use session initiation protocol (SIP) proxies or SIP-aware network load balancers to distribute traffic and also achieve fault-tolerance. SIP, as described in the Internet Engineering Task Force (IETF) RFC 3261, the entire disclosure of which is incorporated herein by reference, is an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.
Reliability at the software level is typically implemented by using a hot/cold standby (or hot-swap) approach whereby two redundant copies of the same process are kept running. Control switches from one process to the other based on need or time to implement process recycling. For SIP-based software applications, however, these existing implementations are ineffective at least because the SIP-based software applications typically do not have control over the transport sockets (e.g., transmission control protocol/universal datagram protocol) carrying the SIP data for duplication across the processes. Further, SIP, like other real-time control protocols, has inherent timeouts and existing implementations are not fast enough to avoid timeouts. Further, once the SIP call is established, the media packets are transmitted using dynamically assigned ports such as in the real-time transfer protocol (RTP) and the real-time transport control protocol (RTCP). Existing systems fail to initiate the recycling process at the SIP call establishment phase (e.g., before any media packets are transmitted).
Embodiments of the invention implement fault tolerant process recycling in unified messaging applications based on application layer signaling protocols. At runtime, one or more unified messaging worker processes capable of servicing incoming calls are identified. In an embodiment, the invention uses a redirect method of the signaling protocol to redirect incoming calls from a caller to one of the unified messaging worker processes based on availability of the worker processes and other factors. In this manner, applications implement fault tolerant process recycling without maintaining connection parameters such as call mappings or socket level details of each worker process.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Other features will be in part apparent and in part pointed out hereinafter.
Corresponding reference characters indicate corresponding parts throughout the drawings.
As illustrated in the exemplary embodiment of
Typical non-SIP-based networking applications implement a hot/warm standby procedure with a manager process such as manager process 104 handing new connections to the currently active worker process (e.g., worker process 106) by duplicating the network socket handle and passing the duplicated network socket handle to the active worker process 106. SIP-based networking applications, however, have a stack that is written on top of a conventional transmission control protocol/universal datagram protocol (TCP/UDP) stack. As such, the low level socket details are abstracted or hidden from the SIP-based networking application. Thus, the SIP applications running at the highest layer have no control over the actual network sockets to switch control between the manager process 104 and active worker processes 106. With aspects of the invention, however, the SIP REDIRECT mechanism effectively enables the SIP applications (e.g., manager process 104) to implement process recycling independent of the network connections associated with each of the worker processes 106. The TCP/UDP stack maintains the network connection details of the worker processes 106.
Referring again to
In the example of
The UM server 102 has the central manager process 104 that maintains worker instance managers 116 to maintain, monitor, or otherwise manage the worker processes 106 to, for example, implement fault tolerance, high availability, reduced timeouts, speed, and efficiency. As such, there are one or more active and passive worker processes 106. In one embodiment, the manager process 104 stores a list of the worker processes 106 in a memory area 118. Each of the worker processes 106 has connection parameters associated therewith. Connection parameters may include, for example, a port number, network address, socket number, and machine name. The manager process 104 and worker processes 106 exchange health monitoring and other control messages over a private transmission control protocol (TCP) channel. In one embodiment, the UM server 102 (or UM application) executes on a first computing device while one or more of the worker processes 106 execute on a second computing device.
The UM server 102 also stores one or more computer-executable components comprising a health component 120, a manager component 122, and an application layer signaling protocol component such as redirect component 124. In the embodiment of
The manager component 122 maintains an ordered list of the worker processes 106 based on the preference attributes determined by the health component 120. In one example, the ordered list represents the order in which the worker processes 106 are selected by the manager process 104 to handle incoming calls. The ordered list is independent of the connection parameters associated with each of the plurality of worker processes 106. The application layer signaling protocol component receives a call invitation from a caller and redirects the caller to one of the worker processes 106 based on the ordered list from the manager component 122 prior to receiving media content from the caller. The caller proceeds to establish a call with the worker process 106 via the connection parameters associated with the worker processes 106. In one embodiment, the application layer signaling protocol component executes during a signaling stage of the application layer signaling protocol (e.g., prior to receiving media content from the caller via the call). In one example, the manager process 104 monitors the number of calls made to each worker process 106.
In one example, when the manager process 104 receives an SIP NVITE call invitation message (e.g., at port 5060 of the UM server 102) from a caller via the media gateway 108, the manager process 104 determines whether there are any healthy worker processes 106 to receive the call. For example, the manager process 104 determines the preference attributes for each of the worker processes 106 and selects one of the worker processes 106 based on the determined preference attributes. In this example, the manager process 104 is associated with the application program executing the application layer signaling protocol (e.g., SIP) on the UM server 102. The manager process 104 identifies the active worker process 106 and issues the REDIRECT (e.g., SIP 302 message), while the low-level TCP/UDP driver stack on the UM server 102 determines the port number (e.g., 5061 in this example) associated with the active worker process 106. The REDIRECT mechanism effectively asks the media gateway 108 to send a new SIP INVITE for that call to, for example, port 5061 on the UM server 102 where the active worker process 106 is listening. The call continues between the media gateway 108 and the worker process 106.
The receipt of the SIP invite and the identification of the active worker process 106 occur during a signaling stage of the signaling protocol (e.g., SIP). The health monitoring may occur during or prior to the signaling stage. In this manner, the operation of the manager process 104 to identify and select the worker process 106 occurs independent of the connection parameters associated with the worker processes 106.
In one embodiment of the invention, a general purpose computing device such as a computer is suitable for use as the UM server 102. The computer typically has at least some form of computer readable media. Computer readable media, which include both volatile and nonvolatile media, removable and non-removable media, may be any available medium that may be accessed by the computer. By way of example and not limitation, computer readable media comprise computer storage media and communication media. Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. For example, computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store the desired information and that may be accessed by the computer. Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. Those skilled in the art are familiar with the modulated data signal, which has one or more of its characteristics set or changed in such a manner as to encode information in the signal. Wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media, are examples of communication media. Combinations of any of the above are also included within the scope of computer readable media.
Although described in connection with an exemplary computing system environment, including the computer, embodiments of the invention are operational with numerous other general purpose or special purpose computing system environments or configurations. The computing system environment is not intended to suggest any limitation as to the scope of use or functionality of any aspect of the invention. Moreover, the computing system environment should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with aspects of the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
Referring next to
In one embodiment, one or more computer-readable media have computer-executable instructions for performing the method illustrated in
Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices. In operation, the computer executes computer-executable instructions such as those illustrated in the figures to implement aspects of the invention.
In one embodiment, the figures and description herein constitute exemplary means for implementing fault tolerant unified messaging via process recycling using the signaling protocol and exemplary means for monitoring the health of the plurality of worker processes.
The order of execution or performance of the operations in embodiments of the invention illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and embodiments of the invention may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the invention.
Embodiments of the invention may be implemented with computer-executable instructions. The computer-executable instructions may be organized into one or more computer-executable components or modules. Aspects of the invention may be implemented with any number and organization of such components or modules. For example, aspects of the invention are not limited to the specific computer-executable instructions or the specific components or modules illustrated in the figures and described herein. Other embodiments of the invention may include different computer-executable instructions or components having more or less functionality than illustrated and described herein.
When introducing elements of aspects of the invention or the embodiments thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements.
As various changes could be made in the above constructions, products, and methods without departing from the scope of aspects of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.
This application claims the benefit of U.S. Provisional Application No. 60/748,362, filed Dec. 7, 2005, herein incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
60748362 | Dec 2005 | US |