TCP selective acknowledgements for communicating delivered and missed data packets
First Claim
Patent Images
1. A method for determining between a sender and receiver a data packet from the sender to retransmit to the receiver, the method comprising:
- transmitting, by a sender, a plurality of data packets to a receiver, the sender identifying each of the plurality of data packets by a sequence number and a transmit number different from the sequence number, the transmit number identifying an instance of transmission of the data packet;
maintaining, by a receiver, a sorted list comprising an index of consecutive sets of continuous ranges of transmit numbers identifying data packets received by the receiver;
generating, by the receiver, a selection acknowledgment (SACK) packet, responsive to a landing data packet and identifying a plurality of sets of continuous ranges of transmit numbers of data packets that had been received prior to receipt of the landing data packet, at least two but less than the plurality of the sets of continuous ranges identified in the SACK packet being consecutive in the sorted list to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, and a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet;
identifying, by the sender, from the SACK packet received from the receiver, the transmit numbers of data packets not received by the receiver; and
transmitting, by the sender, the identified data packets.
9 Assignments
0 Petitions
Accused Products
Abstract
One or more flow control modules, implemented on various types of network topologies, provide a number of functionalities for controlling the flow of IP packets (such as TCP/IP packets) over a network connection. The flow control modules may be implemented within a sender and/or receiver or may be deployed into a network as a separate device without requiring significant additional resources.
-
Citations
30 Claims
-
1. A method for determining between a sender and receiver a data packet from the sender to retransmit to the receiver, the method comprising:
-
transmitting, by a sender, a plurality of data packets to a receiver, the sender identifying each of the plurality of data packets by a sequence number and a transmit number different from the sequence number, the transmit number identifying an instance of transmission of the data packet; maintaining, by a receiver, a sorted list comprising an index of consecutive sets of continuous ranges of transmit numbers identifying data packets received by the receiver; generating, by the receiver, a selection acknowledgment (SACK) packet, responsive to a landing data packet and identifying a plurality of sets of continuous ranges of transmit numbers of data packets that had been received prior to receipt of the landing data packet, at least two but less than the plurality of the sets of continuous ranges identified in the SACK packet being consecutive in the sorted list to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, and a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet; identifying, by the sender, from the SACK packet received from the receiver, the transmit numbers of data packets not received by the receiver; and transmitting, by the sender, the identified data packets. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for retransmitting packets based on acknowledgements received from a receiver over a network, the method comprising:
-
receiving, by a sender, a selection acknowledgement (SACK) packet from a receiver, the SACK packet identifying a plurality of sets of continuous ranges of transmit numbers of data packets that had been received by a receiver prior to receipt of a landing data packet, at least two but less than the plurality of the sets of continuous ranges identified in the SACK packet being consecutive in a sorted list maintained by the receiver to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, each of the transmit numbers identifying an instance of transmission of a data packet and different from a sequence number of the data packet, and a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet; identifying from the SACK packet transmit numbers of the one or more data packets between the consecutive ranges not received by the receiver; and retransmitting the identified data packets. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A method for identifying by a receiver a transmission of a data packet from a sender and not received by the receiver, the method comprising:
-
receiving, by a receiver, a plurality of data packets, each of the plurality of data packets identified by a transmit number, the transmit number identifying an instance of transmission, by a sender, of a data packet and different from a sequence number of the data packet; maintaining a sorted list comprising an index of consecutive sets of continuous ranges of transmit numbers identifying data packets received by the receiver; generating a selection acknowledgment (SACK) packet, responsive to a landing data packet, the SACK packet identifying a plurality of sets of continuous ranges of transmit numbers of data packets that bad been received prior to receipt of the landing data packet, at least two but less than the plurality of the sets of continuous ranges identified in the SACK packet being consecutive in the sorted list to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, and a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet; and transmitting the SACK packet to the sender.
-
-
17. A computer readable medium for communicating data packets from a sender to a. receiver over a network the computer readable medium comprising computer program code for performing the operations:
-
transmitting, by a sender, a plurality of data packets to a receiver, the sender identifying each of the plurality of data packets by a transmit number, the transmit number identifying an instance of transmission of a data packet and different from a sequence number of the data packet; maintaining, by a receiver, a sorted list comprising an index of consecutive sets of continuous ranges of transmit numbers identifying data packets received by the receiver; generating, by the receiver, a selection acknowledgment (SACK) packet, responsive to a landing data packet and identifying a plurality of sets of continuous ranges of transmit numbers of data packets that had been received prior to receipt of the landing data packet, at least two but less than the plurality of the ranges being consecutive in the sorted list to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, and a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet; identifying, by the sender, from the SACK packet received from the receiver, the transmit numbers of data packets not received by the receiver; and transmitting, by the sender, the identified data packets. - View Dependent Claims (18, 19, 20, 21)
-
-
22. A computer readable medium for retransmitting packets based on acknowledgements received from a receiver over a network, the computer readable medium comprising a computer program code for performing the operations:
-
receiving, by a sender, a selection acknowledgement (SACK) packet from a receiver, the SACK packet identifying a plurality of sets of continuous ranges of transmit numbers of data packets that had been received by a receiver prior to receipt of a landing data, at least two but less than the plurality of the sets of continuous ranges identified in the SACK packet being consecutive in a sorted list maintained by the receiver to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, each of the transmit numbers identifying an instance of transmission of a data packet and different from a sequence number of the data packet, and a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet; identifying from the SACK packet the transmit numbers of the one or more data packets between the consecutive ranges not received by the receiver; and retransmitting the identified data packets. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A network communications system comprising:
-
a receiver-side flow module configured to generate a SACK packet responsive to receiving a landing data packet at a receiver, the SACK packet including a plurality of sets of continuous ranges of transmit numbers of data packets received by the receiver, wherein; at least two of the plurality of sets of continuous ranges are consecutive, a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet, a data packet with a transmit number between the at least two consecutive sets of continuous ranges of transmit numbers of data packets is not received by the receiver, and each of the transmit numbers identify an instance of transmission of a data packet and are different from a sequence number of the data packet; and a sender-side flow module configured to receive SACK packets from the receiver side flow module and, responsive to receiving a SACK packet, identify that the data packet with the transmit number between the two consecutive sets of continuous ranges of transmit numbers of data packets in the SACK packet had not been received by the receiver when the SACK packet was generated; wherein a sender is coupled to the sender-side flow module for retransmitting data packets from the sender to the receiver based on the inferred lost packets. - View Dependent Claims (28, 29)
-
-
30. A method for determining between a sender and receiver a data packet from the sender to retransmit to the receiver, the method comprising:
-
transmitting, by a sender, a plurality of data packets to a receiver, the sender identifying each of the plurality of data packets by a transmit number, the transmit number identifying an instance of transmission of the data packet and different from a sequence number of the data packet; maintaining, by a receiver, a sorted list comprising an index of consecutive sets of continuous ranges of transmit numbers identifying data packets received by the receiver; generating, by the receiver, a selection acknowledgment (SACK) packet, responsive to a landing data packet and identifying a plurality of ranges of transmit numbers of data packets that had been received prior to receipt of the landing data packet, at least two but less than the plurality of the sets of continuous ranges identified in the SACK packet being consecutive in the sorted list to identify transmit numbers of one or more data packets between the consecutive ranges have not been received, a continuous range that includes the landing data packet is not consecutive with the at least two of the plurality of sets of continuous ranges identified in the SACK packet, and the receiver advancing a left-off pointer past a transmit number in the sorted list to a previous point in the sorted list; transmitting, by the receiver, the SACK packet, the SACK packet identifying the transmit number in the plurality of sets of continuous ranges of transmit numbers, the SACK packet not received by the sender; generating, by the receiver, a second SACK packet identifying a second plurality of sets of continuous ranges of transmit numbers, the second SACK packet identifying the transmit number in the second plurality of sets of continuous ranges of transmit numbers based on the left-off pointer identifying one or more sets of continuous ranges of transmit numbers previously transmitted in the SACK packet; identifying, by the sender, from the second SACK packet received from the receiver, that a data packet with a transmit number between two consecutive sets of continuous ranges of transmit numbers included in the second SACK packet was not received by the receiver; and transmitting, by the sender, the data packet identified by the transmit number.
-
Specification