Early generation of acknowledgements for flow control
First Claim
Patent Images
1. A method for handling by an intermediary device retransmission and acknowledgements of data packets transmitted from a sender to a recipient over a network, the method comprising:
- receiving, by an intermediary device configured as a proxy, data packets from the sender;
transmitting, by the intermediary device, the received data packets downstream to the recipient;
pre-acknowledging, by the intermediary device, a predetermined fraction of the received data packets by sending acknowledgments for the predetermined fraction of the data packets to the sender before receiving acknowledgements from a downstream entity for the data packets; and
controlling, by the intermediary device, an overflow of data packets received from the sender by sending a packet to the sender indicating a nonzero window upon determining buffer space in a flow control module for a predetermined number of packets is available;
wherein controlling the overflow of data packets received from the sender comprises sending, by the intermediary device, a packet to the sender, wherein the packet includes a TCP window having a size that is set proportional to the predetermined fraction of the data packets to allow the sender to transmit a desired number of 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
37 Claims
-
1. A method for handling by an intermediary device retransmission and acknowledgements of data packets transmitted from a sender to a recipient over a network, the method comprising:
-
receiving, by an intermediary device configured as a proxy, data packets from the sender; transmitting, by the intermediary device, the received data packets downstream to the recipient; pre-acknowledging, by the intermediary device, a predetermined fraction of the received data packets by sending acknowledgments for the predetermined fraction of the data packets to the sender before receiving acknowledgements from a downstream entity for the data packets; and controlling, by the intermediary device, an overflow of data packets received from the sender by sending a packet to the sender indicating a nonzero window upon determining buffer space in a flow control module for a predetermined number of packets is available; wherein controlling the overflow of data packets received from the sender comprises sending, by the intermediary device, a packet to the sender, wherein the packet includes a TCP window having a size that is set proportional to the predetermined fraction of the data packets to allow the sender to transmit a desired number of packets. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for pre-acknowledging by an intermediary device data packets sent over a network connection, the method comprising:
-
intercepting, by an intermediary device configured as a proxy, a data packet from a sender to a recipient; transmitting, by the intermediary device, the data packet to the recipient; retaining, by the intermediary device, a copy of the transmitted data packet; sending, by the intermediary device, an acknowledgement to the sender for the data packet; determining, by the intermediary device, whether the transmitted data packet has been delivered to the recipient or has been lost; retransmitting, by the intermediary device, the data packet if the transmitted data packet has been determined lost; discarding, by the intermediary device, the data packet if the transmitted data packet has been determined delivered; determining, by the intermediary device, that a last data packet in a group of data packets transmitted from the sender to the recipient has been intercepted; and controlling, by the intermediary device, a flow of additional packets sent by the sender by avoiding sending an acknowledgement to the sender for the last data packet in the group of data packets intercepted from the sender to the recipient; wherein controlling the flow of additional packets received from the sender comprises sending, by the intermediary device, a packet to the sender, wherein the packet includes a TCP window having a size that is set to allow the sender to transmit a desired number of packets. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. In a flow control module communicatively coupled via a network between a sender and a recipient, a method of terminating the sender'"'"'s connection with the recipient, the method comprising:
-
a step for pre-acknowledging, by a flow control module of an intermediary device, a predetermined fraction of the data packets received by the flow control module from the sender so that the sender operates as if the data packets have been received by the recipient; a step for handling, by the flow control module, retransmission to the recipient of any lost data packets as needed; and a step for controlling, by the flow control module, an overflow of data packets transmitted by the sender by sending a packet to the sender indicating a nonzero window upon determining buffer space in the flow control module for a predetermined number of packets is available; wherein the step for controlling the overflow of data packets received from the sender comprises a step of sending, by the flow control module, a packet to the sender, wherein the packet includes a TCP window having a size that is set proportional to the predetermined fraction of the data packets to allow the sender to transmit a desired number of packets.
-
-
18. A computer program product for handling retransmission and acknowledgements of data packets transmitted from a sender to a recipient over a network, the computer program product comprising a computer-readable storage medium containing computer program code for performing the operations:
-
receiving, by an intermediary device configured as a proxy, data packets from the sender; transmitting, by the intermediary device, the received data packets downstream to the recipient; pre-acknowledging, by the intermediary device, a predetermined fraction of the received data packets by sending acknowledgments for the predetermined fraction of the received data packets to the sender before receiving acknowledgements from a downstream entity for the data packets; and controlling, by the intermediary device, an overflow of data packets received from the sender by sending a packet to the sender indicating a nonzero window upon determining buffer space for a predetermined number of packets is available; wherein controlling the overflow of data packets received from the sender comprises sending, by the intermediary device, a packet to the sender, wherein the packet includes a TCP window having a size that is set proportional to the predetermined fraction of the data packets to allow the sender to transmit a desired number of packets. - View Dependent Claims (19, 20, 21, 22, 23)
-
-
24. A computer program product for pre-acknowledging data packets sent over a network connection, the computer program product comprising a computer-readable storage medium containing computer program code for performing the operations:
-
intercepting, by an intermediary device configured as a proxy, a data packet from a sender to a recipient; transmitting, by the intermediary device, the data packet to the recipient; retaining, by the intermediary device, a copy of the transmitted data packet; sending, by the intermediary device, an acknowledgement to the sender for the data packet; determining, by the intermediary device, whether the transmitted data packet has been delivered to the recipient or has been lost; retransmitting, by the intermediary device, the data packet if the transmitted data packet has been determined lost; discarding, by the intermediary device, the data packet if the transmitted data packet has been determined delivered; determining, by the intermediary device, that a last data packet in a group of data packets transmitted from the sender to the recipient has been intercepted; and controlling, by the intermediary device, an overflow of additional packets sent by the sender by avoiding sending, by the intermediary device, an acknowledgement to the sender for the last data packet in the group of data packets intercepted from the sender to the recipient; wherein controlling the overflow of additional packets received from the sender comprises sending by the intermediary device, a packet to the sender, wherein the packet includes a TCP window having a size that is set to allow the sender to transmit a desired number of packets. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31)
-
-
32. A flow control module for handling retransmission and acknowledgements of data packets transmitted from a sender to a recipient over a network, the flow control module comprising:
-
a network interface for receiving data packets from the sender and transmitting data packets to the recipient; a preack module configured to send an early acknowledgement to the sender for a predetermined fraction of the data packets received therefrom before receiving an acknowledgement from a downstream entity for the data packets; a memory coupled to the network interface, the memory configured to store data packets until acknowledged as received by a downstream entity; and an overflow control module for controlling an overflow of packets received from the sender by sending a packet to the sender indicating a nonzero window upon determining buffer space in the flow control module for a predetermined number of packets is available; wherein the overflow control module controls the flow by sending a packet to the sender, wherein the packet includes a TCP window having a size that is set proportional to the predetermined fraction of the data packets to allow the sender to transmit a desired number of packets. - View Dependent Claims (33, 34, 35, 36, 37)
-
Specification