TCP selection acknowledgements for communicating delivered and missing data packets
First Claim
Patent Images
1. A method for determining a data packet to retransmit, the method comprising:
- maintaining, by a receiver, a sorted list comprising an index of consecutive sets of continuous ranges of sequence numbers identifying data packets received by the receiver; and
generating, by the receiver responsive to receiving a landing data packet, a selective acknowledgment (SACK) packet identifying;
(i) a first continuous range of sequence numbers and a second continuous range of sequence numbers, the second continuous range subsequent to the first continuous range in the sorted list and one or more sequence numbers between the first continuous range and the second continuous range identifying one or more data packets that have not been received, and(ii) a third continuous range of sequence numbers, the third continuous range including a sequence number of the landing data packet, and not subsequent to the first continuous range or second continuous range in the sorted list;
wherein the sorted list includes at least one additional continuous range of sequence numbers of data packets that have been received between the third continuous range and both of the first continuous range and the second continuous range, the at least one additional continuous range not identified in the SACK packet.
8 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.
466 Citations
16 Claims
-
1. A method for determining a data packet to retransmit, the method comprising:
-
maintaining, by a receiver, a sorted list comprising an index of consecutive sets of continuous ranges of sequence numbers identifying data packets received by the receiver; and generating, by the receiver responsive to receiving a landing data packet, a selective acknowledgment (SACK) packet identifying; (i) a first continuous range of sequence numbers and a second continuous range of sequence numbers, the second continuous range subsequent to the first continuous range in the sorted list and one or more sequence numbers between the first continuous range and the second continuous range identifying one or more data packets that have not been received, and (ii) a third continuous range of sequence numbers, the third continuous range including a sequence number of the landing data packet, and not subsequent to the first continuous range or second continuous range in the sorted list; wherein the sorted list includes at least one additional continuous range of sequence numbers of data packets that have been received between the third continuous range and both of the first continuous range and the second continuous range, the at least one additional continuous range not identified in the SACK packet. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for retransmitting packets based on acknowledgements, the method comprising:
-
receiving, by a sender, a selective acknowledgement (SACK) packet from a receiver, the SACK packet identifying; (i) a first continuous range of sequence numbers and a second continuous range of sequence numbers, with one or more sequence numbers between the first continuous range and the second continuous range identifying one or more data packets that have not been received, and (ii) a third continuous range of sequence numbers, the third continuous range including a sequence number of a landing data packet; and identifying as not received by the receiver, from the SACK packet, the one or more data packets with sequence numbers between the first and second continuous ranges; wherein the receiver maintains a sorted list comprising an index of consecutive sets of continuous ranges of sequence numbers identifying data packets received by the receiver, and the sorted list includes at least one additional continuous range of sequence numbers of data packets that have been received between the third continuous range and both of the first continuous range and the second continuous range, the at least one additional continuous range not identified in the SACK packet. - View Dependent Claims (7, 8)
-
-
9. A network communication system comprising:
-
a first device maintaining a receiver-side sorted list comprising an index of continuous ranges of sequence numbers identifying data packets received by a receiver; a receiver-side flow module configured to generate a SACK packet responsive to receiving a landing data packet at the receiver, the SACK packet identifying; (i) a first continuous range of sequence numbers and a second continuous range of sequence numbers, the second continuous range subsequent to the first continuous range in the sorted list and one or more sequence numbers between the first continuous range and the second continuous range identifying one or more data packets that have not been received, and (ii) a third continuous range of sequence numbers, the third continuous range including a sequence number of the landing data packet, and not subsequent to the first continuous range or second continuous range in the sorted list; wherein the sorted list includes at least one additional continuous range of sequence numbers of data packets that have been received between the third continuous range and both of the first continuous range and the second continuous range, the at least one additional continuous range not identified in the SACK packet; and a second device comprising a sender-side flow module configured to receive the SACK packet from the receiver-side flow module and, responsive to receiving a the SACK packet, identify that the one or more data packets with sequence numbers between the first and second continuous ranges had not been received by the receiver when the SACK packet was generated. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A system for retransmitting packets based on acknowledgements, the system comprising
a receiver, configured to maintain a sorted list comprising an index of continuous ranges of sequence numbers identifying data packets received by the receiver, and generate and transmit a selective acknowledgement (SACK) packet, the SACK packet identifying: -
(i) a first continuous range of sequence numbers and a second continuous range of sequence numbers, with one or more sequence numbers between the first continuous range and the second continuous range identifying one or more data packets that have not been received, and (ii) a third continuous range of sequence numbers, the third continuous range including a sequence number of a landing data packet, and not consecutive with the first continuous range or second continuous range; wherein the sorted list includes at least one additional continuous range of sequence numbers of data packets that have been received between the third continuous range and both of the first continuous range and the second continuous range, the at least one additional continuous range not identified in the SACK packet; and a sender, configured to receive the SACK packet and identify as not received by the receiver the one or more data packets with sequence numbers between the first and second continuous ranges. - View Dependent Claims (15, 16)
-
Specification