IP Library › Granted Patent US 8,230,054
Granted Patent B2
US 8,230,054 · App. 12/645,848 · Granted Jul 24, 2012

Systems and methods for managing dynamic proximity in multi-core GSLB appliance

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,230,054
App. No.
12/645,848
Granted
Jul 24, 2012
Kind
B2
Abstract

The present invention is directed towards systems and methods for providing dynamic proximity load balancing via a multi-core intermediary device. An intermediary device providing global server load balancing (GSLB) identifies a local domain name service (LDNS) entries database and assigns each LDNS entry in the LDNS entries database to one of the plurality of packet processing engine base on a source internet protocol (IP) address of each LDNS entry. The first packet processing engine on the appliance receives a LDNS request for an IP address, determines that the LDNS entry for the IP address is assigned to a second packet processing engine of the plurality of packet processing engines, transmits a request to the second packet processing engine for the LDNS entry for the IP address, and determines a response to the LDNS request based on the LDNS entry for the IP address received from the second packet processing engine.

Claims (25)

1. A method of providing dynamic proximity load balancing via a multi-core intermediary device, the method comprising:

(a) identifying, by an intermediary device providing global server load balancing (GSLB), a local domain name service (LDNS) entries database, the intermediary device comprising a plurality of packet processing engines executing on a corresponding core of a plurality of cores of the intermediary device;

(b) assigning, by the intermediary device, LDNS entries in the LDNS entries database to a first packet processing engine of the plurality of packet processing engine base on a source internet protocol (IP) address of each LDNS entry, the first packet processing engine storing in memory of the first packet processing engine, the LDNS entries assigned to the first packet processing and storing in cache memory one or more LDNS entries from the LDNS entries database assigned to one or more of the other packet processing engines;

(c) receiving, by the first packet processing engine of a plurality of packet processing engines, a LDNS request for an IP address;

(d) determining, by the first packet processing engine, that the LDNS entry for the IP address is assigned to a second packet processing engine of the plurality of packet processing engines;

(e) transmitting, by the first packet processing engine, a request to the second packet processing engine for the LDNS entry for the IP address; and

(f) determining, by the first packet processing engine, a response to the LDNS request based on the LDNS entry for the IP address received from the second packet processing engine.

2. The method of claim 1 , wherein step (c) further comprises determining, by the first packet processing engine, that the LDNS entry for the IP address is not stored in a memory cache of the first packet processing engine.

3. The method of claim 1 , wherein step (e) further comprises transmitting the request to the second packet processing engine via a first core to second core messaging.

4. The method of claim 1 , wherein step (f) further comprises determining a domain name for a geographically distributed server farm based on one or more round trip times for the LDNS entry of the IP address.

5. The method of claim 1 , further comprising establishing a monitor for each LDNS entry, the monitor determining a round trip time.

6. The method of claim 5 , further comprising determining a source port for monitor communications that result in a response being received by a core that is assigned the LDNS entry.

7. The method of claim 5 , further comprising determining, by a flow distributor of the intermediary device via packet steering, to forward a response received for the monitor to a core that is assigned the LDNS entry.

8. The method of claim 1 , further comprising determining, by the first packet processing engine, that a round trip time for one or more LDNS entries assigned to the first packet processing engine has changed and transmits the one or more LDNS entries to one or more of the other packet processing engines.

9. A system of providing dynamic proximity load balancing via a multi-core intermediary device, the system comprising:

an intermediary device providing global server load balancing (GSLB) identifying a local domain name service (LDNS) entries database, the intermediary device comprising a plurality of packet processing engines executing on a corresponding core of a plurality of cores of the intermediary device and assigning LDNS entries in the LDNS entries database to a first packet processing engine of the plurality of packet processing engines base on a source internet protocol (IP) address of each LDNS entry;

a first packet processing engine of the plurality of packet processing engines storing in memory of the first packet processing engine the LDNS entries assigned to the first packet processing and storing in cache memory one or more LDNS entries from the LDNS entries database assigned to one or more of the other packet processing engines and receiving a LDNS request for an IP address, the first packet processing engine determining that the LDNS entry for the IP address is assigned to a second packet processing engine of the plurality of packet processing engines and transmitting a request to the second packet processing engine for the LDNS entry for the IP address; and

wherein the first packet processing engine determines a response to the LDNS request based on the LDNS entry for the IP address received from the second packet processing engine.

10. The system of claim 9 , wherein the first packet processing engine determines that the LDNS entry for the IP address is not stored in a memory cache of the first packet processing engine.

11. The system of claim 9 , wherein the first packet processing engine transmits the request to the second packet processing engine via a first core to second core messaging.

12. The system of claim 9 , wherein the first packet processing engine determines a domain name for a geographically distributed server farm based on one or more round trip times for the LDNS entry of the IP address.

13. The system of claim 9 , wherein the intermediary device establishes a monitor for each LDNS entry, the monitor determining a round trip time.

14. The system of claim 13 , wherein the intermediary device determines a source port for monitor communications that result in a response being received by a core that is assigned the LDNS entry.

15. The system of claim 13 , wherein a flow distributor of the intermediary device determines via packet steering to forward a response received for the monitor to a core that is assigned the LDNS entry.

16. The system of claim 9 , wherein the first packet processing engine determines that a round trip time for one or more LDNS entries assigned to the first packet processing engine has changed and transmits the one or more LDNS entries to one or more of the other packet processing engines.

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 Mar 16, 2010
From: MUTNURU, RISHI; KAMATH, SANDEEP; NARAYANA, RAGHAV SOMANAHALLI
To: CITRIX SYSTEMS, INC.
Reel/Frame 024085/0568 →
Continuity (1)
Related Publication 20110153723A1 · Jun 23, 2011