Effective protocol for high-rate, long-latency, asymmetric, and bit-error prone data links
First Claim
1. A system for efficiently and reliably communicating over a high-speed asymmetric communications link comprising:
- first means for establishing contact between a first device and a second device over a channel;
second means for delivering data packets over said channel between said first and second devices, each packet having an associated header and payload, wherein each packet traveling from said first device to said second device is associated with a window of packets;
third means for employing said second means to transmit a message with respect to plural error conditions with respect to a number of said data packets, wherein said third means includes means for timing transmissions of said message in accordance with each window of packets and providing said message from said second device to said first device via said second means in response thereto and further includes means for sending acknowledgement messages from said second device to said first device specifying packets associated with said window of packets not received by said second device; and
fourth means for selectively disabling said second means when said first device does not receive one of said acknowledgement messages after a predetermined time interval;
wherein said predetermined time interval is a function of a window timeout variable, wherein said window timeout is greater than N multiplied by a number of packets included in said window of packets divided by the data rate of the communications link between said first device and said second device, wherein N is greater than or equal to 3 and less than or equal to 10, and wherein each of said packets includes a header that includes a file parameter and a sequence parameter that specify a file associated with each of said packets and a position in said file of each of said packets, respectively.
1 Assignment
0 Petitions
Accused Products
Abstract
A system for efficiently and reliably communicating over a high-speed asymmetric communications link. The system includes a first mechanism for connecting a first device to a second device via a channel. A second mechanism delivers data packets over the channel from the first device to the second device. Each packet is associated with a window of packets. A third mechanism selectively employs the second mechanism to re-send data packets not received by the second device after each window of packets. The window of packets is sized in accordance with the bandwidth of the communications link between the first device and the second device, and the round trip delay time. In a specific embodiment, the first mechanism (includes Transmission Control Protocol/Internet Protocol (TCP/IP) functionality on the first device and the second device for establishing a first TCP/IP link from the second device to the first device. The first mechanism also includes Universal Datagram Protocol (UDP) functionality on the first device and the second device for transferring UDP packets from the first device to the second device. The third mechanism sends acknowledgement messages from the second device to the first device specifying the packets not received by the second device. The system further includes a fourth mechanism for selectively disabling the second mechanism when first device does not receive an acknowledgement message after a predetermined time interval. The predetermined time interval is a function of a window timeout variable. The predetermined function is (M)×(window timeout), where M is approximately 2. The window timeout is greater than N multiplied by a number of packets included in the window of packets divided by the data rate of the communications link between the first device and the second device, here N is an integer greater than 1. N is between 3 and 10.
98 Citations
16 Claims
-
1. A system for efficiently and reliably communicating over a high-speed asymmetric communications link comprising:
-
first means for establishing contact between a first device and a second device over a channel;
second means for delivering data packets over said channel between said first and second devices, each packet having an associated header and payload, wherein each packet traveling from said first device to said second device is associated with a window of packets;
third means for employing said second means to transmit a message with respect to plural error conditions with respect to a number of said data packets, wherein said third means includes means for timing transmissions of said message in accordance with each window of packets and providing said message from said second device to said first device via said second means in response thereto and further includes means for sending acknowledgement messages from said second device to said first device specifying packets associated with said window of packets not received by said second device; and
fourth means for selectively disabling said second means when said first device does not receive one of said acknowledgement messages after a predetermined time interval;
wherein said predetermined time interval is a function of a window timeout variable, wherein said window timeout is greater than N multiplied by a number of packets included in said window of packets divided by the data rate of the communications link between said first device and said second device, wherein N is greater than or equal to 3 and less than or equal to 10, and wherein each of said packets includes a header that includes a file parameter and a sequence parameter that specify a file associated with each of said packets and a position in said file of each of said packets, respectively. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. An efficient and reliable communications protocol comprising the steps of:
-
creating a listening endpoint for a Transmission Control Protocol/Internet Protocol (TCP/IP) socket via a first communications device;
connecting a second communications device to said TCP/IP socket of said first communications device;
sending an initialization message from the second communications device to the first communications device, the initialization message including an Internet Protocol (IP) address, a port number, an acknowledgement window size, and a window time out associated with said second device;
delivering a return initialization message to the second device from the first device upon receipt of the initialization message by the first device, said return initialization message indicating a maximum size of data packets to be sent, and a sequence number associated with a first data packet to be sent;
returning an acknowledgement message from the second device to the first device acknowledging missing packets associated with previously sent data packets;
transferring a data packet from said first device to said second device;
checking if the total number of bytes received associated with a current window has reached a window size value or the time elapsed since the last step of returning acknowledgement is greater than a first timeout value, and if so, returning to said step of transferring, otherwise returning false;
determining, when said step of checking returns false, if said first device has received an acknowledgement from said second device for a period of time greater than a second timeout and, if so, returning to said step of returning an acknowledgement, otherwise, returning false;
pausing sending data packets from said first device to said second device when said step of determining returns false; and
passing control back to said step of acknowledging upon receipt of an acknowledgement message by said first device from said second device.
-
Specification