×

Application recovery from network-induced data corruption

  • US 7,991,750 B1
  • Filed: 06/10/2008
  • Issued: 08/02/2011
  • Est. Priority Date: 06/10/2008
  • Status: Active Grant
First Claim
Patent Images

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 all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×