WO2006128147A2 - Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture - Google Patents
Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture Download PDFInfo
- Publication number
- WO2006128147A2 WO2006128147A2 PCT/US2006/020856 US2006020856W WO2006128147A2 WO 2006128147 A2 WO2006128147 A2 WO 2006128147A2 US 2006020856 W US2006020856 W US 2006020856W WO 2006128147 A2 WO2006128147 A2 WO 2006128147A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- message
- server
- active
- communication devices
- execution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 238000004891 communication Methods 0.000 claims abstract description 165
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 230000011664 signaling Effects 0.000 claims description 73
- 230000004044 response Effects 0.000 claims description 48
- 238000012545 processing Methods 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 101000666896 Homo sapiens V-type immunoglobulin domain-containing suppressor of T-cell activation Proteins 0.000 description 1
- 101100521334 Mus musculus Prom1 gene Proteins 0.000 description 1
- 102100038282 V-type immunoglobulin domain-containing suppressor of T-cell activation Human genes 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- IJJVMEJXYNJXOJ-UHFFFAOYSA-N fluquinconazole Chemical compound C=1C=C(Cl)C=C(Cl)C=1N1C(=O)C2=CC(F)=CC=C2N=C1N1C=NC=N1 IJJVMEJXYNJXOJ-UHFFFAOYSA-N 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2043—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/35—Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M7/00—Arrangements for interconnection between switching centres
- H04M7/006—Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer
- H04M7/0081—Network operation, administration, maintenance, or provisioning
- H04M7/0084—Network monitoring; Error detection; Error recovery; Network testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
Definitions
- the method includes copying at least the application layer state information from the active one of said communication devices to the application layer of the other of the communication devices.
- the incoming network message is copied to the other of said communication devices and is processed by a VoIP signaling layer of the other of the communication devices and an out of order message sequence is resolved into a proper order by detecting an improper message sequence.
- the invention features a method of providing application synchronization among a plurality of servers in an VoIP network environment.
- the method includes pausing execution of an application on a standby server when the standby server encounters a checkpoint in the application and receiving a first message indicating that an active server reached the same checkpoint in a copy of the application executing on the active server.
- the method also includes transmitting, from the standby server, a second message to the active server indicating that the standby server received the first message and resuming execution of the application on the standby server
- the service is a VoIP service.
- the method 400 also includes associating (STEP 440) the virtual address with the other of the communication devices in response to the detection of the fault.
- the other of communication devices 110 continues to provide the service from the same execution point. Said another way, the application 336' on the standby 150' resumes execution of the application 336' at the same place as the where the active server 150 stopped. This could be the same instruction or the next instruction of the application 336.
- Other elements and communication devices 110 (not shown) of the network 140 transmit messages to the active server 150.
- the active server 150 receives (STEP 420) the messages.
- active server 150 processes the messages and generates a response to each of the received messages.
- a fault can occur at the active server 150.
- a software fault occurs.
- an operating system failure can require a system reboot.
- Other examples of software faults include, but are not limited too, an application failure, a protocol failure, a thread failure, memory exhaustion, disk space exhaustion, and the like.
- a hardware fault occurs. Examples of hardware faults include, but are not limited to, a power supply failure, a memory failure, a processor failure, network card failure, and the like.
- the point of execution in the program is noted. In another embodiment, the point of execution of the program 336 is not noted.
- a method 500 by which a similar stream of events can be processed in a way that result in the derivation of an equivalent set of application and signaling state information on the standby server 150' is shown and described. Additionally, the method 500 describes processing the event stream in such a way so as to produce a replica of the application and signaling state information existent on the active server 150. This state information can be derived from the event stream on the standby server 150', even when the two event streams are allowed to differ in the order and timing of events.
- the stored program 336 executing on the active server 150 causes a signaling request to be sent to the signaling layer 344.
- the standby server 150' executing the same program 336' receives a copy the message from the active server 150.
- the copy of the message is forwarded to the signaling stack 344' of the standby server 150'.
- the standby server 150' receives the same message at close to the same instant, but not precisely the same instant, as the active server 150.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
Systems and method for providing application layer fault tolerance in a VoIP architecture is shown and described. The method includes associating a virtual network address with one of a first communication device and second communicatio device, receiving a message from a network element, detecting a fault on an active one of the communication devices, and associating the virtual address with the other of the communication devices. Each of the first and second communication devices i coupled to a VoIP network. The virtual network address is associated with the active one of the communication devices. The detection of the fault occurs when the active communication device is at a first execution point of an application executing on the active communication device. When the virtual address is associated with the other communication device, the other of communication devices continues to provide the service from the first execution point.
Description
SYSTEMS AND METHODS FOR A FAULT TOLERANT VOICE-OVER-INTERNET PROTOCOL (VOIP) ARCHITECTURE
FIELD OF THE INVENTION
[0001] This application relates generally to telecommunications. More particularly, the application relates to a fault tolerant Voice-over-Internet Protocol (VoIP) architecture.
BACKGROUND OF THE INVENTION
[0002] One of the current trends in telecommunications is the adoption of Voice- over-Internet Protocol (VoIP), which is a technology wherein voice traffic is transmitted over data, or packet-based, networks. Also commonly known in the telecommunications industry as "next generation networks", these VoIP networks represent a significant change from legacy networks in which voice was transmitted over dedicated circuits and controlled using proprietary and expensive hardware- based switching and service elements. These legacy solutions were refined over many years, and have provided a highly available telecommunications infrastructure that has become broadly deployed throughout the world.
[0003] However, one area where the newer technology (VoIP) has not traditionally matched the capability of the older technology is the reliability of the end-to-end system and services. Legacy, circuit-switched voice networks can more reasonably lay claim to achieving 99.999% uptime when compared to current VoIP networks. A major challenge, therefore, for those deploying VoIP networks is providing the level of reliability to which the customer base is historically accustomed to. Current high availability solutions for VoIP services can be classified into two groupings: hardware-based solutions and software-based solutions.
[0004] Hardware-based solutions typically use proprietary and expensive dedicated hardware platforms to provide fault tolerant solutions. These are closed, single-chassis systems which include redundant hardware components and proprietary operating systems to provide application-level fault tolerance for VoIP services.
[0005] Software-based solutions typically operate on commercial hardware and software platforms but provide a lower level of fault tolerance. Typically, these solutions do not provide application-level fault tolerance; that is to say, when a fault occurs on one machine the other machine takes over service processing and new VoIP calls are handled normally, but VoIP calls in progress at the time of the failure experience some form of service loss or degradation. Put another way, the application state information pertaining to the state of an existing VoIP call at the time of the failure on the faulting machine may be lost or incomplete, which prevents the other machine from providing a seamless service experience to the end user of the service after it becomes active.
SUMMARY OF THE INVENTION
[0006] One aspect of the invention features a system and method for providing application-level fault tolerance to services running in a VoIP network, utilizing low- cost commercial hardware and software platforms. The foregoing may provide fault tolerance at the application level so that highly complex VoIP services can survive the failure of hardware or software components without any impact to the end users of the service. It may be desirable to utilize techniques which can be deployed at a lower cost than existing hardware-based high availability solutions. It may also be desirable that the techniques utilize commercial hardware, and can be easily distributed geographically. The techniques may also provide application-level fault tolerance, allowing highly complex and stateful VoIP applications to continue to execute without a loss or degradation of service to end users during and after the failure of a hardware or software component.
[0007] In one aspect, the invention features a method for providing a fault tolerant Voice-over-IP (VoIP) environment. The method includes associating a virtual network address with one of a first communication device and second communication device, receiving a message from a network element, detecting a fault on an active one of the communication devices, and associating the virtual address with the other of the communication devices. Each of the first and second communication devices is coupled to a VoIP network and is in communication with each other. The virtual network address is associated with the active one of the communication devices. The
detection of the fault occurs when the active communication device is at a first execution point of an application executing on the active communication device. The application provides a service. When the virtual address is associated with the other communication device, the other of communication devices continues to provide the service from the first execution point.
[0008] In one embodiment, the method detects at least one of a hardware fault or a software fault. In another embodiment, the method includes determining, by each of first and second communication devices, a set of execution checkpoints in a VoIP program stored on each of the first and second communication devices. The execution checkpoints represent execution points where synchronization between the first and second communication devices occurs.
[0009] In still another embodiment, an application layer of each of the first and said second computers are synchronized by exchanging network messages between the first and second communication devices. In a further embodiment, the network messages are exchanged using at least one of a dedicated connection between the communication devices or a network connection. In another further embodiment, when the active one of the first and second communication devices reaches one of the execution checkpoints, the method includes sending a first message to the other of communications devices and when the other of the communications devices reaches one of the execution checkpoints, the other of the communication devices waits to receive the first message.
[0010] In one embodiment, execution by each of the first and second communication devices is paused at each of the execution checkpoints for a time period. In a further embodiment, if the active one or the other of the communication devices is paused at one of the execution checkpoints for more than the time period without receiving an expected message, execution of the active one or the other of the communication devices resumes execution.
[0011] In another embodiment, the method includes copying at least the application layer state information from the active one of said communication devices to the application layer of the other of the communication devices. In a further embodiment, the incoming network message is copied to the other of said communication devices and is processed by a VoIP signaling layer of the other of the
communication devices and an out of order message sequence is resolved into a proper order by detecting an improper message sequence.
[0012] In still further embodiments, the method includes detecting, by the VoIP signaling layer of the other of the communication devices, an unmatched response message, queueing the unmatched response message, and inserting the unmatched response message into a message sequence when an appropriate match message is determined.
[0013] In still another embodiment, the method includes detecting, by a service logic execution environment of the other of the communication devices, an unexpected message including state information, queuing the unexpected message, and processing the state information of the unexpected message at a later processing point subsequent to when the unexpected message is received.
[0014] In another aspect, the invention features a computer program product for providing a fault tolerant Voice-over-IP (VoIP) service logic execution environment. The computer product includes instructions for associates a virtual network address with one of a first communication device and a second communication device. Each of the first and second communication devices is coupled to a VoIP network and is in communication with each other. The virtual network address is associated with an active one of said first and said second communication devices.
[0015] The computer program product also includes instructions to receive a message from another element coupled to the VoIP network at the communication device associated with the virtual address, and detect a fault on the active communication device. The detection occurs when the active communication device is at a first execution point of an application executing on the active communication device. The computer program product also includes code that associates the virtual address with the other of the communication devices. The other of communication devices continues to provide the service from the first execution point, in response to the detection of the fault.
[0016] In one aspect, the invention features a method of providing application server redundancy in a VoIP environment. The method includes receiving, at a standby server, application layer and signaling layer state information related to an
active server and configuring the standby server to have substantially the same application layer and signaling layer state as the active server. The method also includes receiving, at the standby server, a copy of a message received by the active server and processing, by the standby server, the copy of the message to maintain synchronization between the state of the active server and the standby server.
[0017] In various embodiments, the method includes preventing transmission of a response to the processed message prepared by the standby server and transmitting, by the standby server, a response to the processed message, when a fault is detected at the active server.
[0018] In another embodiment, the method includes queuing, at the standby server, an out-of-order message received from the active server. In a further embodiment, the method includes retrieving the out-of-order message from the queue after receiving and processing another message from the active server.
[0019] In other embodiments, the method includes receiving a configuration change from the active server and reconfiguring the standby server according to the received configuration change and receiving the copy of the message via a private connection.
[0020] In another aspect, the invention features a computer readable medium having executable instructions thereon to provide application server redundancy in a VoIP environment. The computer readable medium includes instructions to receive, at a standby server, application layer and signaling layer state information related to an active server and instructions to configure the standby server to have substantially the same application layer and signaling layer state as the active server. The computer readable medium also includes instructions to receive, at the standby server, a copy of a message received by the active server and instructions to process, by the standby server, the copy of the message to maintain synchronization between the state of the active server and the standby server.
[0021] In yet another aspect, the invention features a computing device that provides application server redundancy in a VoIP environment. The computing device includes a processor for executing computer readable instructions and a memory element that stores computer readable instructions. Executing the
instructions causes the computing device to receive, at the computing device, application layer and signaling layer state information related to an active server of the VoIP environment and configure the computing device to have substantially the same application layer and signaling layer state as the active server. Executing the instructions also cause the computing device to receive, at the computing device, a copy of a message received by the active server and process, by the computing device, the copy of the message to maintain synchronization between the state of the active server and the computing device.
[0022] In one aspect, the invention features a method of providing application synchronization among a plurality of servers in an VoIP network environment. The method includes pausing execution of an application on a standby server when the standby server encounters a checkpoint in the application and receiving a first message indicating that an active server reached the same checkpoint in a copy of the application executing on the active server. The method also includes transmitting, from the standby server, a second message to the active server indicating that the standby server received the first message and resuming execution of the application on the standby server
[0023] In various embodiments, the method includes immediately resuming immediately after receiving the first message, resuming a predetermined time after transmission of the second message, and resuming after a predetermined time if the standby server does not receive the first message. In other embodiments, the method includes transmitting via a direct connection between the active server and the standby server, receiving via a direct connection between the active server and the standby server.
[0024] In another aspect, the invention features a computer readable medium having executable instructions thereon to provide application synchronization among a plurality of servers in an VoIP network environment. The computer readable medium includes instructions to pause execution of an application on a standby server when the standby server encounters a checkpoint in the application and receive a first message indicating that an active server reached the same checkpoint in a copy of the application executing on the active server. The computer readable medium also includes instructions to transmit, from the standby server, a second message to the
active server indicating that the standby server received the first message and resume execution of the application on the standby server.
[0025] In yet another aspect, the invention features a computing device that provides application synchronization among a plurality of servers in a VoIP network environment. The computing device includes a processor for executing computer readable instructions and a memory element that stores computer readable instructions. Executing the instructions causes the computing device to pause execution of an application on a standby server when the standby server encounters a checkpoint in the application and receive a first message indicating that an active server reached the same checkpoint in a copy of the application executing on the active server. Executing the instructions also cause the computing device to transmit, from the standby server, a second message to the active server indicating that the standby server received the first message and resume execution of the application on the standby server.
[0026] Further features and advantages of the present invention will be apparent from the following description of preferred embodiments and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0027] The following figures depict certain illustrative embodiments of the invention in which like reference numerals refer to like elements. These depicted embodiments are to be understood as illustrative of the invention and not as limiting in any way.
[0028] FIG. 1 depicts an embodiment of VoIP network environment;
[0029] FIG. 2 depicts a block diagram of an embodiment of a server of the VoIP environment of FIG. 1;
[0030] FIG. 3 depicts a block diagram of an embodiment of a pair of servers of the VoIP environment;
[0031] FIG. 4 is a flow diagram depicting an embodiment of a method for providing application layer fault tolerance in a VoIP environment;
[0032] FIG. 5 is a flow diagram depicting an embodiment of a method for providing application layer fault tolerance in a VoIP environment;
[0033] FIG. 6 depicts a block diagram of another embodiment of a server for use in the VoIP environment;
[0034] FIG. 7 depicts a flow diagram of an embodiment of a method of accounting for out-of-order messages in VoIP environment; and
[0035] FIG. 8 depicts a flow diagram of an embodiment of a method for providing application level fault tolerance using application checkpoints.
DETAILED DESCRIPTION
[0036] With reference to FIG. 1, a VoIP environment 100, includes one or more communications devices HOA, HOB, ..., 1101 (hereinafter a communication device or plurality of communication devices is generally referred to as communication device 110) in communication with one or more other communication devices 110 via one or more communications networks 140. The VOIP environment also includes one or more server computing devices 150A5 150B, 150C (hereinafter each server computing device or plurality of computing devices is generally referred to as server 150). Although FIG. 1, depicts an embodiment of a VoIP environment 100 having multiple communication devices 110 and three servers 150, any number of communication devices 110 and servers 150 may be provided.
[0037] Communications devices 110 and servers 150 can communicate with one another via networks 140, which can be a local-area network (LAN), a metropolitan- area network (MAN), or a wide area network (WAN) such as the Internet or the World Wide Web. Communication devices 110 connect to the network 140 via communications link 120 using any one of a variety of connections including, but not limited to, LAN or WAN links (e.g., Tl, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections. The connections can be established using a variety of communication protocols (e.g., SIP, UDP, TCP/IP, IPX, SPX, NetBIOS, and direct asynchronous connections).
[0038] In other embodiments, the communication devices 110 and servers 150 communicate through a second network 140' using communication link 180 that connects network 140 to the second network 140'. The protocols used to communicate through communications link 180 can include any variety of protocols used for long haul or short transmission. For example, RTP, TCP/IP, IPX, SPX,
NetBIOS, NetBEUI, SONET and SDH protocols or any type and form of transport control protocol may also be used, such as a modified transport control protocol, for example a Transaction TCP (T/TCP), TCP with selection acknowledgements (TCPSACK)5 TCP with large windows (TCP-LW), a congestion prediction protocol such as the TCP -Vegas protocol, and a TCP spoofing protocol. In other embodiments, any type and form of user datagram protocol (UDP), such as UDP over IP, may be used. The combination of the networks 140, 140' can be conceptually thought of as the Internet. As used herein, Internet refers to the electronic communications network that connects computer networks and organizational computer facilities around the world.
[0039] The communications device 110 can be any telephone, SIP phone, personal computer, server, Windows-based terminal, network computer, wireless device, information appliance, RISC Power PC, X-device, workstation, minicomputer, personal digital assistant (PDA), main frame computer, cellular telephone or other computing device that provides sufficient faculties to execute software that allows an end-user of the communications device 110 to participate in VoIP telephone calling sessions. The communications device includes software capable of communicating with the servers 150 and other communications devices 110 using the Session Initiation Protocol (SIP).
[0040] The server 150 can be any type of computing device that is capable of communication with one or more communication devices 110 or one or more servers 150. For example, the server 150 can be a traditional server computing device, a web server, an application server, a DNS server, or other type of server. In addition, the server 150 can be any of the computing devices that are listed as communication devices 110. In addition, the server 150 includes software capable of communicating with the communication devices 110 and the other servers 150 using the Session Initiation Protocol (SIP).
[0041] The communication devices 110 can communicate directly with each other in a peer-to-peer fashion or through a server 150. For example, in some embodiments a communication server 150 facilitates communications among the communication devices 110. The server 150 may provide a secure channel using any number of
encryption schemes to provide secure communications among the communication devices 110.
[0042] There are several different names that are used to describe the elements in a VoIP network that execute service logic: feature server, application server, proxy server, session controller, application switch, etc. However, regardless of the terminology used, they all share some common architectural elements, as pictured in the example representation of FIG. 2. It should be understood that other embodiments of the server 150 can include any combination of the following elements or include other elements not explicitly listed. In one embodiment, the server 150 includes a processor 300, a volatile memory 304, an operating system 308, persistent storage memory 316, a network interface 320, a keyboard 324, at least one input device 328 (e.g., a mouse, trackball, space ball, bar code reader, scanner, light pen and tablet, stylus, and any other input device), and a display 329. In one embodiment, the server operates in a "headless" configuration.
[0043] The server operating system can include, but is a not limited to, WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS 2000, WINDOWS XP, WINDOWS VISTA, WINDOWS CE, MAC/OS, JAVA, PALM OS, SYMBIAN OS, LINSPIRE, LINUX, SMARTPHONE OS, the various forms of UNIX, WINDOWS 2000 SERVER, WINDOWS SERVER 2003, WINDOWS 2000 ADVANCED SERVER, WINDOWS NT SERVER, WINDOWS NT SERVER ENTERPRISE EDITION, MACINTOSH OS X SERVER, UNIX, SOLARIS, and the like. In addition, the operating system 308 can run on a virtualized computing machine implemented in software using virtualization software such as VMWARE.
[0044] The volatile memory 304 and persistent storage 316, alone or in combination, store executable computer code (i.e., software) that establishes, maintains, and terminates VoIP telephone calls between communication devices 110. In one embodiment, the functionality is provided when the processor 300 executes application layer 332 software, signaling layer 344 software. As such, the communication devices 110 transmit messages and possibly media (e.g., audio) via the network interface module 320.
[0045] In one embodiment, the signaling layer 344, which is also referred to as a signaling "stack", is responsible for constructing, maintaining, modifying, and terminating VoIP sessions, during which media (e.g., audio) is exchanged among the communication devices 110 and the server 150. In one embodiment, the signaling layer 344 uses one or more VoIP signaling protocols, such as Session Invitation Protocol (SIP) and H.323 to provide communications among the servers 150 and the communication devices 110. The signaling layer 344 interfaces with the network 140 via the network interface module 320 to transmit messages over the network 140 using one of the above-described protocols (e.g., internet protocol (IP)).
[0046] In one embodiment, the processor 300 in cooperation with the volatile memory 304 operates on instructions stored therein. In one embodiment, the application layer 332 includes programs 332 and a service logic execution environment 340. The service logic execution environment 340 is where the VoIP service logic specific to a particular service executes. The service logic execution environment 340 does not interface directly with the network 140, but communicates with the signaling layer 344 to accomplish the signaling and media flows needed to provide the service.
[0047] In one embodiment, one or more programs 336A, 336B describe the service logic that comprises a specific VoIP service. The program 336A is processed within the service logic execution environment 340 in order to provide that service in the VoIP network environment 100. Put another way, the program 336 is the set of instructions that is executed within the service logic execution environment 340. A single service logic execution environment 340 may execute more than one stored programs 336 concurrently. As used herein, the terms "application" or "service" are used interchangeably with "stored program".
[0048] The relationship between the application layer 332 and the signaling layer 344 is a master-slave relationship. That is, the application layer 332 decides what sessions need to be created, modified, or terminated among the communication devices 110 and the servers 150 and the signaling layer 344 carries out these instructions.
[0049] The two layers also have a relationship in terms of how service logic is initiated. Generally, service logic is initiated by the arrival of a new call (which can
more generally be described as a "session invitation" from a communication device 110), or other network event that is detected by the signaling layer 344. As used herein, an event refers to a message, response, or packet that causes a change in some level of the VoIP environment. Examples of events include, but are not limited to, call initiations, call termination, conference calling, ringing, off-hook, on-hook, and the like. In response, the signaling layer 344 forwards a description of the event to the application layer 332, which causes the execution of a specific VoIP program 336.
[0050] Conceptually, the application layer 332 is the "brains" of the VoIP session. As such, the application layer 332 is where application state information for a complex VoIP services is kept. In one embodiment, a VoIP application 336 (e.g., an audio conference bridge and the like), of the application layer 332 contains state information such as the identification of the caller for billing purposes, whether the caller is currently navigating an Interactive Voice Response (IVR) menu, and if so which specific menu, and whether the caller is a moderator of the call or just a participant. In one embodiment, in the case of a hardware or software component failure, this state information is preserved and communicated to another server as described below to achieve fault tolerance at the application level. As a result, the appropriate delivery of the service to the end-users is provided.
[0051] During operation, the signaling layer 344 also maintains state information, but it is VoIP session state information, as opposed to application state information. For instance, the signaling layer 344 has state information such as which sessions are currently in progress, whether any scheduled session maintenance activities are necessary to maintain the session (e.g., keep alive messages between endpoints), and the network addresses of the local and remote communication device 110 or server 150 for signaling and media flows. This information is also preserved and communicated to another server, as described below, in the case of a component failure to achieve application-level fault tolerance.
[0052] The signaling layer 344 receives input from both the network 140 via the network interface module 320 and the application layer 332. From the network 140 the signaling layer 344 receives events that are forwarded to the application layer 332 for processing. In response to the events, the application layer 332 forwards messages to the signaling layer 344 that are in turn translated into network requests by the
signaling layer 344. As shown, there exists a cause-and-effect relationship between the application layer 332 and the signaling layer 344. A command from the application layer 332 is translated into a network request that in turn results in a network event that is a response to that request. Certain network events will therefore only be expected to be received after a corresponding network request has been made. In other words, there are a set of rules that can be codified describing the allowable order of events in the signaling layer 334, given a specific signaling protocol.
[0053] With reference to FIG. 3, one embodiment of providing a system that is resilient to hardware and software faults includes two instances of the hardware and software for providing VoIP communications that each operate on a different server 150, 150'. The fundamental concept is that one of the paired servers 150, is active at any time (referred to as active server 150), and the other provides a replica of the hardware and software environment that is operating in a standby mode (referred to as standby server 150'). In such a system, it is possible to switch from one server 150 to the other server 150' when either a hardware or software failure occurs at time, without any loss of service to end-users of the services. The two servers 150, 150' are thus paired in an active-standby relationship, as depicted in FIG. 3.
[0054] Each server 150, 150' includes a network interface module 320A, 320B that provides one or more physical connections to the network and an associated IP network address 321A, 321A' by which other network elements can send packets to that interface. Each server 150, 150' also includes one or more private connections 322B, 332B'overthe active server 150 exchanges status messages with the standby server 150'.
[0055] In one embodiment no private connections 322B, 322B' are provided. In such an embodiment, the status messages are exchanged, for example, between the active server 150 and the standby server 150' using the network addresses 321A, 321A'of the network interface modules 320A, 320A'. In one embodiment, a crossover Ethernet cable connects the active server 150 to the standby server 150. In one embodiment, the active server 150 and the standby server 150' are located on the same network 140. In another embodiment, the active server 150 and the standby server 150' are located on separate networks 140. As such, the two servers 150, 150'
may be co-located in the same geographic site, or they may be installed in different geographic sites.
[0056] In one embodiment, the active server 150 and the standby server 150' share a "virtual" address 323. As used herein, virtual address 323 refers to a single IP address that, at any point in time, is used by other network devices and servers to reach the active server 150. Thought of another way, the virtual address is assignable and switchable between the active server 150 and the standby server 150'.
[0057] Various known means of detecting hardware or software failures on the active server 150 are used to begin a "failover", or switch, to the standby server 150'. Once complete, the standby server 150' becomes the active server 150 and continues the application and session processing without impact to the end-users of the communications devices 110. When such a failover occurs, the virtual address 323 is re-assigned to the newly-active server (i.e., the original standby server 150'), such that all network elements now direct their packets to that server. During the failover, the application and session state information existent at the time of the failure on the on the failed server becomes available on the other (newly active) server.
[0058] With reference to FIG. 4, a method 400 for providing fault tolerance in a VoIP environment is shown and described. The method 400 includes associating (STEP 410) a virtual network address with one of a first communication device and a second communication device 110. Each of the first and second communication devices 110 is coupled to a VoIP network and is in communication with each other. The virtual network address is associated with an active one of the first and the second communication devices 110. The method also includes receiving (STEP 420) a message from another element coupled to the VoIP network at the communication device 100 associated with the virtual address and detecting (STEP 430) a fault on the active communication device. The detection occurs when the active communication device 110 is at an execution point of an application that is executing on the active communication device 110. The application provides a services. Typically, the service is a VoIP service. The method 400 also includes associating (STEP 440) the virtual address with the other of the communication devices in response to the detection of the fault. The other of communication devices 110 continues to provide the service from the same execution point. Said another way, the application 336' on
the standby 150' resumes execution of the application 336' at the same place as the where the active server 150 stopped. This could be the same instruction or the next instruction of the application 336.
[0059] In one embodiment, the virtual network address is associated (STEP 410) by a network technician during the installation of the server 150. In another embodiment, management software (not shown) executing on another computing device of the network 140 provides a means for a network administrator to associate the virtual address with one of the servers 150. Which ever server 150 is associated with the virtual address becomes the active server 150 and begins processing and responding to VoIP network events. In one embodiment, the virtual IP address is included in a configuration file that is deployed on both servers 150. The configuration file includes information that defines the virtual IP address, which of the servers 150 is initially designated as the active server 150, as well as other information.
[0060] Other elements and communication devices 110 (not shown) of the network 140 transmit messages to the active server 150. The active server 150 receives (STEP 420) the messages. In response, active server 150 processes the messages and generates a response to each of the received messages.
[0061] In some instances, before, during, or after the processing of a message, a fault can occur at the active server 150. In one embodiment, a software fault occurs. For example, an operating system failure can require a system reboot. Other examples of software faults include, but are not limited too, an application failure, a protocol failure, a thread failure, memory exhaustion, disk space exhaustion, and the like. In another embodiment, a hardware fault occurs. Examples of hardware faults include, but are not limited to, a power supply failure, a memory failure, a processor failure, network card failure, and the like. In one embodiment, if the fault is detected during the execution of the program 336, the point of execution in the program is noted. In another embodiment, the point of execution of the program 336 is not noted.
[0062] After detecting a fault at the active server 150, the virtual address is associated (STEP 440) with the other server 150'. That is, the other server 150' begins directly receiving messages from the network 140. The application 336' that is
executing on the other server 150' begins executing at the execution point where the fault was detected on the active server 150. In essence, the other server 150' begins executing and responding to messages at the place in the application 336' where the fault occurred on the active server 150.
[0063] In order to provide fault tolerance and redundancy at the application layer level, various techniques and methods for replicating state information can be used. In general, the standby server 150' executes the same stored programs 336' and receives a similar stream of events as the active server 150. As a result, the standby server 150' over time constructs the same state information as the active server 150. At both the application layer and the signaling layer, the state information at any point in time is a function of the event stream received and the behavior that is specified in response to those events. Formally, this may be represented as follows: Sn = f(Sn-l, E, B); that is, the state information at period n (Sn) is a function of the state information of the previous period (Sn-I), along with the events (E) received this period, and the behavior (B) that is specified in response to those events while in the current state.
[0064] At the application level, it is the application service logic (i.e., the stored program 336) that performs the specification of the behavior required; at the signaling level, is the protocol specification (e.g. SIP or H.323) that forms the specification of the behavior required. Thus, if the standby server 150' executes the same applications 336' and protocols as the active server 150, and receives the same stream of events, the standby server 150' may construct the same application state and signaling state information as the active server 150.
[0065] This technique may be characterized as one whereby "scaffolding" is built around the standby server 150', wherein the same inputs are provided to the executing stored program 336' as are delivered on the active server 150 without, however, allowing the standby server 150' to interact with the network 140 or other external elements. When a fault and subsequent failover occurs, the "scaffolding" is removed and the newly-active server continues executing as before; however, now the server 150 begins sending and receiving packets to other elements on the network 140. To those external network elements, and the end-users beyond them, the transition is seamless and uninterrupted, with no loss of any facility or function that was
previously being provided by the application 336, nor any loss of "memory" about the state of the end-users, their preferences, or the network devices which are interacting.
[0066] In some embodiments, it may be difficult to produce a perfectly equivalent event stream at the standby sever 150. Some reasons for this include, natural variances in the delivery times of packets on an IP network as well as variances in the timing of instructions between two different (even though similarly configured) servers 150. These reasons result in a situation where the standby server 150' receives a "similar" stream of events as the active server 150. A first stream of events as described herein may be characterized as a similar stream of events with respect to a second stream of events in that both contain the same events. However, the order of events as well as their inter-arrival times may differ between the two streams being compared.
[0067] With reference to FIG. 5, a method 500 by which a similar stream of events can be processed in a way that result in the derivation of an equivalent set of application and signaling state information on the standby server 150' is shown and described. Additionally, the method 500 describes processing the event stream in such a way so as to produce a replica of the application and signaling state information existent on the active server 150. This state information can be derived from the event stream on the standby server 150', even when the two event streams are allowed to differ in the order and timing of events. The method 500 includes querying (STEP 510) the active server 150 for the application layer 332 and signaling layer 344 state information, configuring (STEP 520) the standby server 150' to replicate the configuration of the active server 150, and receiving (STEP 530) configuration changes from the active server 150, if any are made to the active server 150. The method also includes receiving (STEP 540), at the standby server 150', a copy of any network messages received by the active server 150, processing (STEP 550) the copy of the received network messages, and preventing (STEP 560) transmission of a response to the processed message.
[0068] Upon initialization, the standby server 150' queries (STEP 510) the active server 150 for the current application configuration; e.g., which stored programs are running, and how many VoIP sessions each stored program is configured to support. In one embodiment, the query is transmitted via the private connections 322, 322'. In
another embodiment, the query is transmitted using the network address 321, 321' of the network interface module 320, 320'.
[0069] The standby server 150' receives the state information from the active server 150 and configures (STEP 520) itself to be a replica of the active server 150. In one embodiment, the standby server 150' starts an equivalent configuration of applications 336. In another embodiment, the standby server 150' starts a sub-set of the applications 336 of the active server 150. The sub-set of application can include those deemed critical.
[0070] If a change is made to the application configuration on the active server (e.g., an application is stopped or a new application is started, via an element manager console (not shown)), the standby server receives (STEP 530) a change notification. In one embodiment, the active server automatically transmits change notifications to the standby server 150'. In another embodiment, the standby server 150' periodically queries the active server 150 for any configuration changes. If there are changes, the configuration change is replicated on the standby server 150'.
[0071] During operation, the active server receives messages (e.g., a signaling message) at the active server 150 from the network 140. In response, a copy of the message is sent to the standby server 150'. The standby server 150' receives (STEP 540) the copy of the messages from the active server 150. In one embodiment, the signaling stack 344' on the standby server 150' receives the messages via the private connection 322, 322'. In this way, the standby server 150' receives a copy of every signaling message that the active server 150 receives. Once received, both the active server 150' and the standby server 150' signaling stacks 344, 344' forward the messages to the application layers 322, 322' on the respective servers.
[0072] After receiving the messages, the application layer processes (STEP 550) the signaling messages, along with other events, and may generate a signaling request. In one embodiment, the request is passed down to the signaling stack 344.
[0073] At the standby server 150' the signaling stack processes the request but prevents (STEP 560) transmission of a network message. In one embodiment, the network message resulting from the processed signaling is dropped by the standby server 150'. In another embodiment, the network message is transmitted to a
"dummy" network address. In yet another embodiment, the network message is placed in a queue for deletion by the standby server 150. It should be understood that other methods can be employed to prevent transmission of a network message from the standby server 150'.
[0074] Also, the service logic execution environment 340 of the active server 150 receives other inputs in addition to network messages. These inputs are also copied and forwarded to the service logic execution environment 340' of the standby server 150'. Once received, these inputs are provided to the programs 336 executing on the standby server 150'. These other inputs may be characterized as state information or data and may include, for example, a value produced by another application used in connection with performing processing for a service by the service logic execution environment. Another example of an input is a message from an external database that includes information related subscriber (i.e., end-user) information updates.
[0075] As previously stated, since the active server 150' is receiving messages and responding, in some case, with network messages of its own, it is not possible to guarantee that the standby server 150' will receive the exact same event stream as the active server 150, in terms of order and inter-arrival times. Given this situation, at least two conditions can result that can affect fault tolerance for VoIP applications. One potentially dangerous situation results from receiving messages out of order at the standby server 150' when compared to the order in which the messages are received at the active server 150. Another potentially dangerous situation results when the messages are received in the same order, but with significant timing differences between when they are received at the active server 150 and the standby server 150'. Certain features can be provided to account for these situations so as to maintain fault tolerance at the application layer 332 and the signaling layer 344.
[0076] There are at least two types of messages that may be received out-of-order by the standby server 150'. The first type of messages is network events and signaling messages, such as those that may be processed by the signaling layer 344'. The second type of message is state information, which may be processed by the service logic execution environment 340'.
[0077] In connection with the first type of messages, many VoIP signaling sequences or network events consist of a request that is sent by one network element
to another, followed by a response traveling in the opposite direction. The following sequence illustrates how a message can be received out of sequence at the standby server 150'.
[0078] The stored program 336 executing on the active server 150 causes a signaling request to be sent to the signaling layer 344. The standby server 150' executing the same program 336' receives a copy the message from the active server 150. In response, the copy of the message is forwarded to the signaling stack 344' of the standby server 150'. As such, the standby server 150' receives the same message at close to the same instant, but not precisely the same instant, as the active server 150.
[0079] The signaling stack 344 of the active server 150 receives the message from the program 336 and sends the signaling request out on the network 140. This can occur before the signaling stack 344' of the standby server 150' receives the copy of the message from the active server 150. The signaling stack 344 of the active server 150 receives a corresponding response from the network 140 and forwards a copy of the response to the signaling stack 344' of the standby server 344'. In such as scenario, the signaling stack 344' of the standby server 150' has received a response for a request that the standby server 150' has not yet sent.
[0080] The above scenario illustrates one example where the order of events experienced by the standby server 150' differs from that experienced by the active server 150'. The signaling stack 344 on the online server 150 experiences the following sequence of events: a) receive a request from the application layer 332; b) send a request to the network 140; and c) receive a response for the request from the network 140. On the other hand, the sequence of events for the signaling stack 344 on the standby server 150' is: a) receive an unknown response from network 140 (i.e., the response can not be matched to any previous request); b) receive a request from the application layer 332'; and c) send the request to the network.
[0081] If not accounted for, this different sequence of events can cause a different application execution path to be taken on the standby server 150' when compared to the active server 150. This divergence causes the application layer state information and signaling layer state information to fall out of synchronization between the active server 150 and the standby server 150'. If the active server 150 fails or faults, the
divergent state information can cause a noticeable service impact to the end user, for example dropping an call that is in progress. Said another way, unless accounted for the out of order message prevent the achievement of application-level fault tolerance.
[0082] It may also be necessary to handle out-of-order at the service logic execution environment. For example, a piece of state information may be received by the service logic execution environment 340' of the standby server 150'. The standby server 150' may be waiting for this information in connection with a current operation or processing being performed. If so, the standby server 150' processes the received state information. Otherwise, the state information received is unexpected (i.e., the standby server 150' does not currently use the state information in its processing)
[0083] It is possible that the messages are received in the same order, but there can be timing differences between when the messages are received by each server 150. Consider a scenario where an application 336 of the active server 150, at a certain point in time, begins waiting for a network message. An application 336 that is waiting for a network message handles a receive message differently than if the a message is received before the application 336 begins waiting for the message.
[0084] If the active server 150 and the standby server 150' are executing with slight timing differences, it is possible that the active server 150 will reach the point in the application 336 where it begins waiting for the network message slightly before the application 336' on the standby server 150'. When the signaling stack 344 on the active server 150 receives the message from the network 140, a copy is sent to the signaling stack on the standby server 150', which forwards it up to the application layer 332' of the standby server 150'. Because the application 336' on the standby server 150' is not yet waiting for the message, it is either discarded or handled differently than on the active server 150. This situation causes the execution paths of the active server 150 and the standby server 150' to diverge thus destroying application-level fault tolerance.
[0085] As shown, the naturally-occurring variances in server instruction processing times and network transmission times prevent the ability to guarantee an exactly equivalent event stream on the active server 150 and the standby server 150'. As such, the following methods provide for processing two similar event streams on the each of the active server 150 and standby server 150' in such a way that the same
state information is derived from the message stream. The techniques that may be utilized include, but are not limited to, application instruction check-pointing and queuing out of order events.
[0086] With reference to FIG. 6 an embodiment of a standby server 150' configured for handling out-of-order messages is shown and described. In this embodiment, the standby server 150' includes an out-of-order (OOO) message queue 342. In one embodiment, the out-of-order message queue is a dedicated area of the volatile memory 304. In another embodiment, the out-of-order message queue 342 is a dedicated area of the persistent storage 316. Messages from the active server 150 are received and stored in the out-of-order message queue. In one embodiment, each received message is stored in the out-of-order message queue 342. In another embodiment, only certain messages are stored in the out-of-order message queue 342.
[0087] With reference to FIG. 7 a method 700 for queuing and processing out-of- order messages received by the standby server 105. In one embodiment, the method includes receiving (STEP 710) a message from the active server 150, determining (STEP 720) if the message is out-of-order, queuing (STEP 730) when the message is determined to be out of order, inserting (STEP 740) a message from the out-of-order message queue 342 as needed.
[0088] In one embodiment, the message is received (STEP 710) via the private connection 322'. In another embodiment, the standby server 150 receives (STEP 710) the message via the network address 321.
[0089] Various techniques can be used by the standby server 150 to determine (STEP 720) if the received message is an out-of-order message. For example, it can be assumed that all messages received from the active server 150 are out-of-order messages. In another embodiment, if the standby server 150' is not "waiting" for a response or a message any received message is labeled as an out-of-order message.
[0090] Queuing (STEP 730) of out-of-order messages can be accomplished in various ways. For example, the out-of-order messages are stored in the volatile memory 304 of the standby server 150'. In another embodiment, the out-of-order messages are stored in a storage device (not shown) that is in communication with the
standby server 150'. In yet another embodiment, the out-of-order messages are stored in the persistent storage 316 for the standby server 150'.
[0091] Various means and methods can be employed to insert (STEP 740) a specific message or response from the out-of-order message queue 740. In one embodiment, each time a response or message is needed the out-of-order message queue 342 is queried for the needed response and inserted into the event stream if the message is present. In another embodiment, when a message or response is needed by the service execution environment 340' of the standby server 150' may check newly received state information prior to checking for the state information in the out-of- order message queue 342.
[0092] To briefly summarize, messages can be received out of order by the standby server 150'. In order to derive the same state information on the standby server 150' as on the active server 150, the out-of-order messages may be queued, rather than discarded, until it can be determined if the out-of-order messages relate to a future, not-yet-received, message. A response that is received in advance of the corresponding request is queued until a matching request is received. After processing the request, the queued response is reinserted into the event stream. If no matching request is received within a predetermined duration such as, for example, a duration of several seconds, then the unmatched response can be discarded.
[0093] With reference to FIG. 8, a method 800 of providing application level fault tolerance using application checkpoints is shown and described. At a high level, the application 336 executing on the active server 150 and standby server 150' attempt to synchronize their operation by periodically "checkpointing" with each other. Checkpointing, as used herein, refers to pausing the execution of an application 336. Checkpoints can be embodied as computer code that causes the pause of the execution of the application 336. In essence, the servers 150 are "loosely-coupled" with each other. In one embodiment, the method includes determining (STEP 810) that an application checkpoint is reached during the execution of an application 336, pausing (STEP 820) execution of the application 336, receiving (STEP 830) an checkpoint begin message from another server 150 executing the same application 336, transmitting (STEP 840) a checkpoint release message to the other server, and continuing (STEP 850) execution of the application 336 on the server 150. Generally
speaking, the applications 336 on each of the servers 150 periodical confirm with each other that the applications are at the same point of execution of the application 336.
[0094] As each application instruction is executed, a determination (STEP 810) is made as to whether a checkpoint is required or present. In one embodiment, the application includes specific checkpoints. In another embodiment, every application instruction is a checkpoint. In yet another embodiment, only some of the application instructions are checkpoints.
[0095] When an application 336 encounters a checkpoint, the server 150 pauses (STEP 820) execution of the application 336. In one embodiment, the further processing of the application 336 is suspended indefinitely. In another embodiment, further processing of the application 336 is suspended for a predetermined time period. Assuming that the active serve 150 reaches the checkpoint first, the active server transmits a "checkpoint begin" message to the standby server 150'.
[0096] The standby server 150 receives (STEP 830) the checkpoint begin message. It should be understood that the checkpoint begin message can be received via either the private connection 322' or network address 321'. In one embodiment, the checkpoint begin message is placed in the out-of-order message queue 342. When the application 336 executing on the standby server 150' reaches the checkpoint, application on the standby server 150' waits for a checkpoint begin message. In one embodiment, the application 336 queries the out-of-order message queue 342 for the checkpoint begin message.
[0097] After processing the checkpoint begin message, the standby server 150' transmits a "checkpoint release" message the active server 150'. In one embodiment, the checkpoint release message is transmitted via the private connection 322'. In another embodiment, the checkpoint release message is transmitted via the network address 321'.
[0098] After transmitting the checkpoint release message, the standby server 150 resume execution of the application 336'. In one embodiment, the standby server 150' waits a predetermined time period before resuming execution of the application 336'. In another embodiment, the standby server 150' immediately resumes
execution of the application 336'. When the active server 150 receives the checkpoint release message the active server 150 resume execution of the paused application.
[0099] To summarize, exchanging these "checkpoint" messages provides a means to closely synchronize the execution of the application 336 on the two servers 15. This reduces the likelihood and impact of timing differences. If either the active server 150 or the standby server 150' waits in the checkpoint state without receiving a checkpoint begin message (i.e., the standby server 150'), or a checkpoint release message (i.e. the online server), then application execution continues and the paused instruction is executed. This prevents a total failure of one server 150 from propagating to the other server 150.
[0100] The previously described embodiments may be implemented as a method, apparatus or article of manufacture using programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term "article of manufacture" as used herein is intended to encompass code or logic accessible from and embedded in one or more computer-readable devices, firmware, programmable logic, memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.), hardware (e.g., integrated circuit chip, Field Programmable Gate Array (FPGA), Application Specific Integrated Circuit (ASIC), etc.), electronic devices, a computer readable non-volatile storage unit (e.g., CD-ROM, floppy disk, hard disk drive, etc.), a file server providing access to the programs via a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. The article of manufacture includes hardware logic as well as software or programmable code embedded in a computer readable medium that is executed by a processor. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention.
[0101] While the invention has been disclosed in connection with the preferred embodiments shown and described in detail, various modifications and improvements thereon will become readily apparent to those skilled in the art. Accordingly, the spirit and scope of the present invention is to be limited only by the following claims.
Claims
What is claimed is: CLAIMS
1. A method for providing a fault tolerant Voice-over-IP (VoIP) environment, the method comprising: associating a virtual network address with one of a first communication device and a second communication device, each of the first and second communication devices being coupled to a VoIP network and being in communication with each other, the virtual network address being associated with an active one of the first and the second communication devices; receiving a message from another element coupled to the VoIP network at the communication device associated with the virtual address, detecting a fault on the active communication device, the detection occurring when the active communication device is at a first execution point of an application executing on the active communication device, the application providing a service; and associating the virtual address with the other of the communication devices, the other of communication devices continuing to provide the service from the first execution point, in response to the detection of the fault.
2. The method of claim 1, wherein the detecting comprises detecting at least one of a hardware fault or a software fault.
3. The method of claim 1 further comprising determining, by each of first and second communication devices, a set of execution checkpoints in a VoIP program stored on each of the first and second communication devices, the execution checkpoints representing execution points where synchronization between the first and second communication devices occurs.
4. The method of claim 1 , wherein an application layer of each of the first and said second computers are synchronized by exchanging network messages between the first and second communication devices.
5. The method of claim 4, wherein the network messages are exchanged using at least one of a dedicated connection between the communication devices or a network connection.
6. The method of claim 4, wherein, when the active one of the first and second communication devices reaches one of the execution checkpoints, sending a first message to the other of communications devices, and when the other of the communications devices reaches one of the execution checkpoints, the other of the communication devices waits to receive the first message.
7. The method of claim 4, wherein execution by each of the first and second communication devices is paused at each of the execution checkpoints for a time period.
8. The method of claim 7, wherein, if the active one or the other of the communication devices is paused at one of the execution checkpoints for more than the time period without receiving an expected message, execution of the active one or the other of the communication devices resumes execution.
9. The method of claim 1 , further comprising copying the incoming network message to the active one of the communication devices to the other of the communication devices via one of a dedicated connection or a network connection.
10. The method of claim 1, further comprising copying at least the application layer state information from the active one of said communication devices to the application layer of the other of the communication devices.
11. The method of claim 9, wherein the incoming network message copied to the other of said communication devices is processed by a VoIP signaling layer of the other of the communication devices and an out of order message sequence is resolved into a proper order by detecting an improper message sequence.
12. The method of claim 11, further comprising: detecting, by the VoIP signaling layer of the other of the communication devices, an unmatched response message; queueing the unmatched response message; and
inserting the unmatched response message into a message sequence when an appropriate match message is determined.
13. The method of claim 11, further comprising: detecting, by a service logic execution environment of the other of the communication devices, an unexpected message including state information; queueing the unexpected message; and processing the state information of the unexpected message at a later processing point subsequent to when the unexpected message is received.
14. A computer program product for providing a fault tolerant Voice-over-IP (VoIP) service logic execution environment, comprising code that: associates a virtual network address with one of a first communication device and a second communication device, each of the first and second communication devices being coupled to a VoIP network and being in communication with each other, the virtual network address being associated with an active one of said first and said second communication devices; receives a message from another element coupled to the VoIP network at the communication device associated with the virtual address, detects a fault on the active communication device, the detection occurring when the active communication device is at a first execution point of an application executing on the active communication device, the application providing a service; and associates the virtual address with the other of the communication devices, the other of communication devices continuing to provide the service from the first execution point, in response to the detection of the fault.
15. The computer program product of claim 14, wherein detecting comprises code that detects at least one of a hardware fault or a software fault.
16. The computer program product of claim 14 further comprising code that determines, by each of first and second communication devices, a set of
execution checkpoints in a VoIP program stored on each of the first and second communication devices, the execution checkpoints representing execution points where synchronization between the first and second communication devices occurs.
17. The method of claim 14, wherein an application layers of each of the first and said second computers are synchronized by exchanging network messages between the first and second communication devices.
18. The method of claim 17, wherein said network messages are exchanged using at least one of a dedicated connection between the communication devices or a network connection.
19. The method of claim 17, wherein, when the active one of the first and second communication devices reaches one of the execution checkpoints, sending a first message to the other of communications devices, and when the other of the communications devices reaches one of the execution checkpoints, the other of the communication devices waits to receive the first message.
20. The method of claim 17, wherein execution by each of the first and second communication devices is paused at each of the execution checkpoints for a time period.
21. The method of claim 20, wherein, if the active one or the other of the communication devices is paused at one of the execution checkpoints for more than the time period without receiving an expected message, execution of the active one or the other of the communication devices resumes execution.
22. The method of claim 14, further comprising copying the incoming network message to the active one of the communication devices to the other of the communication devices via one of a dedicated connection or a network connection.
23. The method of claim 14, further comprising copying at least the application layer state information from the active one of said communication devices to the application layer of the other of the communication devices.
24. The method of claim 23, wherein the incoming network message copied to the other of said communication devices is processed by a VoIP signaling layer of the other of the communication devices and an out of order message sequence is resolved into a proper order by detecting an improper message sequence.
25. The method of claim 24, further comprising: detecting, by said VoIP signaling layer of the other of the communication devices, an unmatched response message; queuing the unmatched response message; and inserting the unmatched response message into a message sequence when an appropriate match message is determined.
26. The method of claim 24, further comprising: detecting, by a service logic execution environment of the other of the communication devices, an unexpected message including state information; queuing the unexpected message; and processing the state information of the unexpected message at a later processing point subsequent to when the unexpected message is received.
27. A method of providing application server redundancy in a VoIP environment, the method comprising: receiving, at a standby server, application layer and signaling layer state information related to an active server; configuring the standby server to have substantially the same application layer and signaling layer state as the active server; receiving, at the standby server, a copy of a message received by the active server; and processing, by the standby server, the copy of the message to maintain synchronization between the state of the active server and the standby server.
28. The method of claim 27 further comprising preventing transmission of a response to the processed message prepared by the standby server.
29. The method of claim 27 further comprising transmitting, by the standby server, a response to the processed message, when a fault is detected at the active server.
30. The method of claim 27 wherein the processing comprises queuing, at the standby server, an out-of-order message received from the active server.
31. The method of claim 30 wherein the processing further comprises retrieving the out-of-order message from the queue after receiving and processing another message from the active server.
32. The method of claim 27 receiving a configuration change from the active server and reconfiguring the standby server according to the received configuration change.
33. The method of claim 27 wherein the receiving comprises receiving the copy of the message via a private connection.
34. A computer readable medium having executable instructions thereon to provide application server redundancy in a VoIP environment, the computer readable medium comprising: instructions to receive, at a standby server, application layer and signaling layer state information related to an active server; instructions to configure the standby server to have substantially the same application layer and signaling layer state as the active server; instructions to receive, at the standby server, a copy of a message received by the active server; and instructions to process, by the standby server, the copy of the message to maintain synchronization between the state of the active server and the standby server.
35. The computer readable medium of claim 34 further comprising instructions to prevent transmission of a response to the processed message prepared by the standby server.
36. The computer readable medium of claim 34 further comprising instructions to transmit, by the standby server, a response to the processed message, when a fault is detected at the active server.
37. The computer readable medium of claim 34 wherein the instruction to process comprise instructions to queue, at the standby server, an out-of-order message received from the active server.
38. The computer readable medium of claim 37 wherein the instruction to process further comprise instructions to retrieve the out-of-order message from the queue after receiving and processing another message from the active server.
39. The computer readable medium of claim 34 further comprising instructions to receive a configuration change from the active server and reconfiguring the standby server according to the received configuration change.
40. The computer readable medium of claim 34 wherein the instruction to receive comprise instructions to receive the copy of the message via a private connection.
41. A computing device that provides application server redundancy in a VoIP environment, the computing device comprising: a processor for executing computer readable instructions; and a memory element that stores computer readable instructions that when executed by the processor cause the computing device to: receive, at the computing device, application layer and signaling layer state information related to an active server of the VoIP environment; configure the computing device to have substantially the same application layer and signaling layer state as the active server; receive, at the computing device, a copy of a message received by the active server; and
process, by the computing device, the copy of the message to maintain synchronization between the state of the active server and the computing device.
42. The computing device of claim 41 wherein the memory element further stores instructions to prevent transmission of a response to the processed message prepared by the standby server.
43. The computing device of claim 41 wherein the memory element further stores instructions to transmit, by the computing device, a response to the processed message, when a fault is detected at the active server.
44. The computing device of claim 41 wherein the memory element further stores instructions to queue, at the computing device, an out-of-order message received from the active server.
45. The computing device of claim 44 wherein the memory element further stores instructions to retrieve the out-of-order message from the queue after receiving and processing another message from the active server.
46. The computing device of claim 41 wherein the memory element further stores instructions to receive a configuration change from the active server and reconfiguring the computing device according to the received configuration change.
47. A method of providing application synchronization among a plurality of servers in an VoIP network environment, the method comprising: pausing execution of an application on a standby server when the standby server encounters a checkpoint in the application; receiving a first message indicating that an active server reached the same checkpoint in a copy of the application executing on the active server; transmitting, from the standby server, a second message to the active server indicating that the standby server received the first message; and resuming execution of the application on the standby server.
48. The method of claim 47 wherein the resuming occurs immediately after receiving the first message.
49. The method of claim 47 wherein the resuming occurs a predetermined time after transmission of the second message.
50. The method of claim 47 wherein the resuming occurs after a predetermined time if the standby server does not receive the first message.
51. The method of claim 47 wherein the transmitting occurs via a direct connection between the active server and the standby server.
52. The method of claim 47 wherein the receiving occurs via a direct connection between the active server and the standby server.
53. The method of claim 47 wherein the application provides a VoIP service.
54. A computer readable medium having executable instructions thereon to provide application synchronization among a plurality of servers in an VoIP network environment, the computer readable medium comprising: instructions to pause execution of an application on a standby server when the standby server encounters a checkpoint in the application; instructions to receive a first message indicating that an active server reached the same checkpoint in a copy of the application executing on the active server; instructions to transmit, from the standby server, a second message to the active server indicating that the standby server received the first message; and instructions to resume execution of the application on the standby server.
55. The computer readable medium of claim 54 wherein the instructions to resume comprise instructions to resume execution immediately after receiving the first message.
62. The computing device of claim 60 wherein the memory element further stores instructions to resume execution a predetermined time after transmission of the second message.
63. The computing device of claim 60 wherein the memory element further stores instructions to resume execution after a predetermined time if the standby server does not receive the first message.
64. The computing device of claim 60 wherein the memory element further stores instructions to transmit the second message via a direct connection between the active server and the standby server.
65. The computing device of claim 60 wherein the memory element further stores instructions to receive the first message via a direct connection between the active server and the standby server.
-36 -
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06771546A EP1884106A2 (en) | 2005-05-26 | 2006-05-26 | Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture |
IL187682A IL187682A0 (en) | 2005-05-26 | 2007-11-27 | Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US68489305P | 2005-05-26 | 2005-05-26 | |
US60/684,893 | 2005-05-26 |
Publications (3)
Publication Number | Publication Date |
---|---|
WO2006128147A2 true WO2006128147A2 (en) | 2006-11-30 |
WO2006128147A9 WO2006128147A9 (en) | 2007-01-18 |
WO2006128147A3 WO2006128147A3 (en) | 2007-04-05 |
Family
ID=37023172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2006/020856 WO2006128147A2 (en) | 2005-05-26 | 2006-05-26 | Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture |
Country Status (4)
Country | Link |
---|---|
US (3) | US20060271812A1 (en) |
EP (1) | EP1884106A2 (en) |
IL (1) | IL187682A0 (en) |
WO (1) | WO2006128147A2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2443859A (en) * | 2006-11-17 | 2008-05-21 | Al Innovations Ltd | Voice over internet protocol system with a redundant VoIP server |
FR2912271A1 (en) * | 2007-02-06 | 2008-08-08 | France Telecom | Service i.e. voice over Internet protocol telephone service, managing method for use in Internet protocol network, involves receiving message at two levels of controllers when router selects two routes |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760861B2 (en) * | 2000-09-29 | 2004-07-06 | Zeronines Technology, Inc. | System, method and apparatus for data processing and storage to provide continuous operations independent of device failure or disaster |
EP1550255A4 (en) * | 2002-09-20 | 2006-06-07 | Santera Systems Inc | Methods and systems for locating redundant telephony call processing hosts in geographically separate locations |
US20090262724A1 (en) * | 2006-08-18 | 2009-10-22 | Nec Corporation | Proxy server, communication system, communication method and program |
CN101247385B (en) * | 2007-02-13 | 2012-07-25 | 国际商业机器公司 | Method , terminal and system for establishing VolP communication by digital video broadcasting network |
GB0706494D0 (en) * | 2007-04-03 | 2007-05-09 | British Telecomm | Computer telephony system |
CN100449548C (en) * | 2007-04-11 | 2009-01-07 | 华为技术有限公司 | Method and system for synchronizing data base |
US20080285436A1 (en) * | 2007-05-15 | 2008-11-20 | Tekelec | Methods, systems, and computer program products for providing site redundancy in a geo-diverse communications network |
JP2008305070A (en) * | 2007-06-06 | 2008-12-18 | Hitachi Communication Technologies Ltd | Information processor and information processor system |
US8201016B2 (en) * | 2007-06-28 | 2012-06-12 | Alcatel Lucent | Heartbeat distribution that facilitates recovery in the event of a server failure during a user dialog |
US20090055515A1 (en) * | 2007-08-21 | 2009-02-26 | Alcatel Lucent | Facilitating distributed and redundant statistics collection |
CA2746146C (en) * | 2008-12-12 | 2014-07-15 | Bae Systems Plc | An apparatus and method for processing data streams |
US8930527B2 (en) * | 2009-05-26 | 2015-01-06 | Oracle International Corporation | High availability enabler |
US8688816B2 (en) * | 2009-11-19 | 2014-04-01 | Oracle International Corporation | High availability by letting application session processing occur independent of protocol servers |
US9130967B2 (en) * | 2010-11-17 | 2015-09-08 | Alcatel Lucent | Method and system for network element service recovery |
US8451828B2 (en) * | 2010-11-23 | 2013-05-28 | Mitel Network Corporation | Registering an internet protocol phone in a dual-link architecture |
CA2745823C (en) * | 2010-11-23 | 2014-06-17 | Mitel Networks Corporation | Fast detection and reliable recovery on link and server failures in a dual link telephony server architecture |
US8345840B2 (en) | 2010-11-23 | 2013-01-01 | Mitel Networks Corporation | Fast detection and reliable recovery on link and server failures in a dual link telephony server architecture |
US20130268801A1 (en) * | 2010-12-10 | 2013-10-10 | Nec Corporation | Server management apparatus, server management method, and program |
US8824370B2 (en) | 2010-12-16 | 2014-09-02 | Openet Telecom Ltd. | Methods, systems and devices for dynamic context-based routing |
US8943221B2 (en) | 2010-12-16 | 2015-01-27 | Openet Telecom Ltd. | Methods, systems and devices for pipeline processing |
US8725896B2 (en) | 2010-12-16 | 2014-05-13 | Openet Telecom Ltd. | Methods, systems and devices for forked routing |
US8675659B2 (en) | 2010-12-16 | 2014-03-18 | Openet Telecom Ltd. | Methods, systems and devices for multiphase decoding |
US8725820B2 (en) * | 2010-12-16 | 2014-05-13 | Openet Telecom Ltd. | Methods, systems and devices for horizontally scalable high-availability dynamic context-based routing |
US9130760B2 (en) | 2011-04-26 | 2015-09-08 | Openet Telecom Ltd | Systems, devices and methods of establishing a closed feedback control loop across multiple domains |
US8929859B2 (en) | 2011-04-26 | 2015-01-06 | Openet Telecom Ltd. | Systems for enabling subscriber monitoring of telecommunications network usage and service plans |
US9565074B2 (en) | 2011-04-26 | 2017-02-07 | Openet Telecom Ltd. | Systems, devices, and methods of orchestrating resources and services across multiple heterogeneous domains |
US9450766B2 (en) | 2011-04-26 | 2016-09-20 | Openet Telecom Ltd. | Systems, devices and methods of distributing telecommunications functionality across multiple heterogeneous domains |
US9565063B2 (en) | 2011-04-26 | 2017-02-07 | Openet Telecom Ltd. | Systems, devices and methods of synchronizing information across multiple heterogeneous networks |
US9444692B2 (en) | 2011-04-26 | 2016-09-13 | Openet Telecom Ltd. | Systems, devices and methods of crowd-sourcing across multiple domains |
US9641403B2 (en) | 2011-04-26 | 2017-05-02 | Openet Telecom Ltd. | Systems, devices and methods of decomposing service requests into domain-specific service requests |
CN103534977A (en) | 2011-07-25 | 2014-01-22 | 惠普发展公司,有限责任合伙企业 | Transferring a conference session between conference servers due to failure |
US8856585B2 (en) * | 2011-08-01 | 2014-10-07 | Alcatel Lucent | Hardware failure mitigation |
US9300531B2 (en) | 2011-12-12 | 2016-03-29 | Openet Telecom Ltd. | Systems, devices, and methods of orchestration and application of business rules for real-time control of subscribers in a telecommunications operator's network |
US9173081B2 (en) | 2012-01-27 | 2015-10-27 | Openet Telecom Ltd. | System and method for enabling interactions between a policy decision point and a charging system |
DE102012210161A1 (en) * | 2012-06-15 | 2013-12-19 | Airbus Operations Gmbh | Coupling device for a data transmission network and data transmission network |
US9014060B2 (en) * | 2012-06-21 | 2015-04-21 | Level 3 Communications, Llc | System and method for integrating VoIP client for audio conferencing |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US8707326B2 (en) * | 2012-07-17 | 2014-04-22 | Concurix Corporation | Pattern matching process scheduler in message passing environment |
EP2713573A1 (en) | 2012-09-27 | 2014-04-02 | British Telecommunications public limited company | Application layer session routing |
CN105991371A (en) * | 2015-04-16 | 2016-10-05 | 杭州迪普科技有限公司 | Fault detection method and device |
FR3039347B1 (en) * | 2015-07-20 | 2017-09-08 | Bull Sas | METHOD FOR SAVING THE WORKING ENVIRONMENT OF A USER SESSION ON A SERVER |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622261B1 (en) * | 1998-04-09 | 2003-09-16 | Compaq Information Technologies Group, L.P. | Process pair protection for complex applications |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6859834B1 (en) * | 1999-08-13 | 2005-02-22 | Sun Microsystems, Inc. | System and method for enabling application server request failover |
US6363065B1 (en) * | 1999-11-10 | 2002-03-26 | Quintum Technologies, Inc. | okApparatus for a voice over IP (voIP) telephony gateway and methods for use therein |
US7016343B1 (en) * | 2001-12-28 | 2006-03-21 | Cisco Technology, Inc. | PSTN call routing control features applied to a VoIP |
US6944788B2 (en) * | 2002-03-12 | 2005-09-13 | Sun Microsystems, Inc. | System and method for enabling failover for an application server cluster |
EP1398701A1 (en) * | 2002-09-12 | 2004-03-17 | Siemens Aktiengesellschaft | Method for synchronizing events, in particular for fault-tolerant systems |
US7251745B2 (en) * | 2003-06-11 | 2007-07-31 | Availigent, Inc. | Transparent TCP connection failover |
US7436820B2 (en) * | 2004-09-29 | 2008-10-14 | Lucent Technologies Inc. | Method and apparatus for providing fault tolerance to intelligent voice-over-IP endpoint terminals |
US7483383B2 (en) * | 2004-10-28 | 2009-01-27 | Alcatel Lucent | Stack manager protocol with automatic set up mechanism |
US7308610B2 (en) * | 2004-12-10 | 2007-12-11 | Intel Corporation | Method and apparatus for handling errors in a processing system |
US7376860B2 (en) * | 2004-12-16 | 2008-05-20 | International Business Machines Corporation | Checkpoint/resume/restart safe methods in a data processing system to establish, to restore and to release shared memory regions |
US8593939B2 (en) * | 2005-04-19 | 2013-11-26 | At&T Intellectual Property Ii, L.P. | Method and apparatus for maintaining active calls during failover of network elements |
US7668100B2 (en) * | 2005-06-28 | 2010-02-23 | Avaya Inc. | Efficient load balancing and heartbeat mechanism for telecommunication endpoints |
-
2006
- 2006-05-26 US US11/420,589 patent/US20060271812A1/en not_active Abandoned
- 2006-05-26 US US11/420,582 patent/US20060271811A1/en not_active Abandoned
- 2006-05-26 EP EP06771546A patent/EP1884106A2/en not_active Withdrawn
- 2006-05-26 US US11/420,604 patent/US20060271813A1/en not_active Abandoned
- 2006-05-26 WO PCT/US2006/020856 patent/WO2006128147A2/en active Application Filing
-
2007
- 2007-11-27 IL IL187682A patent/IL187682A0/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622261B1 (en) * | 1998-04-09 | 2003-09-16 | Compaq Information Technologies Group, L.P. | Process pair protection for complex applications |
Non-Patent Citations (2)
Title |
---|
BEHRENS H: "High-Availability Failover for snom 4S"[Online] 14 January 2004 (2004-01-14), pages 1-10, XP002401161 Retrieved from the Internet: URL:http://sssg1.whoi.edu/snom/FAQs%20(ENG)/FAQ-04-01-14-hb.pdf> [retrieved on 2006-09-29] * |
CISCO SYSTEMS: "High-Availability Solutions for SIP Enabled Voice-over-IP Networks" CISCO SYSTEMS WHITE PAPER, [Online] July 2002 (2002-07), pages 1-7, XP002401162 Retrieved from the Internet: URL:http://www.sipcenter.com/sip.nsf/html/WEBB5YP4SU/$FILE/cisco_high_availability.pdf> [retrieved on 2006-09-29] * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2443859A (en) * | 2006-11-17 | 2008-05-21 | Al Innovations Ltd | Voice over internet protocol system with a redundant VoIP server |
GB2443859B (en) * | 2006-11-17 | 2011-11-09 | Al Innovations Ltd | Voice over internet protocol systems |
FR2912271A1 (en) * | 2007-02-06 | 2008-08-08 | France Telecom | Service i.e. voice over Internet protocol telephone service, managing method for use in Internet protocol network, involves receiving message at two levels of controllers when router selects two routes |
WO2008107597A2 (en) * | 2007-02-06 | 2008-09-12 | France Telecom | Service management in a network |
WO2008107597A3 (en) * | 2007-02-06 | 2009-04-30 | France Telecom | Service management in a network |
US8174965B2 (en) | 2007-02-06 | 2012-05-08 | France Telecom | Service management in a network |
Also Published As
Publication number | Publication date |
---|---|
IL187682A0 (en) | 2009-02-11 |
WO2006128147A9 (en) | 2007-01-18 |
US20060271813A1 (en) | 2006-11-30 |
US20060271811A1 (en) | 2006-11-30 |
US20060271812A1 (en) | 2006-11-30 |
WO2006128147A3 (en) | 2007-04-05 |
EP1884106A2 (en) | 2008-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060271811A1 (en) | Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture | |
US10348893B2 (en) | System to deploy a disaster-proof geographically-distributed call center | |
US8122280B2 (en) | Method and system for providing high availability to computer applications | |
US8171466B2 (en) | Hitless application upgrade for SIP server architecture | |
KR100812374B1 (en) | System and method for managing protocol network failures in a cluster system | |
US9515849B2 (en) | Method and apparatus for managing communication faults | |
US9270558B2 (en) | Method, local gateway, and system for local voice survivability | |
JP2009118063A (en) | Redundant system, method, program and server | |
EP2587774B1 (en) | A method for sip proxy failover | |
US20080151892A1 (en) | Method, Copumter Program Product, and Apparatus for Providing Passive Automated Provisioning | |
KR100713072B1 (en) | Duplexed softswitch system and method thereof | |
US11240097B2 (en) | Communications methods and apparatus for minimizing and/or preventing message processing faults | |
JP2014158225A (en) | Communication system | |
Gorti | A fault tolerant VoIP implementation based on open standards | |
CN102647397B (en) | A kind of method and system of SIP meeting call protection | |
CN101877673B (en) | Method to block split phone and gateway registration | |
KR20170131001A (en) | System for controlling application sever based on data distribution service | |
KR100793446B1 (en) | Method for processing fail-over and returning of duplication telecommunication system | |
Mondal et al. | Defects Per Million (DPM): A user-oriented perspective of telecommunication systems | |
NFV | ETSI GS NFV-REL 001 V1. 1.1 (2015-01) | |
Aghdaie et al. | Efficient client-transparent fault tolerance for video conferencing. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2006771546 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 187682 Country of ref document: IL |
|
NENP | Non-entry into the national phase |
Ref country code: RU |