Methods and systems for reliable data transmission using selective retransmission
First Claim
Patent Images
1. A method of sending data packets between a first node and a second node of a computer system, comprising steps of:
- sending data packets numbered with consecutive source sequence numbers from the first node to the second node;
retaining a copy of each sent data packet in a retransmission job queue of the first node;
receiving the data packets in the second node;
tracking the source sequence numbers of the data packets received in the second node;
including a current highest tracked source sequence number in a data packet sent from the second node to the first node for which all data packets sent from the first node that are numbered with source sequence numbers no larger than the highest tracked source sequence number have been received in the second node; and
sending, from the second node to the first node, a packet reception bitmap message that indicates a reception status at the second node of a consecutive range of data packets that starts with a data packet numbered with a lowest source sequence number that was not received at the second node and that ends with a data packet with the highest source sequence number that was received at the second node.
6 Assignments
0 Petitions
Accused Products
Abstract
A reliable method for inter-computer packet transport in multi-process and multi-computer environments includes acknowledgments of received packets. To enhance the reliability and fast recovery of lost packets, a bit-mapped message is used for selective acknowledgments by which individual messages may be selected for retransmission. Further functionalities cover the cases where packets may have been received out-of-order, or an acknowledgment was lost.
-
Citations
38 Claims
-
1. A method of sending data packets between a first node and a second node of a computer system, comprising steps of:
-
sending data packets numbered with consecutive source sequence numbers from the first node to the second node; retaining a copy of each sent data packet in a retransmission job queue of the first node; receiving the data packets in the second node; tracking the source sequence numbers of the data packets received in the second node; including a current highest tracked source sequence number in a data packet sent from the second node to the first node for which all data packets sent from the first node that are numbered with source sequence numbers no larger than the highest tracked source sequence number have been received in the second node; and sending, from the second node to the first node, a packet reception bitmap message that indicates a reception status at the second node of a consecutive range of data packets that starts with a data packet numbered with a lowest source sequence number that was not received at the second node and that ends with a data packet with the highest source sequence number that was received at the second node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer readable medium having data stored thereon representing sequences of instructions which, when executed by a computer system having a first and a second node, causes the computer system to send data packets between the first and second nodes by performing the steps of:
-
sending data packets numbered with consecutive source sequence numbers from the first node to the second node; retaining a copy of each sent data packet in a retransmission job queue of the first node; receiving the data packets in the second node; tracking the source sequence numbers of the data packets received in the second node; including a current highest tracked source sequence number in a data packet sent from the second node to the first node for which all data packets sent from the first node that are numbered with source sequence numbers no larger than the highest tracked source sequence number have been received in the second node, and sending, from the second node to the first node, a packet reception bitmap message that indicates a reception status at the second node of a consecutive range of data packets that starts with a data packet numbered with a lowest source sequence number that was not received at the second node and that ends with a data packet with the highest source sequence number that was received at the second node. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A method of transmitting data packets between a first node and a second node of a computer system, comprising steps of:
-
associating a source sequence number with each data packet transmitted from one of the first and the second nodes and storing the associated source sequence number, the stored source sequence number being incremented each time one of the first and second nodes transmits a new data packet to the other one of the first and second nodes; storing a destination sequence number at one of the first and the second nodes, each destination sequence number being a copy of a last consecutively numbered source sequence number associated with a data packet received by one of the first and second nodes from the other one of the first and second nodes; maintaining a local copy of each data packet transmitted from one of the first and the second nodes to the other one of the first and second nodes; receiving destination sequence numbers included in data packets sent from one of the first and the second nodes to the other one of the first and second nodes, the received destination sequence numbers being indicative of safe receipt of at least one transmitted data packet; generating and transmitting a packet reception bitmap message from one of the first and the second nodes to the other one of the first and second nodes, the packet reception bitmap message identifying a plurality of data packets which have not been timely received; and upon receipt by one of the first and second nodes of a packet reception bitmap message, re-transmitting the data packets identified in the received packet reception bitmap message as not being safely received using the corresponding local copies of the data packets. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
-
-
31. A computer readable medium having data stored thereon representing sequences of instructions which, when executed by a computer system having a first and a second node, causes the computer system to transmit data packets between the first node and the second node by performing the steps of:
-
associating a source sequence number with each data packet transmitted from one of the first and the second nodes and storing the associated source sequence number, the stored source sequence number being incremented each time one of the first and second nodes transmits a new data packet to the other one of the first and second nodes; storing a destination sequence number at one of the first and the second nodes, each destination sequence number being a copy of a last consecutively numbered source sequence number associated with a data packet received by one of the first and second nodes from the other one of the first and second nodes; maintaining a local copy of each data packet transmitted from one of the first and the second nodes to the other one of the first and second nodes; receiving destination sequence numbers included in data packets sent from one of the first and the second nodes to the other one of the first and second nodes, the received destination sequence numbers being indicative of safe receipt of at least one transmitted data packet; generating and transmitting a packet reception bitmap message from one of the first and the second nodes to the other one of the first and second nodes, the packet reception bitmap message identifying a plurality of data packets which have not been timely received; and upon receipt by one of the first and second nodes of a packet reception bitmap message, re-transmitting the data packets identified in the received packet reception bitmap message as not being safely received using the corresponding local copies of the data packets. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38)
-
Specification