Claims
- 1. A method of sending data, comprising:assigning a first predetermined value to a sequence number; obtaining blocks of data at a sender, wherein each of the blocks of data corresponds to a packet of data; assigning the first predetermined value as the sequence number to each of the packets of data; waiting for a shuttle program to provide a second predetermined value for said sequence number different from the first predetermined value; in response to the sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledging receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to a destination.
- 2. The method of claim 1, further comprising:said sender indicating a transfer ready signal to a primary storage device; said sender receiving said data from said primary storage device, wherein said acknowledging is performed prior to said data has not been sent from said primary storage device.
- 3. The method of claim 2, wherein said sender is a WAN blade and the destination is at least one secondary storage device.
- 4. The method of claim 2, wherein said primary storage and at least one secondary storage device is included in a consistency group, there being a set of at least one consistency group, and the method further includes:said shuttle program circulating among senders associated with primary storage devices of each consistency group; and another separate shuttle program circulating among receivers associated with secondary storage devices of each consistency group, each consistency group having its own set of shuttles.
- 5. The method of claim 4, wherein said senders and receivers being WAN blades, and said shuttle program and said other separate shuttle program are circulated in a round-robin fashion.
- 6. The method of claim 1, wherein said shuttle program causes a first and a second data packet to be assigned different sequence numbers if the first data packet depends upon a write of data included in the second data packet.
- 7. The method of claim 6, wherein said shuttle program increases said value associated with said sequence number from a first value to a second value when the sender has received all data packets having said first value.
- 8. A method for receiving data comprising:obtaining data at a receiver having an associated sequence number of a first predetermined value, said data being blocks of data corresponding to packets of data assigned the first predetermined value; said receiver waiting for a shuttle program providing an indicator having said first predetermined value; said receiver releasing said shuttle program causing said shuttle program to circulate to a next receiver; said receiver initiating writes to at least one storage device for all data associated with a sequence number of said first predetermined value; said receiver waiting for acknowledgement of said write initiation by each of said at least one storage device; said receiver waiting for said shuttle program providing a second predetermined value for said sequence number that is different than said first predetermined value; said receiver releasing said shuttle program causing said shuttle program to circulate to a next receiver; and sending said data to each of said at least one storage device.
- 9. The method of claim 8, further comprising:sending a synchronization signal from said receiver to a sender of said data associated with said first predetermined value as a sequence number.
- 10. The method of claim 8, wherein said sender sends said data to a plurality of receivers, and successful storage of said data being indicated upon said sender receiving from each of said receivers a synchronization signal.
- 11. The method of claim 10, wherein each of said receivers is a WAN blade coupled to a secondary storage device, and said sender is a WAN blade coupled to a primary storage device, the computer program product further comprising machine executable code that sends data from the primary to each of said secondary storage devices such that each of said secondary storage devices receives said data in the same order in which the data was written by a host to the primary storage device.
- 12. A computer program product for sending data, comprising:machine executable code that assigns a first predetermined value to a sequence number; machine executable code that obtains blocks of data at a sender, wherein each of the blocks of data corresponds to a packet of data; machine executable code that assigns the first predetermined value as the of sequence number to each of the packets of data; machine executable code that waits for a shuttle program to provide a second predetermined value for said sequence number different from the first predetermined value; machine executable code that, in response to the sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledges receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to a destination.
- 13. The computer program product of claim 12, further comprising:machine executable code that causes said sender to indicate a transfer ready signal to a primary storage device; and machine executable code for receiving said data from said primary storage device, wherein said acknowledging is performed prior to said data has not been sent from said primary storage device.
- 14. The computer program product of claim 13, wherein said sender is a WAN blade and the destination is at least one secondary storage device.
- 15. The computer program product of claim 13, wherein said primary storage and at least one secondary storage device is included in a consistency group, there being a set of at least one consistency group, and the computer program product further includes:machine executable code causing said shuttle program to circulate among senders associated with primary storage devices of each consistency group; and machine executable code causing another separate shuttle program to circulate among receivers associated with secondary storage devices of each consistency group, each consistency group having its own set of shuttle programs.
- 16. The computer program product of claim 15, wherein said senders and receivers being WAN blades, and the computer program product further includes machine executable code causing said shuttle program and said other separate shuttle program to circulate in a round-robin fashion.
- 17. The computer program product of claim 12, wherein said shuttle program includes machine executable code that assigns two data packets, a first and a second data packet, different sequence numbers if the first data packet depends upon a write of data included in the second data packet.
- 18. The computer program product of claim 17, wherein said shuttle program includes machine executable code that increases said value associated with said sequence number from a first value to a second value when the sender has received all data packets having said first value.
- 19. A computer program product for receiving data comprising:machine executable code that obtains data at a receiver having an associated sequence number of a first predetermined value, said data being blocks of data corresponding to packets of data assigned the first predetermined value; machine executable code causing said receiver to wait for a shuttle program providing an indicator having said first predetermined value; machine executable code causing said receiver to release said shuttle program causing said shuttle program to circulate to a next receiver; machine executable code causing said receiver to initiate writes to at least one storage device for all data associated with a sequence number of said first predetermined value; machine executable code causing said receiver to wait for acknowledgement of said write initiation by each of said at least one storage device; machine executable code causing said receiver to wait for said shuttle program providing a second predetermined value for said sequence number that is different than said first predetermined value; machine executable code causing said receiver to release said shuttle program causing said shuttle program to circulate to a next receiver; and machine executable code that sends said data to each of said at least one storage device.
- 20. The computer program product of claim 19, further comprising:machine executable code that sends a synchronization signal from said receiver to a sender of said data associated with said first predetermined value as a sequence number.
- 21. The computer program product of claim 19, wherein said sender sends said data to a plurality of receivers, and successful storage of said data is indicated by said sender receiving from each of said receivers a synchronization signal.
- 22. The computer program product of claim 21, wherein each of said receivers is a WAN blade coupled to a secondary storage device, and said sender is a WAN blade coupled to a primary storage device, data being sent from the primary to each of said secondary storage devices such that each of said secondary storage devices receives said data in the same order in which the data was written by a host to the primary storage device.
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 09/940,903 filed on Aug. 28, 2001 (pending).
US Referenced Citations (1)
Number |
Name |
Date |
Kind |
5699500 |
Dasgupta |
Dec 1997 |
A |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09/940903 |
Aug 2001 |
US |
Child |
09/965168 |
|
US |