IP Library › Granted Patent US 9,817,789
Granted Patent B2
US 9,817,789 · App. 13/861,731 · Granted Nov 14, 2017

Systems and methods for caching SNMP data in multi-core and cluster systems

Inventor: Nishant Kumar Jain (Karnataka, IN)
Assignee: Citrix & Systems, Inc.
G06F15/167H04L41/0206H04L41/0213H04L41/046H04L67/2842H04L67/2852H04L41/0233
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 9,817,789
App. No.
13/861,731
Granted
Nov 14, 2017
Kind
B2
Abstract

The SNMP cache of the present solution supports multi-core/multi-node environment by recalculating the SNMP ordering of the entities in the response from multiple cores/nodes at insertion time. The most significant gain is achieved by prefetching or augmenting the cache, wherein while requesting an entity and its stat information, next few entities in SNMP order are requested from the owner processes. SNMP Management systems extensively utilize repeated GETNEXT (such as via a SNMP WALK) and few next responses may be served from the cache directly. Further performance improvements are obtained by introducing another level of cache on top of the existing cache. This auxiliary cache ensures a high hit ratio for repeated SNMP GETNEXT request (SNMP WALK operation) by caching last accessed entity within the main cache. This auxiliary cache also aids in insertion in the larger main cache by maintaining pointers to last accessed entity before the main cache miss. Cache implements other features like new stat inclusion/updating of the already cached entity.

Claims (29)

1. A method for providing a Simple Network Management Protocol (SNMP) cache, the method comprising:

(a) establishing, by a device comprising a processor, coupled to memory, and intermediary to a plurality of clients and one or more servers, a Simple Network Management Protocol (SNMP) cache, the SNMP cache storing managed objects representing entities in a predetermined lexicographic order of SNMP object identifiers for one or more entities and corresponding next entities;

(b) transmitting, by a cache manager of the SNMP cache responsive to receiving a SNMP GET request for a managed object identified by an object identifier, one or more SNMP GETNEXT requests to one or more managed information bases to get one or more managed objects identified by one or more object identifiers next in lexicographical order with respect to the object identifier, wherein a value of a managed object for an entity is one of a scalar data type or a tabular data type;

(c) storing, by the cache manager, the one or more managed objects in locations arranged in order according to their predetermined lexicographic order of a sequence of SNMP object identifiers for at least an entity and a next entity within the SNMP object identifier hierarchy in the SNMP cache;

(d) receiving, by the cache manager a SNMP GETNEXT request from a client of the plurality of clients to the one or more servers; and

(e) serving, by the cache manager, to the client a managed object corresponding to a next entity in lexicographical order within the SNMP object identifier hierarchy in the SNMP cache instead of from the server.

2. The method of claim 1 , wherein step (a) further establishing the SNMP cache by the device intermediary to the plurality of clients and the plurality of servers, the device responding to SNMP GETNEXT requests with managed objects stored in the SNMP cache.

3. The method of claim 1 , wherein step (a) further comprises ordering, by the cache manager, the managed objects in one of memory or storage locations of the cache by the predetermined lexicographic order based on their corresponding object identifiers.

4. The method of claim 1 , wherein step (b) further comprises transmitting, by the cache manager, the one or more SNMP GETNEXT requests to prefetch a predetermined set of managed objects.

5. The method of claim 1 , further comprising receiving, by the device, the SNMP GETNEXT request subsequent to a SNMP GET request.

6. The method of claim 5 , further comprising determining, by the device responsive to the SNMP GETNEXT request, that the managed object corresponding to the next entity in lexicographical order is stored in a memory location of the SNMP cache that is one of adjacent to or subsequent to a second memory location of the managed object stored for the SNMP GET REQUEST and serving the managed object from the SNMP cache as a response to the SNMP GETNEXT request.

7. The method of claim 1 , wherein step (b) further comprises receiving, by the cache manager, a SNMP GET request for a managed object identified by an object identifier.

8. The method of claim 7 , further comprising transmitting, by the cache manager responsive to the SNMP GET request, the one or more SNMP GETNEXT requests to the one or more managed information bases for the one or more managed objects next in the lexicographical order.

9. The method of claim 1 , further comprising establishing, by the device, an auxiliary cache in association with the SNMP cache, the auxiliary cache storing one or more pointers to managed objects stored in the SNMP cache.

10. The method of claim 9 , further comprising maintaining in the auxiliary cache one or more pointers to the managed objects that were last accessed in the SNMP cache over a predetermined time period.

11. A system for providing a Simple Network Management Protocol (SNMP) cache, the system comprising:

a device comprising a processor, coupled to memory and, intermediary to a plurality of clients and one or more servers, configured to establish a Simple Network Management Protocol (SNMP) cache, the SNMP cache storing managed objects representing entities in a predetermined lexicographic order of SNMP object identifiers for one or more entities and corresponding next entities;

a cache manager of the SNMP cache configured to transmit, responsive to receiving a SNMP GET request for a managed object identified by an object identifier, one or more SNMP GETNEXT requests to one or more managed information bases to get one or more managed objects identified by one or more object identifiers next in lexicographical order with respect to the object identifier, wherein a value of a managed object for an entity is one of a scalar data type or a tabular data type; and

wherein the cache manager is configured to store the one or more managed objects in locations arranged in order according to_their predetermined lexicographic order of a sequence of SNMP object identifiers for at least an entity and a next entity within the SNMP object identifier hierarchy in the SNMP cache;

wherein the cache manager is configured to receive a SNMP GETNEXT request from a client of the plurality of clients to the one or more servers and serve to the client a managed object corresponding to a next entity in lexicographical order within the SNMP object identifier hierarchy in the SNMP cache instead of from the server.

12. The system of claim 11 , wherein the device is configured to be deployed intermediary to the plurality of clients and the plurality of servers, the device responding to SNMP GETNEXT requests with managed objects stored in the SNMP cache.

13. The system of claim 11 , wherein the cache manager is configured to order the managed objects in one of memory or storage locations of the cache by the predetermined lexicographic order based on their corresponding object identifiers.

14. The system of claim 11 , wherein the cache manager is configured to transmit the one or more SNMP GETNEXT requests to prefetch a predetermined set of managed objects.

15. The system of claim 11 , wherein the device is further configured to receive the SNMP GETNEXT request subsequent to a SNMP GET request.

16. The system of claim 15 , wherein the device is further configured, responsive to the SNMP GETNEXT request, to determine that the managed object corresponding to the next entity in lexicographical order is stored in a memory location of the SNMP cache that is one of adjacent to or subsequent to a second memory location of the managed object stored for the SNMP GET REQUEST and serve the managed object from the SNMP cache as a response to the SNMP GETNEXT request.

17. The system of claim 11 , wherein the cache manager is configured to receive a SNMP GET request for a managed object identified by an object identifier.

18. The system of claim 17 , wherein the cache manager is configured to, responsive to the SNMP GET request, to transmit the one or more SNMP GETNEXT requests to the one or more managed information bases for the one or more managed objects next in the lexicographical order.

19. The system of claim 11 , wherein the device is configured to establish an auxiliary cache in association with the SNMP cache, the auxiliary cache storing one or more pointers to managed objects stored in the SNMP cache.

20. The system of claim 19 , wherein the auxiliary cache is further configured to maintain one or more pointers to the managed objects that were last accessed in the SNMP cache over a predetermined time period.

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 Sep 3, 2013
From: JAIN, NISHANT KUMAR
To: CITRIX SYSTEMS, INC.
Reel/Frame 031127/0259 →
Continuity (2)
Provisional Application 61624126 · Apr 13, 2012
Related Publication 20130275543A1 · Oct 17, 2013