IP Library Granted Patent US 8,868,862
Granted Patent B2
US 8,868,862 · App. 13/339,497 · Granted Oct 21, 2014

Method and apparatus for synchronization in primary-backup replication schemes

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,868,862
App. No.
13/339,497
Granted
Oct 21, 2014
Kind
B2
Abstract

A primary-backup replication capability is disclosed. A primary process and a backup process participate in a synchronization process configured to synchronize state information of the primary and backup processes. The synchronization process operates in periods of time referred to as epochs. During the current epoch, the primary process computes state update information representing changes to the state information of the primary process since a previous epoch, and also buffers output messages generated during the current epoch in an associated output buffer dedicated for use in the current epoch. The primary process initiates a new epoch independent of receiving, from the backup process, a state update acknowledgement for the previous epoch. The output messages buffered for the current epoch are released from the associated output buffer after the primary process receives a state update acknowledgment for the current epoch and all output buffers of all previous epochs are empty.

Claims (46)

1. An apparatus for synchronizing state between a primary process and a backup process, comprising:

at least one memory configured to maintain a plurality of output buffers associated with a respective plurality of epochs of a synchronization process configured to synchronize state information of the primary process with state information of the backup process; and

a processor communicatively connected to the at least one memory, the processor configured to:

compute state update information for a current epoch, the state update information representing changes to the state information of the primary process since a previous epoch;

buffer output messages generated during the current epoch in the output buffer associated with the current epoch;

initiate a new epoch independent of receiving, from the backup process, a state update acknowledgement for the current epoch acknowledging receipt by the backup process of the state update information for the current epoch; and

release the output messages generated during the current epoch from the output buffer associated with the current epoch based on a determination that the state update acknowledgment for the current epoch has been received from the backup process and a determination that output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs.

2. The apparatus of claim 1 , wherein the processor is configured to:

during the current epoch, receive input messages and process the input messages for generating at least a portion of the output messages generated during the current epoch.

3. The apparatus of claim 1 , wherein the processor is configured to:

during the current epoch, perform local processing for generating at least a portion of the output messages generated during the current epoch.

4. The apparatus of claim 1 , wherein the processor is configured to:

propagate the state update information associated with the current epoch toward the backup process.

5. The apparatus of claim 4 , wherein the processor is configured to release the output messages generated during the current epoch an environment associated with the primary process and the backup process.

6. The apparatus of claim 5 , wherein the environment comprises a communication network and at least one other process configured to communicate with the primary process.

7. The apparatus of claim 1 , wherein the processor is configured to:

determine whether the state update acknowledgment for the current epoch has been received by monitoring for receipt, from the backup process, of the state update acknowledgment for the current epoch.

8. The apparatus of claim 1 , wherein the processor is configured to:

determine whether output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs based on a determination that the state update acknowledgment for the current epoch has been received.

9. The apparatus of claim 8 , wherein the processor is configured to:

delay release of the output messages generated during the current epoch the output buffer associated with the current epoch based on a determination that not all of the output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs.

10. A method for synchronizing state between a primary process and a backup process, the method comprising:

using a processor and at least one memory for:

computing state update information for a current epoch of a synchronization process configured to synchronize state information of a primary process with state information of a backup process, wherein the state update information represents changes to the state information of the primary process since a previous epoch;

buffering output messages generated during the current epoch in an output buffer associated with the current epoch;

initiating a new epoch independent of receiving, from the backup process, a state update acknowledgement for the current epoch acknowledging receipt by the backup process of the state update information for the current epoch; and

releasing the output messages generated during the current epoch from the output buffer associated with the current epoch based on a determination that the state update acknowledgment for the current epoch has been received from the backup process and a determination that output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs.

11. The method of claim 10 , further comprising:

during the current epoch, receiving input messages and processing the input messages for generating at least a portion of the output messages generated during the current epoch.

12. The method of claim 10 , further comprising:

during the current epoch, performing local processing for generating at least a portion of the output messages generated during the current epoch.

13. The method of claim 10 , further comprising:

propagating the state update information associated with the current epoch toward the backup process.

14. The method of claim 13 , wherein the output messages generated for the current epoch are released to an environment associated with the primary process and the backup process.

15. The method of claim 14 , wherein the environment comprises a communication network and at least one other process configured to communicate with the primary process.

16. The method of claim 10 , further comprising:

determining whether the state update acknowledgment for the current epoch has been received by monitoring for receipt, from the backup process, of the state update acknowledgment for the current epoch.

17. The method of claim 10 , further comprising:

determining whether output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs based on a determination that the state update acknowledgment for the current epoch has been received.

18. The method of claim 17 , further comprising:

delaying release of the output messages generated during the current epoch the output buffer associated with the current epoch based on a determination that not all of the output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs.

19. A non-transitory computer-readable storage medium storing instructions which, when executed by a computer, cause the computer to perform a method for synchronization between a primary process and a backup process, the method comprising:

computing state update information for a current epoch of a synchronization process configured to synchronize state information of a primary process with state information of a backup process, wherein the state update information represents changes to the state information of the primary process since a previous epoch;

buffering output messages generated during the current epoch in an output buffer associated with the current epoch;

initiating a new epoch independent of receiving, from the backup process, a state update acknowledgement for the current epoch acknowledging receipt by the backup process of the state update information for the current epoch; and

releasing the output messages generated during the current epoch from the output buffer associated with the current epoch based on a determination that the state update acknowledgment for the current epoch has been received from the backup process and a determination that output messages of any previous epochs have been released from the respective output buffers associated with the previous epochs.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT USA INC.
Reel/Frame 033949/0016 →
SECURITY INTEREST Recorded Mar 7, 2013
From: ALCATEL-LUCENT USA INC.
To: CREDIT SUISSE AG
Reel/Frame 030510/0627 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2013
From: ALCATEL-LUCENT USA INC.
To: ALCATEL LUCENT
Reel/Frame 029739/0179 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2012
From: NAMJOSHI, KEDAR; KOPPOL, PRAMOD; STATHOPOULOS, ATHANASIOS; WILFONG, GORDON T
To: ALCATEL-LUCENT USA INC.
Reel/Frame 027622/0536 →