System and method for recovering from endpoint failure in a communication session

A method for recovering a communication session after failure of an endpoint includes establishing a communication session between a first endpoint and a second endpoint, receiving keep alive signals from the first endpoint, detecting an interruption in the keep alive signals, and transferring the communication session with the second endpoint from the first endpoint to a third endpoint. A network device includes an interface that receives keep alive signals from a first endpoint in a communication with a second endpoint, and also includes a process or service that detects an interruption in the keep alive signals and transfers the communication session with the second endpoint from the first endpoint to a third endpoint.

TECHNICAL FIELD OF THE INVENTION

This invention relates generally to the field of packet-based communication networks, and more particularly to a system and method for recovering from endpoint failure in a communication session.

BACKGROUND OF THE INVENTION

Historically, telecommunications have involved the transmission of voice and fax signals over a network dedicated to telecommunications, such as the public switched telephone network (PSTN) or a private branch exchange (PBX). Currently, telecommunications and data transmission are being merged into an integrated communication network using technologies such as voice over Internet protocol (VoIP). Earlier communication technology involved devices with relatively limited capabilities, and because of their simplicity, these devices rarely failed. Furthermore, when the devices did fail, it was a relatively simple process to reestablish connections. However, as telecommunication systems have become more complex and the capabilities of communication devices have increased, failure in communication devices has become more and more common.

SUMMARY OF THE INVENTION

The present invention includes a system and a method for recovering from endpoint failure in a communication session that substantially reduce or eliminate disadvantages or problems associated with previously developed systems and methods. In particular, certain embodiments of the present invention allow a connection between endpoints to be automatically reestablished or transferred in the case of endpoint failure, reducing complications associated with endpoint failure.

In accordance with a particular embodiment of the present invention, a method for recovering a communication session after failure of an endpoint includes establishing a communication session between a first endpoint and a second endpoint, and receiving keep alive signals from the first endpoint. The method also includes detecting an interruption in the keep alive signals, and maintaining a connection with the second endpoint after the interruption. The method further includes reestablishing the communication session if the first endpoint becomes available again.

In accordance with another embodiment of the present invention, a server includes an interface operable to receive keep alive signals from a first endpoint in a communication session with a second endpoint. The server also includes a process or service operable to detect an interruption in the keep alive signals, and to maintain a connection with the second endpoint after the interruption. The process or service also reestablishes the communication session with the first endpoint if the first endpoint becomes available again.

In accordance with yet another embodiment of the present invention, a method for recovering a communication session after failure of an endpoint includes establishing a communication session between a first endpoint and a second endpoint, and receiving keep alive signals from the first endpoint. The method also includes detecting an interruption in the keep alive signals, maintaining a connection with the second endpoint, and transferring the communication session with the second endpoint from the first endpoint to a third endpoint. Another embodiment of the present invention includes a server with an interface and a process or service. The interface receives keep alive signals from a first endpoint in a first communication session with a second endpoint. The process or service detects an interruption in the keep alive signals, maintains a connection with the second endpoint, and transfers the communication session with the second endpoint from the first endpoint to a third endpoint.

Technical advantages of certain embodiments of the present invention include a method for automatically reestablishing a communication session after endpoint failure. This reduces the difficulty associated with reestablishing a lost connection manually. Another technical advantage of certain embodiments of the present invention is the ability to automatically establish a connection with an alternate endpoint associated with a user of a failed endpoint. This allows communication to continue even when one endpoint associated with the user has failed. By providing a fail-over mechanism to address endpoint failure, the reliability of packet-based communication networks is increased.

Yet another technical advantage of certain embodiments of the present invention includes the ability to transfer a caller to a voice mail system, if an endpoint with which the user is communicating fails. This allows the user to leave a message for another user which can be retrieved after failure of the endpoint.

Still another technical advantage of certain embodiments of the present invention includes a system and method for automatically resetting an endpoint that is experiencing problems. By pressing a reset button associated with an endpoint, a user can initiate recovery procedures to preserve the communication session. Accordingly, such recovery procedures may be manually initiated by a user who detects problems with an endpoint.

Numerous other technical advantages will be readily apparent to one skilled in the art from the following figures, descriptions, and claims. Particular embodiments of the present invention may include some, all, or none of the advantages described.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1illustrates a communication system100that includes endpoints104that exchange audio, video, data or other information (generally referred to as “media”) using network102. System100includes a call manager106, a Light Directory Access Protocol (LDAP) directory110, and a reliability server107that communicate using network102. System100preserves communication sessions after failure of an endpoint104by transferring or reestablishing the communication session after the endpoint104fails.

During a communication session between two endpoints104, reliability server107receives keep alive signals from at least one of the endpoints. If reliability server107detects failure of an endpoint104, reliability server107will instruct the call manager to maintain a connection with the other active endpoint104, and take corrective action to maintain the communication session. In accordance with a particular embodiment, reliability server107initiates a reboot of the failed endpoint104. A prerecorded message may be delivered to the active endpoint104indicating that the failed endpoint104is experiencing problems. If reliability server107detects that the failed endpoint104has successfully rebooted, the active endpoint104is reconnected with the previously failed endpoint104, and the communication session continues.

In another embodiment, reliability server107attempts to transfer the communication session with the active endpoint104to another endpoint104associated with the user of the failed endpoint104. For example, the user of the failed endpoint104may have access to a mobile or cellular phone. Reliability server107identifies the alternate endpoint104and transfers the communication session with the active endpoint104from the failed endpoint104to the alternate endpoint104. According to a particular embodiment, reliability server107accesses LDAP directory110to identify the alternate endpoint104, which is associated with a user of the failed endpoint104.

Network102refers generally to any network capable of transmitting media between endpoints104. Network102may be a local area network (LAN), wide area network (WAN), global distributed network such as the Internet, Intranet, or Extranet, or any other form of wireless or wireline communication network. Generally, network102provides for the communication of packets, cells, frames, or other portions of information (generally referred to as packets) between endpoints104. Network102may include any combination of gateways, routers, hubs, switches, and any other hardware and/or software implementing any number of communication protocols that allow for the exchange of packets in system100. Network102may be coupled to non-packet-based networks, such as the public switched network (PSTN)114, using a gateway113. Network102may use any suitable protocol including Internet protocol (IP), frame relay, asynchronous transfer mode (ATM), synchronous optical network (SONET), or any other suitable protocol for carrying information.

Endpoints104may be any combination of hardware and/or software that provide communication services to a user. For example, endpoints104may be telephones, computers running telephony software, video monitors, cameras, or any other communication or processing hardware, software and/or embedded logic that supports communication of information, and is capable of coupling to network102or PSTN114. Endpoints104may also include cellular phones, wireless phones, unattended or automated systems, gateways, multipoint control units (MCUs), interactive voice response servers (IVRs), other intermediate components, or other devices that can establish media sessions. AlthoughFIG. 1illustrates a particular number of endpoints104, system100contemplates any number and arrangement of endpoints104in network102.

Endpoints104exchange media in communication sessions. The term “communication session” refers to any connection between endpoints104allowing exchange of media. One of the endpoints104may fail during a communication session because of software errors, memory overloads, power failures or any number of other conditions that prevent endpoint104from communicating media. System100can preserve a communication session with one of the endpoints104if another endpoint104in the communication session fails.

Call manager106represents any combination of hardware and/or software for managing communications between endpoints104over network102. Call manager106may perform any manner of call processing, including assignment of bandwidth, establishing connections between endpoints104, redirecting calls within network102, and any other suitable form of call management. Call manager106also manages state information116. State information116represents the progress of calls managed by call manager106, so that if a communication is interrupted, call manager106can reestablish the connection using state information116.

Although the depicted embodiment shows call manager106as a separate component, the functions of call manager106may be distributed among other components of system as well. Accordingly, certain embodiments of system100may be adapted to use peer-to-peer protocols, such as Session Initiation Protocol (SIP) or H.323, that allow endpoints104in network102to negotiate point-to-point communication sessions managed by endpoints104themselves rather than a separate call manager106. In such embodiments, call manager106represents a collection of call management functions performed by various components of system100.

LDAP directory110stores a directory of customized information about user(s), such as alternate phone numbers associated with the user(s). In a particular embodiment, information in directory110is stored so that components of system100can access directory110using LDAP. However, various types of directories may be used, and various types of protocols may be used to communicate with such directories to extract information therefrom. It should be understood that directory110information may be stored and accessed in any appropriate manner. Therefore, when a reference is made to LDAP directory110, such a reference is intended to encompass other suitable variations as well.

Reliability server107monitors endpoints104for failure and recovers a communication session after one of the endpoints104in the communication session fails. Reliability server107may be embodied as hardware and/or software, and the functions of reliability server107may be performed by one or distributed amongst more than one component of network102, such as call manager106, personal assistant110, or any other suitable local or remote component.

In operation, call manager106receives a request from endpoint104ato establish a call. Call manager106establishes a connection between endpoint104aand destination endpoint104b.

During the communication session, endpoints104send keep alive signals to reliability server107. Keep alive signals, also known as heartbeats, include any form of information sent periodically to reliability server107that indicates to reliability server107that endpoint104is still active, and may include responses to ping messages sent by reliability server107. In an Internet protocol (IP) network, keep alive signals may be communicated using a suitable protocol, such as transport control protocol (TCP) or User Datagram Protocol (UDP), in the form of appropriate signaling information.

Reliability server107monitors the communication session for an interruption in keep alive signals. If an interruption is detected, reliability server107may determine whether the interruption was due to voluntary disconnection rather than endpoint104failure by monitoring the communication session for disconnect signals, such as endpoint104going to an “on-hook” state. In certain embodiments of system100, keep alive signals are sent by endpoint104even after the call is disconnected. In a particular embodiment, reliability server107registers an interruption only when a significant number of keep alive signals are missed, so that occasional packet loss is not mistaken for endpoint104failure. If reliability server107determines that the interruption in keep alive packets resulted from endpoint104failure, reliability server107maintains the connection with endpoint104b, and either transfers the communication session to another endpoint104cor reestablishes the communication session with the original endpoint104a.

To transfer the communication session, reliability server107identifies an alternate endpoint104cassociated with the user of failed endpoint104a, usually by consulting LDAP directory110. Alternate endpoint104cmay be a mobile or cellular telephone, a landline telephone, a voice mail system, or any other suitable endpoint associated with the user of the failed endpoint104a. A particular user may be associated with multiple alternate endpoints104a, each of which may be selected under different conditions. For example, during business hours, reliability server107selects an office phone, but after hours, it selects a home phone. In another example, failed endpoint104ais a computer located in an office, and alternate endpoint104cis a landline telephone in the office.

Once reliability server107identifies alternate endpoint104c, reliability server107transfers the communication session with active endpoint104bto alternate endpoint104c. In a particular embodiment, reliability server107transfers the communication session by instructing call manager106to establish a communication session between active endpoint104band alternate endpoint104c. The entire transfer can be performed automatically without input from the user of active endpoint104b, thereby saving time and effort associated with manually reconnecting. System100may facilitate the transfer by carrying over state information116from the previous communication session between endpoints104aand104b. For example, if call manager had been instructed to block call waiting for failed endpoint104a, it could carry over the instruction and block call waiting for alternate endpoint104cas well.

In a particular embodiment, system100transfers active endpoint104bto a voice mail system. The user of active endpoint104bmay then complete the conversation by recording a message or may leave information that allows the user of failed endpoint104ato reestablish communication with active endpoint104b. This feature is particularly useful when the user of failed endpoint104adoes not have sufficient information to reestablish the connection, such as when the user of failed endpoint104adoes not know the phone number of active endpoint104b. In such cases, only the user of active endpoint104bcan attempt to reestablish the connection, but that user has no way of knowing when failed endpoint104awill reactivate. As a result, the user often makes several failed attempts to reestablish the connection before failed endpoint104arecovers. System100creates a better alternative by allowing the user of active endpoint104bto provide contact information to the user of failed endpoint104a, who can then attempt to reestablish the connection after failed endpoint104areactivates itself or call endpoint104bfrom another endpoint104.

As an alternative to immediately transferring the communication session, reliability server107may attempt to reactivate failed endpoint104aand reestablish the communication session with failed endpoint104a. To reactivate endpoint104a, reliability server107sends a message to call manager106or to endpoint104ainstructing endpoint104ato reboot. Reliability server107then waits for a predetermined amount of time to see if failed endpoint104asuccessfully reactivates. While reliability server107waits for failed endpoint104ato reactivate, reliability server107may send a message indicating to the user of active endpoint104bthat endpoint104ahas failed and that system100is attempting to reestablish the connection. If endpoint104asuccessfully reactivates, reliability server107reestablishes the communication session between endpoints104aand104b. Otherwise, reliability server107identifies a suitable alternate endpoint104c, and transfers the connection.

Certain embodiments allow system100to conserve system100resources by restricting the circumstances in which recovery techniques will be applied. In one such embodiment, system100uses a priority system that assigns a higher priority to particular communication sessions, users, and/or endpoints104. If endpoint104fails during a high-priority communication session, reliability server107recovers the session. If, on the other hand, endpoint104fails during a lower-priority communication session, then the communication session may be terminated and require manual reestablishment.

Other embodiments allow a user to manually trigger reliability server107to transfer the communication session to another endpoint104. In one such embodiment, endpoint104interrupts the keep alive signals when the user of endpoint104presses a reset button. In another such embodiment, pressing the reset button sends a message to reliability server107to transfer the connection without interrupting the keep alive signals. In response, reliability server107automatically transfers the communication connection to the alternate endpoint104. This feature is useful in cases where the performance of endpoint104degrades and the user desires a higher quality connection and wishes to transfer a call to an alternate endpoint104to obtain a better connection. Accordingly, a user has the option to manually reset an endpoint to allow system100to reset the endpoint and/or identify an alternate endpoint if the user is experiencing a “bad connection” (e.g., static, background noise, echo, etc.). The user can reset endpoint104before reliability server107detects trouble and can trigger a reset even when reliability server107would not otherwise treat the problems in the connection as endpoint104failure.

The depicted components of system100may be modified in various ways without substantially affecting the overall operation of system100. The functions of the components may be distributed in system100or consolidated with other elements. Each component may be embodied as hardware, software, or any combination of the two, including any number and variety of processors, interfaces and memory modules. The processors may be any process or service for processing information, and may include microprocessors, microcontrollers, digital signal processors (DSPs), or any other suitable hardware or software configured to process information, such as logic embodied on a computer readable medium. The interfaces may include any port or connection, whether real or virtual, that allows components to communicate with network102. The memory modules may include volatile or non-volatile memory, magnetic media, optical media, CD-ROMs, DVD-ROMs, or any other suitable local or remote media component. Because of the numerous possible variations on system100, system100should be viewed example of a system that recovers communication sessions after endpoint failure, rather than as an exclusive definition of such a system.

FIG. 2shows a particular embodiment of a system200that processes calls for a call servicing center. System200allows the user of endpoint204to connect to an interactive voice response (IVR) server202through a network209, which is substantially equivalent to network102ofFIG. 1. Endpoint204may connect to network209directly (shown by endpoint204b) or may connect from the PSTN using gateway211. IVR202prompts the user of system200for information, receives voice information or another suitable form of input from the user, and retrieves and/or stores information in response to commands from the user. IVR202includes hardware and/or software and may include processors, interfaces, memory modules, or any other suitable component.

When IVR202afails during a communication session, it is inefficient to require the user to redial or otherwise manually reconnect to system200. Instead, system200allows a communication session to be transferred automatically to a second IVR202b, so that the user does not have to redial the same number if the first IVR202afails. In certain embodiments, the state of the caller in the first IVR202ais preserved so that the caller does not have to re-enter information that was entered before IVR202afailed, such as an account number or a Social Security number. A technical advantage of certain embodiments of system200is that the transfer can be performed automatically and seamlessly, so that the user is not even aware that IVR202ahas failed. Alternatively, system200may play a prompt to the user indicating that IVR202afailed, and that corrective measures are being taken.

Call manager206manages connections between endpoint204and IVR202, and represents any hardware and/or software suitable for call processing in system200. Call manager206is also capable of transferring a connection with endpoint204from one IVR202ato another IVR202bwhen IVR202afails. Reliability server208monitors keep alive signals from IVRs202, and may be embodied as a form of hardware and/or software suitable to receive keep alive signals, to monitor the keep alive signals, and to send messages to call manager206if the keep alive signals should be interrupted. Although labeled as a “server,” reliability server208may be implemented in any network architecture, and may be distributed in other components of system200. For example, a backup IVR202bcould monitor the activity of IVR202aand take over a connection when IVR202afails.

Memory210stores state information212and status information214for IVRs202. Memory210may be any form of information storage, including read only memory (ROM), random access memory (RAM), CD-ROMs, DVD-ROMs, magnetic media, optical media, volatile memory, nonvolatile memory, or any other suitable local or remote memory component. Memory210may be part of reliability server107, or may be any other storage accessible by components of system200. State information212includes state information for calls in system200that allows call manager206to transfer a communication with endpoint204from failed IVR202ato alternate IVR202b. IVR information214lists the availability of various IVRs202in system200to process calls. IVR information214is used by call manager206to identify an available IVR202bwhen an IVR202ain a communication session with endpoint204fails. IVR information214may also include status information regarding the progress of a call between IVR202and endpoint204, which may include previous answers submitted by the caller to IVR202.

In operation, reliability server208monitors keep alive signals received from IVRs202. Endpoint204communicates with IVR202aand exchanges information with IVR202a. If IVR202afails, reliability server208detects an interruption in the keep alive signals. Reliability server208then notifies call manager206that IVR202ahas failed. Reliability server208instructs call manager206to determine another available IVR202busing IVR information214. Reliability server208then instructs call manager206to establish a connection between IVR202band endpoint204automatically using state information212and/or other information collected and stored during the communication session between endpoint204and IVR202a. This allows the connection with endpoint204to continue substantially uninterrupted. This saves the user of endpoint204from having to reestablish a connection with IVR202and re-enter information.

Numerous modifications and replacements of components of system200may be made without substantially affecting the overall functioning of system200. For example, call manager206may perform the functions of reliability server208as well. Different or additional components may be included in system200as well, such automatic call distributors (ACDs) in addition to, or in place of, IVRs202. System200should therefore be viewed as an illustrative example of using recovery techniques for communication sessions rather than as an exclusive definition.

FIG. 3is a flowchart300showing one example of a method for recovering a communication session after endpoint failure. System100establishes a communication connection between endpoints104aand104bat step302. At step304, system100monitors keep alive signals from endpoint104a. System100determines if system100is still receiving keep alive signals from endpoint104aat step306. If system100is still receiving keep alive signals, system100continues to monitor the keep alive signals at step304. If system100has detected an interruption in the keep alive signals, system100determines whether it has received a termination message indicating that the communication session was ended voluntarily, at step308. If system100received a termination message, system100ends the communication at step310. In certain embodiments of system100, endpoints104may continue to send keep alive signals to indicate that endpoints104are available for calls even when there is no active call with an endpoint104. In such embodiments, system100may receive a termination message without an interruption in keep alive signals.

If there has been an interruption in keep alive signals that is not associated with a termination message, system100maintains the connection with active endpoint104b, at step312. System100saves state information for the communication session at step314. The state information is later used to transfer or to reestablish the communication session. System100notifies active endpoint104bthat failed endpoint104ais experiencing difficulty at step316, and sends a message to failed endpoint104ainstructing the endpoint to reboot at step318.

System100waits for a predetermined period of time after the reboot message is sent, monitoring for keep alive signals from endpoint104ato resume at step320. At step322, system100determines whether any keep alive signals were received during the predetermined time period. If keep alive signals were received, system100reestablishes the existing connection between endpoints104aand104bat step324and monitors keep alive signals in the reestablished communication session at step304. If no keep alive signals were received, system100retrieves directory information at step326. System100selects an alternate endpoint104cusing the directory information at step328, and transfers the communication session with active endpoint104bfrom failed endpoint104ato alternate endpoint104cat step330. Once this communication connection is established, system100monitors keep alive signals from the endpoint104cand proceeds with the method as before from step304.

The method described is only one example of recovering a communication session after endpoint failure. Alternative methods are available, and various steps of the method presented may be omitted, rearranged and/or performed concurrently or continuously without substantially affecting the overall operation of the method. Consequently, the method presented should be viewed as an example, rather than as the only possible method for recovering a communication session after endpoint failure.

Although particular embodiments of the present invention have been described, a myriad of modifications, improvements, and variations are possible for one skilled in the art without departing from the spirit of the present invention. It is intended that the present invention include all such modifications, improvements, and variations as are included in the scope of the appended claims.