TCP SELECTION ACKNOWLEDGEMENTS FOR COMMUNICATING DELIVERED AND MISSING 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:
- 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 the sequence number of the landing data packet, and not subsequent to the first continuous range or second continuous range in the sorted list.
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
20 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:
-
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 the sequence number of the landing data packet, and not subsequent to the first continuous range or second continuous range in the sorted list. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for retransmitting packets based on acknowledgements received from a receiver over a network, 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 the sequence number of the landing data packet, and not consecutive with the first continuous range or second continuous range; 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. - View Dependent Claims (7, 8)
-
-
9. A method for retransmitting packets based on acknowledgements received from a receiver over a network, the method comprising:
-
transmitting, by a flow control module configured on a device, a first data packet from a sender to a remote system, the transmitted first data packet including a transport layer sequence number and a first internet layer internet protocol identifier (IP ID) field, the first IP ID field comprising a first unique value; transmitting, by the flow control module, one or more additional data packets from the sender to the remote system; retransmitting, by the flow control module, the first data packet to the remote system after transmitting the one or more additional data packets, the retransmitted first data packet including the transport layer sequence number and a second IP ID field, the second IP ID field comprising a second unique value different than the first unique value; receiving, by the flow control module, a selective acknowledgment (SACK) packet sent by the remote system generated responsive to receipt of the retransmitted first data packet, the SACK packet; including the transport layer sequence number and a third IP ID field, the third IP ID field comprising a third value set to a function of the second unique value to identify the retransmitted first data packet as the packet triggering the SACK packet, and 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 the sequence number of the landing data packet, and not consecutive with the first continuous range or second continuous range; and presuming lost, by the flow control module, the one or more additional data packets sent prior to retransmitting the data packet, responsive to;
(i) determining that the received acknowledgement packet acknowledges receipt by the remote system of the retransmission of the first data packet, and (ii) the one or more additional data packets having sequence numbers between the first continuous range and second continuous range. - View Dependent Claims (10)
-
-
11. A network communication systems comprising:
-
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 the sequence number of the landing data packet, and not subsequent to the first continuous range or second continuous range in the sorted list; 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 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 (12, 13, 14, 15)
-
-
16. A system for retransmitting packets based on acknowledgements received from a receiver over a network, the system comprising
a receiver, configured to 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 the sequence number of the landing data packet, and not consecutive with the first continuous range or second continuous range; 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 (17, 18)
-
-
19. A system for retransmitting packets based on acknowledgements received from a receiver over a network, the system comprising:
-
a network interface on a device configured to; transmit a first data packet from a sender to a remote system, the transmitted first data packet including a transport layer sequence number and a first internet layer internet protocol identifier (IP ID) field, the first IP ID field comprising a first unique value; transmit one or more additional data packets from the sender to the remote system; retransmit the first data packet to the remote system after transmitting the one or more additional data packets, the retransmitted first data packet including the transport layer sequence number and a second IP ID field, the second IP ID field comprising a second unique value different than the first unique value; receive a selective acknowledgment (SACK) packet sent by the remote system generated responsive to receipt of the retransmitted first data packet, the SACK packet; including the transport layer sequence number and a third IP ID field, the third IP ID field comprising a third value set to a function of the second unique value to identify the retransmitted first data packet as the packet triggering the SACK packet, and 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 the sequence number of the landing data packet, and not consecutive with the first continuous range or second continuous range; and a flow control module on the device configured to; presume lost the one or more additional data packets sent prior to retransmitting the data packet, responsive to;
(i) determining that the received acknowledgement packet acknowledges receipt by the remote system of the retransmission of the first data packet, and (ii) the one or more additional data packets having sequence numbers between the first continuous range and second continuous range. - View Dependent Claims (20)
-
Specification