IP Library Granted Patent US 9,602,465
Granted Patent B2
US 9,602,465 · App. 14/481,215 · Granted Mar 21, 2017

Systems and methods for carrier grade NAT optimization

Inventors: Nishant Kumar Jain (Bangalore, IN); Sameer Bagepalli Ramesh (Bangalore, IN)
Assignee: Citrix Systems, Inc.
H04L61/2567H04L61/2532H04L67/141H04L61/255
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,602,465
App. No.
14/481,215
Granted
Mar 21, 2017
Kind
B2
Abstract

Methods and systems for maintaining NAT session management on a multi-core device are disclosed. A first core of the multi-core device that is intermediary between a plurality of clients and a plurality of servers may insert a NAT session into a local outbound session table stored in a memory of the first core. The first core may determine that a second core of the multi-core device will serve as a receiving core for a response to the request from the server to the client. The first core may insert the NAT session into a global session table responsive to determining that the second core will serve as the receiving core.

Claims (90)

1. A method of maintaining network address translation (NAT) session management on a multi-core system, comprising:

inserting, by a first core of a multi-core device intermediary between a plurality of clients and a plurality of servers, for a session established between a client of the plurality of clients and a server of the plurality of servers, a network address translation (NAT) session in to a local outbound session table stored in a memory of the first core;

determining, by the first core, that a second core of the multi-core device will serve as a receiving core for a response to the request from the server to the client;

inserting, by the first core, the NAT session into a global session table responsive to determining that the second core will serve as the receiving core;

identifying, by the second core of the multi-core device, that the NAT session is not included in a local inbound session table stored in a memory of the second core;

identifying the NAT session in the global session table; and

inserting, by the second core, the NAT session in the local inbound session table stored on the memory of the second core.

2. The method of claim 1 , further comprising:

determining, by the first core, that the first core will serve as a receiving core for a response to the request from the server to the client; and

inserting, by the first core, the NAT session in a local inbound session table stored on the memory of the first core.

3. The method of claim 1 , further comprising:

identifying, by the first core, an existing NAT session owned by the first core;

determining that the existing NAT session is shared using the global session table;

determining that the existing NAT session is no longer being used;

removing the existing NAT session from the local outbound session table stored on the memory of the first core; and

removing the existing NAT session from a local inbound session table stored on a memory of a core of the multi-core device determined to serve as a receiving core for packets corresponding to the existing NAT session.

4. The method of claim 1 , further comprising:

receiving, by the first core, an input packet corresponding to the NAT session;

determining that at least one service is associated with the NAT session; and

forwarding the input packet from the client to the service.

5. The method of claim 1 , further comprising:

receiving, by the first core, a request for a port within a range on the first core;

iterating through slots of ports in a local bitmap of the first core;

determining that a slot of ports in the local bitmap has at least one free port; and

allocating, by the first core, the free port responsive to the request.

6. The method of claim 1 , further comprising allocating a port range based on one of a block allocation or a NAT session.

7. The method of claim 1 , further comprising:

receiving, by the first core, a request for allocation of an object;

determining that the object is available in a free queue of a memory of the first core;

removing the object from the free queue; and

returning the object to a core from which the request was received.

8. The method of claim 1 , further comprising:

receiving, by the first core, a request for a resource on the first core;

determining, by the first core, that a quota is configured for a resource; and

responsive to determining that a quota is not configured for the resource, processing the request.

9. The method of claim 8 , further comprising:

responsive to determining that a quota is not configured for the resource, determining that an amount of units used by the first core is less than a quota of the first core; and

responsive to determining that the amount of units used by the first core is not less than a quota of the first core, processing the request; and

updating the amount of units used by the first core based on the processed request.

10. A system of maintaining network address translation (NAT) session management on a multi-core system, comprising:

a multi-core device intermediary between a plurality of clients and a plurality of servers, the multi-core device including a first core and a second core, the first core, coupled to memory, configured to:

insert, for a session established between a client of the plurality of clients and a server of the plurality of servers, a network address translation (NAT) session in to a local outbound session table stored in a memory of the first core;

determine that a second core of the multi-core device will serve as a receiving core for a response to the request from the server to the client; and

insert the NAT session into a global session table responsive to determining that the second core will serve as the receiving core; and

the second core, coupled to memory, is configured to:

identify that the NAT session is not included in a local inbound session table stored in a memory of the second core;

identify the NAT session in the global session table; and

insert the NAT session in the local inbound session table stored on the memory of the second core.

11. The system of claim 10 , wherein the first core is further configured to:

determine that the first core will serve as a receiving core for a response to the request from the server to the client; and

insert the NAT session in a local inbound session table stored on the memory of the first core.

12. The system of claim 10 , wherein the first core is further configured to:

identify an existing NAT session owned by the first core;

determine that the existing NAT session is shared using the global session table;

determine that the existing NAT session is no longer being used;

remove the existing NAT session from the local outbound session table stored on the memory of the first core; and

remove the existing NAT session from a local inbound session table stored on a memory of a core of the multi-core device determined to serve as a receiving core for packets corresponding to the existing NAT session.

13. The system of claim 10 , wherein the first core is further configured to:

receive an input packet corresponding to the NAT session;

determine that at least one service is associated with the NAT session; and

forward the input packet from the client to the service.

14. The system of claim 10 , wherein the first core is further configured to:

receive a request for a port within a range on the first core;

iterate through slots of ports in a local bitmap of the first core;

determine that a slot of ports in the local bitmap has at least one free port; and

allocate the free port responsive to the request.

15. The system of claim 10 , wherein the first core is further configured to allocate a port range based on one of a block allocation or a NAT session.

16. The system of claim 10 , wherein the first core is further configured to:

receive a request for allocation of an object;

determine that the object is available in a free queue of a memory of the first core;

remove the object from the free queue; and

return the object to a core from which the request was received.

17. The system of claim 10 , wherein the first core is further configured to:

receive a request for a resource on the first core;

determine that a quota is configured for a resource; and

responsive to determining that a quota is not configured for the resource, process the request.

18. The system of claim 17 , wherein the first core is further configured to:

responsive to determining that a quota is not configured for the resource, determine that an amount of units used by the first core is less than a quota of the first core; and

responsive to determining that the amount of units used by the first core is not less than a quota of the first core, process the request; and

update the amount of units used by the first core based on the processed request.

19. A system of maintaining network address translation (NAT) session management on a multi-core system, comprising:

a multi-core device intermediary between a plurality of clients and a plurality of servers, the multi-core device including a first core and a second core, the first core, coupled to memory, configured to:

insert, for a session established between a client of the plurality of clients and a server of the plurality of servers, a network address translation (NAT) session in to a local outbound session table stored in a memory of the first core;

determine that a second core of the multi-core device will serve as a receiving core for a response to the request from the server to the client;

insert the NAT session into a global session table responsive to determining that the second core will serve as the receiving core;

identify an existing NAT session owned by the first core;

determine that the existing NAT session is shared using the global session table;

determine that the existing NAT session is no longer being used;

remove the existing NAT session from the local outbound session table stored on the memory of the first core; and

remove the existing NAT session from a local inbound session table stored on a memory of a core of the multi-core device determined to serve as a receiving core for packets corresponding to the existing NAT session.

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 →
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 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 →
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 →
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 →
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 →
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 15, 2014
From: JAIN, NISHANT KUMAR; RAMESH, SAMEER BAGEPALLI
To: CITRIX SYSTEMS, INC.
Reel/Frame 033739/0114 →
Continuity (1)
Related Publication 20160072766A1 · Mar 10, 2016