Patent ID: 11863317
Assignee: BITRIPPLE, INC.
Field: Digital communication (Electrical engineering)
Classification: CPC H | IPC H

Claim 0:
1. A method of transmitting data of an input data source from a sender to a receiver with reliability of transmission, wherein the reliability of transmission is indicated by a confirmation from the receiver to the sender that the data is considered received, the method comprising:
obtaining the data of the input data source, to be sent from a source device coupled to the sender to a destination device, wherein the destination device is a device configured to receive data from the receiver in a presumed reliable form;
organizing the data of the input data source into a sequence of one or more data blocks, each block having a block identifier associated therewith;
encoding a data block of the sequence of one or more data blocks into encoded data as a sequence of packets for the data block using an erasure code;
organizing data of a packet of the sequence of packets into a packet header and a packet payload;
including, in the packet header of the packet, representations of at least (1) a block size, (2) a global packet sequence number that uniquely identifies the packet relative to other packets of the data, (3) the block identifier of the data block, and (4) an encoding identifier that identifies the encoded data carried in the packet payload generated from the block;
including, in the packet payload of the packet, the encoded data identified by the block identifier of the data block and the encoding identifier included in the packet header;
determining a sendable number of packets for the data block representing a target number of packets to send for the data block;
comparing a total number of sent packets, sent from the sequence of packets for the data block, and the sendable number; and
based on whether the total number of sent packets is less than the sendable number, sending the packet to the receiver,
wherein determining the sendable number comprises:
(a) determining a function, E( ), that maps an integer number of packets sent from the sequence of packets for the data block to an estimate of the number of packets expected to arrive at the receiver from the sequence of packets for the data block, wherein if X is equal to the integer number of packets sent from the sequence of packets for the data block, then E(X) is equal to the estimate of the number of the sent packets expected to arrive at the receiver, with E(X) determined for at least one value of X;
(b) determining a target value for a number of packets to arrive at the receiver equal to a sum of the block size and a predetermined additional number; and
(c) setting the sendable number to be a value, N, with N being selected such that E(N) is approximately equal to the target value.