Nova Patents
CA2590965C

Bulk data transfer

Abstract

This disclosure relates to network data communication. Some embodiments include initiating a network connection between an original source and an ultimate destination, transmitting a block of data from the original source to the ultimate destination on the network, requesting retransmission of lost blocks from the ultimate destination to the source and retransmitting the lost blocks from source to the ultimate destination. These embodiments further include measuring round-trip time of a retransmit request, the round-trip time measured from a time of transmission of a retransmit request from the ultimate destination to a time of reception at the ultimate destination after retransmission from the original source and setting the round-trip time as a minimum retransmission request time for the network connection, wherein the round-trip time includes latencies of the network connection and in data processes at the original source and at the ultimate destination.

CA2590965C, drawing sheet 1
Sheet 1 of 8

Term

Term ended

Expired 23 December 2025, 0.8 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

38 claims: 15 independent, 23 dependent

  1. 1
    CA 02590965 2015-02-12 CLAIMS 1. A method for reliable data transfer over an unreliable network between a sender and a receiver, the method comprising:acquiring an injection rate for transmission of data blocks from the sender;transmitting blocks of data identified by sequence numbers from the sender to the receiver at the acquired injection rate;receiving the blocks of data transmitted at the receiver and detecting blocks that have been lost in transmission by detecting a lost block when a block is received with a sequence number greater than the next sequence number expected;when a lost block is at the receiver detected as indicated by a gap in the received sequence numbers between a presently received block and the last block previously received, scheduling transmission of retransmission requests from the receiver to the sender for all of the missed blocks having sequence numbers between the last previously received block and the presently received block;scheduling retransmission requests for lost blocks by storing the retransmission requests in an indexed array at the receiver;transmitting the retransmission requests stored in the indexed array from the receiver to the sender at specified due times for each such retransmission request wherein the corresponding index at which each such retransmission request is stored in the indexed array is included in the retransmission request;responding to a retransmission request at the sender by retransmitting the lost block and the corresponding index into the indexed array for the retransmission request to the receiver;and, when a lost block and its corresponding index are received at the receiver, using the index to look up and cancel the retransmission request for the received block.
  2. 8
    The method claim 1, wherein acquiring the injection rate includes acquiring a fixed injection rate.
  3. 16
    The method of any of the claims 10-15 where the calculated injection rate is only applied when the network path between the sender and receiver is congested, indicating that other data transfers are running concurrently on the same network path, comprising:a) measuring the base round-trip time brtti;b) measuring the smoothed round-trip time srtti;c) determining congested and not congested modes using a hysteresis model, by measuring the difference between the smoothed rtt and the base rtt (the network queuing delay), and a direction of change in the difference, as follows: Let drtti = srtti - brtti - 10. - Initial state is NOT CONGESTED (NC) mode In NC mode: If srtti increased from last sample AND drtti >02 * brtti, switch to CONGESTED (C) mode Else stay in NC mode - In C mode: If srtti decreased from last sample AND drtti <0.5 * brtti, switch to NC mode Else stay in C mode CA 02590965 2015-02-12 d) using the calculated injection rate only in a congested mode and otherwise use the default injection rate.
  4. 20
    A method for data receipt by a receiver from a sender in communication with a data source, the method comprising:at the sender, transmitting blocks of data identified by sequence numbers at a programmable injection rate as determined by an injection rate input;at the receiver, receiving the blocks of data transmitted by the sender and detecting blocks that have been lost in transmission based on the sequence numbers received;at the receiver, transmitting a retransmission request to the sender when a missing data block is detected and scheduling repeated transmission of the retransmission request based upon a predicted path round-trip time until the missing block is received;at the receiver, throttling the transmission of retransmission requests commensurate with the injection rate.
  5. 22
    The method of any one of claims 20-21, further comprising storing identification numbers of blocks to be retransmitted in a linear array, where a linear index of each block travels with a request for retransmission to the sender and back with the data block itself.
  6. 23
    The method of any one of claims 20-22, where retransmission requests travel in packets with a smallest size possible for the injection rate.
  7. 24
    The method of any one of claims 20-23, further comprising using a high watermark calculated as a running average of size of a retransmission table of retransmission requests in a disk write cache process to minimize random access to a disk.
  8. 25
    The method of any one of claims 20-24, wherein the sender transmits data blocks out of sequence.
  9. 26
    The method of any one of claims 20-25, further comprising the sender acquiring an injection rate for transmission of the data blocks.
  10. 29
    A data transfer system for transfer of data over a network, comprising:a sender configured to transmit blocks of data identified by sequence numbers at a specified injection rate as determined by an injection rate input;a receiver configured to receive the blocks of data transmitted by the sender and to detect a lost block when a block is received with a sequence number greater than the next sequence number expected;CA 02590965 2015-02-12 wherein the receiver is configured to, when a lost block is detected as indicated by a gap in the received sequence numbers between a presently received block and the last block previously received, schedule transmission of retransmission requests for all of the missed blocks t having sequence numbers between the last previously received block and the presently received block;wherein the receiver is configured to schedule retransmission requests for lost blocks by storing the retransmission requests in an indexed array;wherein the receiver is configured to transmit the retransmission requests stored in the indexed array at specified due times for each such retransmission request, wherein the index at which each such retransmission request is stored in the indexed array is included in the retransmission request;wherein the sender is configured to respond to a retransmission request by retransmitting the lost block and the corresponding index into the indexed array for the retransmission request;and, wherein, when a lost block and its corresponding index are received, the receiver is configured to use the index to look up and cancel the retransmission request for the received block.
  11. 32
    The data transfer system of any of claims 29-31, wherein a modified Red Black Tree with substantially constant-time retrieval is used by the retransmission means to store sequence numbers for the retransmissions sorted by number. CA 02590965 2015-02-12
  12. 33
    The data transfer system of any of claims 29-32, further comprising a disk write cache mechanism to minimize random access to a disk, the mechanism using a high watermark calculated as a running average of the size of a retransmission table.
  13. 34
    The data transfer system of any of claims 29-33, further comprising a management interface for reliable and efficient data transfer.
  14. 35
    A data transfer system for providing transfer of data over a network, comprising:a sender configured to transmit blocks of data identified by sequence numbers at a programmable injection rate as determined by an injection rate input;a receiver configured to receive the blocks of data transmitted by the sender and to detect blocks that have been lost in transmission based on the sequence numbers received;wherein the receiver is configured to transmit a retransmission request to the sender when a missing data block is detected and configured to schedule repeated transmission of the retransmission request based upon a predicted path round-trip time until the missing block is received;wherein the receiver is configured to throttle the transmission of retransmission requests commensurate with the injection rate.
  15. 38
    The system of any of claims 35-37 wherein the receiver is configured to store identification numbers of blocks to be retransmitted in an indexed array, where an index for each such block travels with a request for retransmission to the sender and back with the data block itself.