Patent ID: 7319701

Claim:
A method for reducing data loss in event of packet loss in a modem relay connection over a packet network including a transmitting modem and a transmitting gateway, a receiving modem and a receiving gateway, the method comprising: providing a packet format including a header portion, a sequence number and a data portion; dividing said data portion into a plurality of segments; designating one of said segments as a new data segment; providing a plurality of sequential blocks of modem data from said transmitting modem to said transmitting gateway; retaining a predetermined number of said plurality of sequential blocks of modem data at said transmitting gateway, by dropping a first oldest block and retaining a most recent block; providing said most recent block of data in said designated new data segment of said data portion of said packet; providing a plurality of remaining retained blocks of data in a remainder of said said plurality of segments; wherein: each time said transmitting gateway receives a new block of data from said transmitting modem, an additional oldest block is dropped from said remaining retained blocks of data, creating a new remaining retained blocks of data; said new block of data is encoded in a next data packet as a new data block; and said new remaining retained blocks are encoded into said data packet as a plurality of redundant data blocks; wherein the plurality of redundant data blocks are added by a data redundancy with a repetition count k, and wherein the redundancy is performed as data encoding into each packet according to the following formulas, where x is a current packet sequence number, N represents a plurality of data bits corresponding to each of said data packet as said data packet is, and each iteration encodes said plurality of data bits for a current packet x and a plurality of previous packets into a data length of the current packet, an addition sign signifying grouping the data bits together in a block within the packet for each iteration: [x−j]N+[x−i]N where i=(0 to (k−1)) and j=(1 to k) and each of the variables i, j increase by 1 in each iteration up to k levels of iterations that are performed for each of said packets; transmitting said packets from said transmitting gateway to said receiving gateway.