BULK DATA TRANSFER
First Claim
1. A method for reliable data transfer over an unreliable network between a sender and a receiver for which the time overhead for resending lost data remains constant for arbitrarily high delay, loss, or reordering of data in transit, and for arbitrarily high transmission speed, the method comprising:
- acquiring an injection rate for transmission of data blocks from the sender;
sending data blocks sequentially from the sender to the receiver at the injection rate;
receiving one or more data blocks at the receiver, each block of the one or more data blocks including an identification number;
detecting missing original data blocks based on identification numbers received;
detecting missing retransmitted data blocks based on the expected time of receipt as a function of the predicted path round-trip time;
determining a path round trip time through a predictive estimation of time to send a retransmission request from the receiver to the sender, retrieve a corresponding data block from a data source at the sender, and transmit the data block to the receiver;
storing one or more identification numbers of data blocks lost on the receiver such that a time to add or retrieve a block id from storage does not degrade as a number of lost blocks scales up;
sending retransmission requests from the receiver to the sender on a timer based on the predicted path round-trip time so that the sender can retransmit lost data as early as possible to maximize the contiguous receipt of data without re-transmitting too-early data blocks that are only delayed in transit and will eventually reach the receiver;
storing retransmission requests for missed data blocks on the sender such that the time to add or retrieve the block id for a block to retransmit does not degrade as the number of retransmission requests increases;
sending retransmitted data at the sender at a rate which is commensurate with the injection rate to minimize the storage of retransmission requests at the sender; and
sending data for all outstanding retransmission requests first before sending data that has not yet been sent to avoid compounding data loss.
1 Assignment
0 Petitions
Accused Products
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.
170 Citations
30 Claims
-
1. A method for reliable data transfer over an unreliable network between a sender and a receiver for which the time overhead for resending lost data remains constant for arbitrarily high delay, loss, or reordering of data in transit, and for arbitrarily high transmission speed, the method comprising:
-
acquiring an injection rate for transmission of data blocks from the sender; sending data blocks sequentially from the sender to the receiver at the injection rate; receiving one or more data blocks at the receiver, each block of the one or more data blocks including an identification number; detecting missing original data blocks based on identification numbers received; detecting missing retransmitted data blocks based on the expected time of receipt as a function of the predicted path round-trip time; determining a path round trip time through a predictive estimation of time to send a retransmission request from the receiver to the sender, retrieve a corresponding data block from a data source at the sender, and transmit the data block to the receiver; storing one or more identification numbers of data blocks lost on the receiver such that a time to add or retrieve a block id from storage does not degrade as a number of lost blocks scales up; sending retransmission requests from the receiver to the sender on a timer based on the predicted path round-trip time so that the sender can retransmit lost data as early as possible to maximize the contiguous receipt of data without re-transmitting too-early data blocks that are only delayed in transit and will eventually reach the receiver; storing retransmission requests for missed data blocks on the sender such that the time to add or retrieve the block id for a block to retransmit does not degrade as the number of retransmission requests increases; sending retransmitted data at the sender at a rate which is commensurate with the injection rate to minimize the storage of retransmission requests at the sender; and sending data for all outstanding retransmission requests first before sending data that has not yet been sent to avoid compounding data loss. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A data transfer system for transfer of data over a network between the sender and the receiver, comprising:
-
means for acquiring an injection rate for transmission of data blocks from the sender; means for sending data blocks sequentially from the sender to the receiver at the injection rate; means for receiving one or more data blocks at the receiver, each block of the one or more data blocks including an identification number; means for detecting missing original data blocks based on identification numbers received; means for detecting missing retransmitted data blocks based on the expected time of receipt as a function of the predicted path round-trip time; means for determining a path round trip time through a predictive estimation of time to send a retransmission request from the receiver to the sender, retrieve a corresponding data block from a data source at the sender, and transmit the data block to the receiver; means for storing one or more identification numbers of data blocks lost on the receiver such that a time to add or retrieve a block id from storage does not degrade as a number of lost blocks scales up; means for sending retransmission requests from the receiver to the sender on a timer based on the predicted path round-trip time so that the sender can retransmit lost data as early as possible to maximize the contiguous receipt of data without re- transmitting too-early data blocks that are only delayed in transit and will eventually reach the receiver; means for storing retransmission requests for missed data blocks on the sender such that a time to add or retrieve the block id for a block to retransmit does not degrade as the number of retransmission requests increases; means for sending retransmitted data at the sender at a rate which is commensurate with the injection rate to minimize the storage of retransmission requests at the sender; and means for sending data for all outstanding retransmission requests first before sending data that has not yet been sent to avoid compounding data loss. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A method for data transfer between a sender in communication with a data source and a receiver, the method comprising:
-
dividing the data from the data source into one or more blocks; associating each block of the one or more blocks with a sequential identification number; receiving an injection rate for transmission of the data blocks; receiving retransmission requests from the receiver identifying one or more missing blocks, the retransmission requests based on a predicted path round-trip timeout for identifying missing blocks and transmitted from the receiver commensurate with the injection rate; and transmitting data at the injection rate, the data comprising lost blocks identified in the retransmission requests followed by remaining blocks of the one or more blocks, the transmitting allowing non-sequential transmission of data blocks. - View Dependent Claims (28, 29, 30)
-
Specification