Application recovery from network-induced data corruption
First Claim
1. A computer system for transferring data from a source application to a destination application using TCP, comprising:
- a source computer which implements TCP, the source computer comprising a source storage medium;
a destination computer which implements TCP, the destination computer comprising a destination storage medium;
a source application which executes on the source computer and which accesses the source storage medium;
a destination application which executes on the destination computer and which accesses the destination storage medium;
a communications network communicating data between the source computer and the destination computer, the destination computer using TCP checksums to detect some but not all errors introduced into the data by the communications network;
a body of data stored in the source storage medium, and wherein;
the source application copies the body of data into a plurality of data blocks, associates a block identifier with each of the data blocks, calculates a source checksum value for each data block, encapsulates each data block with the respective block identifier and source checksum value into a padded data block, and sends to the destination application all of the padded data blocks in an initial data transfer using TCP;
the destination application receives all of the padded data blocks in the initial data transfer, extracts the data block and the source checksum value and the block identifier from each padded data block, calculates a destination checksum value for each data block, compares the destination checksum value to the source checksum for each data block, stores a first group of data blocks having a source checksum value that matches the destination checksum value on the destination storage medium, identifies a second group of any data blocks having a source checksum value that does not match the destination checksum value and stores the block identifiers of the second group of data blocks in a resend list, and sends to the source application the block identifiers in the resend list after the initial data transfer has completed;
the source application receives the block identifiers of the resend list and in response recalculates a source checksum value for each data block of the second group, encapsulates each data block of the second group with the respective block identifier and the recalculated source checksum value into a padded data block, and resends to the destination application all of the padded data blocks in a subsequent data transfer using TCP; and
the checksum values calculated by the source and destination applications are separate from the checksums used by TCP.
1 Assignment
0 Petitions
Accused Products
Abstract
A source application reads a body of data in data block sized units and calculates a checksum value for each data block before sending the data block, the calculated checksum value and the identifier. Upon receipt, a destination application independently calculates a checksum value for each received data block and compares the two checksums. Non-matching checksums indicate a network-induced error in the data block. Identifiers for the erroneous data blocks are transmitted to the source application after all of the data blocks have been initially transmitted. The source application thereafter resends only those data blocks identified. The destination application repeats the process of comparing checksums and transmitting identifiers to the source application until all of the data blocks of the body of data have been correctly received, and then uses the data blocks to recreate the body of data.
16 Citations
19 Claims
-
1. A computer system for transferring data from a source application to a destination application using TCP, comprising:
-
a source computer which implements TCP, the source computer comprising a source storage medium; a destination computer which implements TCP, the destination computer comprising a destination storage medium; a source application which executes on the source computer and which accesses the source storage medium; a destination application which executes on the destination computer and which accesses the destination storage medium; a communications network communicating data between the source computer and the destination computer, the destination computer using TCP checksums to detect some but not all errors introduced into the data by the communications network; a body of data stored in the source storage medium, and wherein; the source application copies the body of data into a plurality of data blocks, associates a block identifier with each of the data blocks, calculates a source checksum value for each data block, encapsulates each data block with the respective block identifier and source checksum value into a padded data block, and sends to the destination application all of the padded data blocks in an initial data transfer using TCP; the destination application receives all of the padded data blocks in the initial data transfer, extracts the data block and the source checksum value and the block identifier from each padded data block, calculates a destination checksum value for each data block, compares the destination checksum value to the source checksum for each data block, stores a first group of data blocks having a source checksum value that matches the destination checksum value on the destination storage medium, identifies a second group of any data blocks having a source checksum value that does not match the destination checksum value and stores the block identifiers of the second group of data blocks in a resend list, and sends to the source application the block identifiers in the resend list after the initial data transfer has completed; the source application receives the block identifiers of the resend list and in response recalculates a source checksum value for each data block of the second group, encapsulates each data block of the second group with the respective block identifier and the recalculated source checksum value into a padded data block, and resends to the destination application all of the padded data blocks in a subsequent data transfer using TCP; and the checksum values calculated by the source and destination applications are separate from the checksums used by TCP. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of detecting and correcting data errors arising from communicating a body of data through a network communications flow path between a source computer executing a source application and a destination computer executing a destination application, the source and destination computers utilizing an implementation of TCP to communicate over the network communications flow path, at least some of the data errors going undetected by TCP, comprising:
-
reading a body of data into data blocks, by the source application; calculating a source checksum value for each data block, by the source application; associating a block identifier with each data block, by the source application, wherein the block identifier uniquely identifies the data block; encapsulating each data block, calculated checksum, and associated block identifier into a padded data block; sending the padded data blocks to the destination application over the network communications flow path, by the source application; receiving the padded data blocks from the source application over the network communications flow path, by the destination application; extracting the data block, calculated checksum and associated block identifier from each received padded data block, by the destination application; using the extracted data block to calculate a destination checksum value for each extracted data block, by the destination application; comparing the source checksum value to the destination checksum value for each data block extracted, by the destination application; determining by the destination application a data block to be corrupted if the source checksum value of each data block does not match the destination checksum value of the data block, by the destination application; requesting the source application to resend corrupted data blocks, the resend occurring after the destination application has received all of the data blocks, the requesting occurring by sending to the source application block identifiers associated with the corrupted data blocks, by the destination application; resending any data blocks requested to be resent with checksum values and with block identifiers in padded data blocks, by the source application; and wherein the calculated source and destination checksum values are separate from any checksums used by TCP. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A computer system for transferring data from a first storage server over a communication network to a second storage server, comprising:
-
a first storage server comprising a first storage medium; a second storage server comprising a second storage medium; a communications network for communicating data between the first and second storage servers; a body of data stored in the first storage medium, and wherein; the first storage server reads portions of the body of data until the body of data is read, calculates a checksum for each of the portions, and sends all of the portions along with calculated checksums to the second storage server using TCP/IP; the second storage server receives all of the portions and calculated checksums, calculates a second checksum value for each portion, compares the received checksum to the second checksum for each portion, and communicates to the first storage server a resend request for any of the portions when any of the portions have received checksums and second checksums which do not match; the first storage server receives the resend request and resends the requested portions with calculated checksums using TCP/IP to the second storage server after all of the portions have been sent to the second storage server at least once; and the second storage server receives the resent portions and calculated checksums, calculates a second checksum for each received portion, and reconstructs the body of data onto the second storage medium after the received and second checksums match for every portion of the body of data. - View Dependent Claims (18, 19)
-
Specification