IP Library › Granted Patent US 8,452,835
Granted Patent B2
US 8,452,835 · App. 12/645,860 · Granted May 28, 2013

Systems and methods for object rate limiting in multi-core system

Inventors: Murali Raja (Santa Clara, CA); Sandeep Kamath (Santa Clara, CA)
Assignee: Citrix Systems, Inc.
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,452,835
App. No.
12/645,860
Granted
May 28, 2013
Kind
B2
Abstract

The present invention is directed towards systems and methods for managing a rate of request for an object transmitted between a server and one or more clients via a multi-core intermediary device. A first core of the intermediary device can receive a request for an object and assume ownership of the object. The first core can store the object in shared memory along with a rate-related counter for the object and generate a hash to the object and counter. Other cores can obtain the hash from the first core and access the object and counter in shared memory. Policy engines and throttlers in operation on each core can control the rate of access to the stored object.

Claims (33)

1. A method for managing a rate of requests for an object transmitted between a server and one or more clients via a multi-core intermediary device, the method comprising:

(a) receiving, by a first packet processing engine executing on a first core of a plurality of cores of an intermediary device deployed between a plurality of clients and one or more servers, a request from a client for a first object of a plurality of objects from a server, each of the plurality of packet processing engines executing on a corresponding core of the plurality of cores, the intermediary device comprising a rate limit for a first object across the plurality of cores, the rate limit comprising a predetermined number of requests for the first object to traverse the intermediary device within a predetermined time period, the first object comprises a predetermined application layer object;

(b) designating, by the intermediary device, the first core as an owner core of the first object;

(c) establishing, by the first packet processing engine, a location in shared memory accessible by the plurality of cores for storing a rate related counter for the first object, the rate related counter identifying a number of requests for the first object traversing the intermediary device;

(d) receiving, by a second packet processing engine executing on a second core of the plurality of cores, a second request for the first object;

(e) receiving, by the second packet processing engine from the first packet processing engine, the location in shared memory; and

(f) determining, by the second packet processing engine via the rate related counter obtained from the location in shared memory, whether or not the rate limit for the first object has been reached.

2. The method of claim 1 , wherein step (c) further comprises generating, by the first packet processing engine, a hash for the first object.

3. The method of claim 2 , wherein step (e) further comprises receiving, by the second packet processing engine from the first packet processing engine, the hash for the first object.

4. The method of claim 1 , wherein step (d) further comprises determining, by the second packet processing engine, identification of the first core as the owner core by evaluating an expression on the first object and computing the hash value for the first object.

5. The method of claim 4 , further comprising performing by the second packet processing engine a lookup of the first object in a memory cache of the second packet processing engine using the identification of the first core and the hash value.

6. The method of claim 1 , wherein step (d) further comprises storing, by the second packet processing engine, the location in shared memory and a hash value of the first object to a memory cache of the second packet processing engine.

7. The method of claim 1 , further comprising receiving, by a third packet processing engine of the plurality of packet processing engines, a third request for the first object and identifying the location of the shared memory for the first object via cache memory of the third packet processing engine and determining whether or not the rate limit of the first object has been reached by the rate related counter in shared memory.

8. The method of claim 1 , wherein step (f) further comprises storing, by the second packet processing engine, an update to the rate related counter at the location of shared memory.

9. The method of claim 1 , wherein step (e) further comprises determining, by the second packet processing engine, that a memory cache of the second processing engine does not store information on the first object and transmitting, by the second packet processing engine, a request for information on the first object from the second packet processing engine.

10. The method of claim 9 , further comprising determining, by the second packet processing engine, identification of the first core as the owner core by evaluating an expression on the first object.

11. A system for managing a rate of requests for an object transmitted between a server and one or more clients via a multi-core intermediary device, the system comprising:

an intermediary device deployed between a plurality of clients and one or more servers, the intermediary device comprising a rate limit for a first object across the plurality of cores, the rate limit comprising a predetermined number of requests for the first object to traverse the intermediary device within a predetermined time period, the first object comprises a predetermined application layer object;

a first packet processing engine executing on a first core of a plurality of cores of the intermediary device, each of the plurality of packet processing engines executing on a corresponding core of the plurality of cores, the first packet processing engine receiving a request from a client for a first object of a plurality of objects from a server; and

a second packet processing engine executing on a second core of the plurality of cores of the intermediary device, the second packet processing engine receiving a second request for the first object, wherein

the intermediary device designates the first core as an owner core of the first object;

the first packet processing engine establishes a location in shared memory accessible by the plurality of cores for storing a rate related counter for the first object, the rate related counter identifying a number of requests for the first object traversing the intermediary device;

the second packet processing engine receives from the first packet processing engine the location in shared memory; and

the second packet processing engine determines via the rate related counter obtained from the location in shared memory, whether or not the rate limit for the first object has been reached.

12. The system of claim 11 , wherein the first packet processing engine generates a hash for the first object.

13. The system of claim 12 , wherein the second packet processing engine receives from the first packet processing engine the hash for the first object.

14. The system of claim 11 , wherein the second packet processing engine determines identification of the first core as the owner core by evaluating an expression on the first object and computing the hash value for the first object.

15. The system of claim 14 , further wherein the second packet processing engine performs a lookup of the first object in a memory cache of the second packet processing engine using the identification of the first core and the hash value.

16. The system of claim 11 , wherein the second packet processing engine further stores the location in shared memory and a hash value of the first object to a memory cache of the second packet processing engine.

17. The system of claim 11 , further comprising a third packet processing engine of the plurality of packet processing engines receiving a third request for the first object and identifying the location of the shared memory for the first object via cache memory of the third packet processing engine and determining whether or not the rate limit of the first object has been reached by the rate related counter in shared memory.

18. The system of claim 11 , wherein the second packet processing engine further stores an update to the rate related counter at the location of shared memory.

19. The system of claim 11 , wherein the second packet processing engine further determines that a memory cache of the second processing engine does not store information on the first object and transmits a request for information on the first object from the second packet processing engine.

20. The system of claim 19 , further wherein the second packet processing engine determines identification of the first core as the owner core by evaluating an expression on the first object.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2010
From: RAJA, MURALI; KAMATH, SANDEEP
To: CITRIX SYSTEMS, INC.
Reel/Frame 024246/0364 →
Continuity (1)
Related Publication 20110153724A1 · Jun 23, 2011