Patent ID: 7953114

Claim:
A method of accelerating data communications over an unreliable network carrying data packets from a first endpoint to a second endpoint, comprising: establishing an encoded channel between first and second encoding components for a communication session between said two endpoints by: detecting, at the first encoding component, a first one of said data packets carried from said first endpoint and destined to said second endpoint, adding a mark to said first detected data packet destined to the other endpoint to indicate that the first endpoint is enabled to segment and encode said data packets according to a protocol known to both encoding components, wherein the mark is selected from a plurality of available marks, forwarding the marked data packet to the other endpoint, determining whether a reply to the marked data packet is received from the second encoding component within a preselected time period and, if no reply is received within said time period, detecting, at the first encoding component, a second one of said data packets carried from said first endpoint and destined to said second endpoint, adding a different mark selected from said plurality of available marks to said second detected data packet, and forwarding said differently marked data packet to said other endpoint, and exchanging control messages to establish a communication channel between the encoding components in response to the receipt of a reply from the second encoding component within said time period; intercepting a data packet related to the communication channel at one of the first and second encoding components; segmenting and packaging the data packet to provide encoded data segments for transmission to the other of the first and second encoding components; transmitting the encoded data segments and at least one extra encoded segment to the other of the first and second encoding components over the encoded channel; decoding and reassembling the data packet at the other of the first and second encoding components based on the received encoded data segments to compensate for the loss of said segments that may occur in the unreliable network; and transmitting the reassembled data packet from the other of the first and second encoding components to its respective endpoint.