Method and apparatus for improving the performance of TCP and other network protocols in a communications network using proxy servers
First Claim
1. A method for transmitting a plurality of blocks of data packets in a digital data sequence, comprising:
- receiving at a first transceiver a first block of data packets for transmission through a data communications channel to a second transceiver;
duplicating the first block of data packets and storing the packets to make a stored copy of the first block of data packets;
transmitting the first block of data packets from the first transceiver through the data communications channel to the second transceiver;
determining a first set of coded data packets from the stored copy of the first block of data packets;
transmitting the first set of coded data packets from the first transceiver through the data communications channel to the second transceiver;
receiving an indication of whether the coded data packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct one or more lost data packets;
in the event the coded data packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, reconstructing the one or more lost data packets; and
in the event the coded packets received by the second transceiver are not sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, transmitting a second set of coded data packets.
6 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus that improves the performance of a data network by segmenting the TCP path and implementing a proprietary protocol (DPR™) over a network. Bandwidth is reduced and reliability improved by using an erasure coded algorithm to generate a predicted number of redundant coded packets used to reconstruct lost data packets. Coded packets are generated at the transmission side and the coded packets together with the raw data packets successfully sent over the channel are used to reconstruct lost raw data packets. The DPR™ erasure coding to adjust for packet loss in real time protocol provides a multiplexed tunnel for a multiplicity of TCP sessions from a client to a cloud proxy. DPR™ implements congestion management, flow control, reliability, and link monitoring. Other network protocols (such as UDP) are supported with a reliability protocol based upon network coding that improves the transmission reliability.
31 Citations
20 Claims
-
1. A method for transmitting a plurality of blocks of data packets in a digital data sequence, comprising:
-
receiving at a first transceiver a first block of data packets for transmission through a data communications channel to a second transceiver; duplicating the first block of data packets and storing the packets to make a stored copy of the first block of data packets; transmitting the first block of data packets from the first transceiver through the data communications channel to the second transceiver; determining a first set of coded data packets from the stored copy of the first block of data packets; transmitting the first set of coded data packets from the first transceiver through the data communications channel to the second transceiver; receiving an indication of whether the coded data packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct one or more lost data packets; in the event the coded data packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, reconstructing the one or more lost data packets; and in the event the coded packets received by the second transceiver are not sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, transmitting a second set of coded data packets. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A system for transmitting a plurality of blocks of data packets in a digital data sequence, comprising:
-
a first transceiver configured to; receive a first block of data packets for transmission through a data communications channel to a second transceiver; and transmit the first block of data packets through the data communications channel to the second transceiver; and a processor configured to; duplicate the first block of data packets and storing the packets to make a stored copy of the first block of data packets; determine a first set of coded data packets from the stored copy of the first block of data packets, wherein the first transceiver is configured to transmit the first set of coded data packets through the data communications channel to the second transceiver; receive an indication of whether the coded data packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct one or more lost data packets; in the event the coded packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, reconstruct the one or more lost data packets; and in the event the coded data packets received by the second-transceiver are not sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, transmit a second set of coded data packets.
-
-
20. A computer program product for transmitting a plurality of blocks of data packets in a digital data sequence, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
-
receiving at a first transceiver a first block of data packets for transmission through a data communications channel to a second transceiver; duplicating the first block of data packets and storing the packets to make a stored copy of the first block of data packets; transmitting the first block of data packets from the first transceiver through the data communications channel to the second transceiver; determining a first set of coded data packets from the stored copy of the first block of data packets; transmitting the first set of coded data packets from the first transceiver through the data communications channel to the second transceiver; receiving an indication of whether the coded data packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct one or more lost data packets; in the event the coded packets received by the second transceiver are sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, reconstructing the one or more lost data packets; and in the event the coded data packets received by the second-transceiver are not sufficient together with received data packets of the first block of data packets to reconstruct the one or more lost data packets, transmitting a second set of coded data packets.
-
Specification