IP Library Granted Patent US 8,782,221
Granted Patent B2
US 8,782,221 · App. 13/541,792 · Granted Jul 15, 2014

Method to allocate buffer for TCP proxy session based on dynamic network conditions

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,782,221
App. No.
13/541,792
Granted
Jul 15, 2014
Kind
B2
Abstract

Allocation of buffers for a TCP proxy session between a client and a server by a service gateway includes: monitoring dynamic network behaviors for server and client side sessions of the TCP proxy session; and allocating capacity for a server side buffer and capacity for a client side buffer in a memory buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and a weighted average of a capacity of the memory buffer. In one approach to the allocation, the gateway determines whether an available capacity of the server or client side buffer is sufficient to store a data packet. If not sufficient, the allocated capacity of the server or client side buffer is increased based on measurements of the dynamic network behaviors and the weighted average, and the available capacity of the server or client side buffer is adjusted accordingly.

Claims (108)

1. A method for allocating buffers for a TCP proxy session between a client and a server by a service gateway comprising a processor, comprising:

monitoring, by the processor, dynamic server side network behaviors for a server side session of the TCP proxy session and dynamic client side network behaviors for a client side session of the TCP proxy session; and

allocating, by the processor, capacity for a server side buffer and capacity for a client side buffer in a memory buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and a weighted average of a capacity of the memory buffer, the allocating comprising:

receiving a server side session data packet from the server, or

receiving a client side session data packet from the client;

determining whether an available capacity of the server side buffer is sufficient to store the server side session data packet, or

determining whether an available capacity of the client side buffer is sufficient to store the client side session data packet;

in response to determining that the available capacity of the server side buffer is not sufficient to store the server side session data packet, increasing the allocated capacity of the server side buffer, or

in response to determining that the available capacity of the client side buffer is not sufficient to store the client side session data packet, increasing the allocated capacity of the client side buffer; and

adjusting the available capacity of the server side buffer according to the increase of the allocated capacity of the server side buffer, or

adjusting the available capacity of the client side buffer according to the increase of the allocated capacity of the client side buffer.

2. The method of claim 1 , wherein the allocating comprises:

calculating a maximum capacity for the server side buffer and a maximum capacity for the client side buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and the weighted average of the capacity of the memory buffer; and

allocating the capacity for the server side buffer and the capacity for the client side buffer based on the maximum capacity for the server side buffer and the maximum capacity for the client side buffer.

3. The method of claim 1 , wherein:

in response to determining that the available capacity of the server side buffer is not sufficient to store the server side session data packet, determining whether the allocated capacity of the server side buffer is smaller than a maximum capacity of the server side buffer, or

in response to determining that the available capacity of the client side buffer is not sufficient to store the client side session data packet, determining whether the allocated capacity of the client side buffer is smaller than a maximum capacity of the client side buffer;

in response to determining that the allocated capacity of the server side buffer is smaller than the maximum capacity of the server side buffer, determining whether there is sufficient memory space within the maximum capacity of the server side buffer to store the server side session data packet, or

in response to determining that the allocated capacity of the client side buffer is smaller than the maximum capacity of the client side buffer, determining whether there is sufficient memory space within the maximum capacity of the client side buffer to store the client side session data packet; and

in response to determining that there is sufficient memory space within the maximum capacity of the server side buffer to store the server side session data packet, allocating the memory space to the server side buffer and adjusting the available capacity of the server side buffer according to the allocated memory space, or

in response to determining that there is sufficient memory space within the maximum capacity of the client side buffer to store the client side session data packet, allocating the memory space to the client side buffer and adjusting the available capacity of the client side buffer according to the allocated memory space.

4. The method of claim 2 , wherein the monitoring and the calculating comprises:

measuring a server side data packet round trip time (RTT) and a client side data packet RTT; and

calculating the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side data packet RTT, and the weighted average of the capacity of the memory buffer.

5. The method of claim 4 , wherein the weighted average of the capacity of the memory buffer is biased toward the server in calculating the maximum capacity for the server side buffer, or

wherein the weighted average of the capacity of the memory buffer is biased toward the client in calculating the maximum capacity for the client side buffer.

6. The method of claim 4 , wherein the monitoring further comprises:

obtaining new measurements for the server side data packet RTT and the client side data packet RTT; and

modifying the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the new server side data packet RTT, the new client side data packet RTT, and the weighted average of the capacity of the memory buffer.

7. The method of claim 4 , wherein the measuring and the calculating comprises:

measuring the server side data packet RTT, the client side data packet RTT, a server side transmission rate, and a client side transmission rate; and

calculating the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side RTT, the server side transmission rate, the client side transmission rate, and the weighted average of the capacity of the memory buffer.

8. The method of claim 7 , wherein the monitoring further comprises:

obtaining new measurements for the server side transmission rate and the client side transmission rate; and

modifying the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side data packet RTT, the new server side transmission rate, the new client side transmission rate, and the weighted average of the capacity of the memory buffer.

9. A computer program product for allocating buffers for a TCP proxy session between a client and a server, the computer program product comprising:

a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code configured to:

monitor dynamic server side network behaviors for a server side session of the TCP proxy session and dynamic client side network behaviors for a client side session of the TCP proxy session; and

allocate capacity for a server side buffer and capacity for a client side buffer in a memory buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and a weighted average of a capacity of the memory buffer, the allocating comprising:

receiving a server side session data packet from the server, or

receiving a client side session data packet from the client;

determining whether an available capacity of the server side buffer is sufficient to store the server side session data packet, or

determining whether an available capacity of the client side buffer is sufficient to store the client side session data packet;

in response to determining that the available capacity of the server side buffer is not sufficient to store the server side session data packet, increase the allocated capacity of the server side buffer, or

in response to determining that the available capacity of the client side buffer is not sufficient to store the client side session data packet, increase the allocated capacity of the client side buffer; and

adjusting the available capacity of the server side buffer according to the increase of the allocated capacity of the server side buffer, or

adjust the available capacity of the client side buffer according to the increase of the allocated capacity of the client side buffer.

10. The computer program product of claim 9 , wherein the computer readable program code configured to allocate is further configured to:

calculate a maximum capacity for the server side buffer and a maximum capacity for the client side buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and the weighted average of the capacity of the memory buffer; and

allocate the capacity for the server side buffer and the capacity for the client side buffer based on the maximum capacity for the server side buffer and the maximum capacity for the client side buffer.

11. The computer program product of claim 9 , wherein the computer readable program code configured to increase is further configured to:

in response to determining that the available capacity of the server side buffer is not sufficient to store the server side session data packet, determine whether the allocated capacity of the server side buffer is smaller than a maximum capacity of the server side buffer, or

in response to determining that the available capacity of the client side buffer is not sufficient to store the client side session data packet, determine whether the allocated capacity of the client side buffer is smaller than a maximum capacity of the client side buffer;

in response to determining that the allocated capacity of the server side buffer is smaller than the maximum capacity of the server side buffer, determine whether there is sufficient memory space within the maximum capacity of the server side buffer to store the server side session data packet, or

in response to determining that the allocated capacity of the client side buffer is smaller than the maximum capacity of the client side buffer, determine whether there is sufficient memory space within the maximum capacity of the client side buffer to store the client side session data packet; and

in response to determining that there is sufficient memory space within the maximum capacity of the server side buffer to store the server side session data packet, allocate the memory space to the server side buffer and adjust the available capacity of the server side buffer according to the allocated memory space, or

in response to determining that there is sufficient memory space within the maximum capacity of the client side buffer to store the client side session data packet, allocate the memory space to the client side buffer and adjust the available capacity of the client side buffer according to the allocated memory space.

12. The computer program product of claim 10 , wherein the computer readable program code configured to monitor and to calculate is further configured to:

measure a server side data packet round trip time (RTT) and a client side data packet RTT; and

calculate the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side data packet RTT, and the weighted average of the capacity of the memory buffer.

13. The computer program product of claim 12 , wherein the weighted average of the capacity of the memory buffer is biased toward the server in calculating the maximum capacity for the server side buffer, or

wherein the weighted average of the capacity of the memory buffer is biased toward the client in calculating the maximum capacity for the client side buffer.

14. The computer program product of claim 12 , wherein the computer readable program code configured to monitor is further configured to:

obtain new measurements for the server side data packet RTT and the client side data packet RTT; and

modify the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the new server side data packet RTT, the new client side data packet RTT, and the weighted average of the capacity of the memory buffer.

15. The computer program product of claim 12 , wherein the computer readable program code configured to measure and to calculate are further configured to:

measure the server side data packet RTT, the client side data packet RTT, a server side transmission rate, and a client side transmission rate; and

calculate the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side RTT, the server side transmission rate, the client side transmission rate, and the weighted average of the capacity of the memory buffer.

16. The computer program product of claim 15 , wherein the computer readable program code configured to monitor is further configured to:

obtain new measurements for the server side transmission rate and the client side transmission rate; and

modify the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side data packet RTT, the new server side transmission rate, the new client side transmission rate, and the weighted average of the capacity of the memory buffer.

17. A system for allocating buffers for a TCP proxy session between a client and a server, comprising:

a processor; and

a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code executed by the processor configured to:

monitor dynamic server side network behaviors for a server side session of the TCP proxy session and dynamic client side network behaviors for a client side session of the TCP proxy session; and

allocate capacity for a server side buffer and capacity for a client side buffer in a memory buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and a weighted average of a capacity of the memory buffer, the allocating comprising:

receive a server side session data packet from the server, or

receive a client side session data packet from the client;

determine whether an available capacity of the server side buffer is sufficient to store the server side session data packet, or

determine whether an available capacity of the client side buffer is sufficient to store the client side session data packet;

in response to determining that the available capacity of the server side buffer is not sufficient to store the server side session data packet, increase the allocated capacity of the server side buffer, or

in response to determining that the available capacity of the client side buffer is not sufficient to store the client side session data packet, increase the allocated capacity of the client side buffer; and

adjust the available capacity of the server side buffer according to the increase of the allocated capacity of the server side buffer, or

adjust the available capacity of the client side buffer according to the increase of the allocated capacity of the client side buffer.

18. The system of claim 17 , wherein the computer readable program code configured to allocate is further configured to:

calculate a maximum capacity for the server side buffer and a maximum capacity for the client side buffer based on the dynamic server side network behaviors, the dynamic client side network behaviors, and the weighted average of the capacity of the memory buffer; and

allocate the capacity for the server side buffer and the capacity for the client side buffer based on the maximum capacity for the server side buffer and the maximum capacity for the client side buffer.

19. The system of claim 17 , wherein the computer readable program code configured to increase is further configured to:

in response to determining that the available capacity of the server side buffer is not sufficient to store the server side session data packet, determine whether the allocated capacity of the server side buffer is smaller than a maximum capacity of the server side buffer, or

in response to determining that the available capacity of the client side buffer is not sufficient to store the client side session data packet, determine whether the allocated capacity of the client side buffer is smaller than a maximum capacity of the client side buffer;

in response to determining that the allocated capacity of the server side buffer is smaller than the maximum capacity of the server side buffer, determine whether there is sufficient memory space within the maximum capacity of the server side buffer to store the server side session data packet, or

in response to determining that the allocated capacity of the client side buffer is smaller than the maximum capacity of the client side buffer, determine whether there is sufficient memory space within the maximum capacity of the client side buffer to store the client side session data packet; and

in response to determining that there is sufficient memory space within the maximum capacity of the server side buffer to store the server side session data packet, allocate the memory space to the server side buffer and adjust the available capacity of the server side buffer according to the allocated memory space, or

in response to determining that there is sufficient memory space within the maximum capacity of the client side buffer to store the client side session data packet, allocate the memory space to the client side buffer and adjust the available capacity of the client side buffer according to the allocated memory space.

20. The system of claim 18 , wherein the computer readable program code configured to monitor and to calculate is further configured to:

measure a server side data packet round trip time (RTT) and a client side data packet RTT; and

calculate the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side data packet RTT, and the weighted average of the capacity of the memory buffer.

21. The system of claim 20 , wherein the weighted average of the capacity of the memory buffer is biased toward the server in calculating the maximum capacity for the server side buffer, or

wherein the weighted average of the capacity of the memory buffer is biased toward the client in calculating the maximum capacity for the client side buffer.

22. The system of claim 20 , wherein the computer readable program code configured to monitor is further configured to:

obtain new measurements for the server side data packet RTT and the client side data packet RTT; and

modify the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the new server side data packet RTT, the new client side data packet RTT, and the weighted average of the capacity of the memory buffer.

23. The system of claim 20 wherein the computer readable program code configured to measure and to calculate is further configured to:

measure the server side data packet RTT, the client side data packet RTT, a server side transmission rate, and a client side transmission rate; and

calculate the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side RTT, the server side transmission rate, the client side transmission rate, and the weighted average of the capacity of the memory buffer.

24. The system of claim 23 , wherein the computer readable program code configured to monitor is further configured to:

obtain new measurements for the server side transmission rate and the client side transmission rate; and

modify the maximum capacity for the server side buffer and the maximum capacity for the client side buffer using the server side data packet RTT, the client side data packet RTT, the new server side transmission rate, the new client side transmission rate, and the weighted average of the capacity of the memory buffer.

Assignments (2)
SECURITY INTEREST Recorded Sep 30, 2013
From: A10 NETWORKS, INC.
To: ROYAL BANK OF CANADA, AS COLLATERAL AGENT
Reel/Frame 031485/0284 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2012
From: HAN, LIANG
To: A10 NETWORKS, INC.
Reel/Frame 028490/0203 →