IP Library Granted Patent US 9,047,251
Granted Patent B2
US 9,047,251 · App. 13/330,164 · Granted Jun 2, 2015

Systems and methods for implementing connection mirroring in a multi-core system

Inventors: Josephine Suganthi (Santa Clara, CA); Sergey Vezunov (Moscow, RU)
Assignee: CITRIX SYSTEMS, INC.
G06F11/203G06F11/2028G06F11/2041G06F11/2048G06F2201/815H04L69/40
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,047,251
App. No.
13/330,164
Filed
Dec 19, 2011
Granted
Jun 2, 2015
Kind
B2
Art Unit
2113
USPC
714/6.3
Abstract

The present application is directed to systems and methods for providing failover connection mirroring between two or more multi-core devices intermediary between a client and a server. A first multi-core device may receive a hash key of a second multi-core device for mapping packets to cores of the second multi-core device. The first device may identify a core of the second device using (i) the hash key of the second device and (ii) tuple information corresponding to a connection between the client and the server via the first device. The first device may determine that the identified core is not a desired core for providing a failover connection. The first device may modify the tuple information so as to identify the desired core when used with the hash key of the second device. The first device may use the modified tuple information to establish the failover connection.

Claims (29)

1. A method for providing failover connection mirroring between multi-core devices intermediary between a client and a server, the method comprising:

(a) receiving, by a first multi-core device intermediary between a client and a server, a hash key of a second multi-core device, the hash key used by the second multi-core device for determining which cores to distribute packets received by the second multi-core device, the hash key different from a second hash key used by the first multi-core device for determining which cores to distribute packets received by the first multi-core device;

(b) identifying, by the first multi-core device, a core of the second multi-core device using (i) the hash key of the second multi-core device and (ii) tuple information corresponding to a connection between the client and the server via the first multi-core device;

(c) determining, by the first multi-core device, that the identified core of the second multi-core device is not a target core for providing a failover connection between the client and the server;

(d) modifying, by the first multi-core device, the tuple information so as to identify the target core when used with the hash key of the second multi-core device; and

(e) using, by the first multi-core device, the modified tuple information in establishing the failover connection in the second multi-core device.

2. The method of claim 1 , wherein (b) further comprises applying the tuple information to the hash key to evaluate to a result corresponding to a core of the second multi-core device.

3. The method of claim 1 , wherein (c) further comprises identifying, as the target core for providing the failover connection, a core that is at least one of: available and operational.

4. The method of claim 1 , wherein (d) further comprises modifying at least one of a port number and an address in the tuple information.

5. The method of claim 1 , wherein (e) further comprises using the modified tuple information to establish the failover connection via the target core of the second multi-core device.

6. The method of claim 1 , wherein (e) further comprises communicating the modified tuple information to the second multi-core device to establish the failover connection.

7. The method of claim 1 , wherein (e) further comprises establishing a stateful failover connection in the second multi-core device mirroring the connection in the first multi-core device.

8. The method of claim 1 , further comprising communicating client-side and server-side process information to the second multi-core device to establish the failover connection with the client and the server.

9. The method of claim 1 , further comprising communicating network address translation information to the second multi-core device to establish the failover connection with the client and the server.

10. The method of claim 1 , further comprising establishing a failover connection via a second core of the second multi-core device mirroring a connection via a second core of the first multi-core device.

11. A system for providing failover connection mirroring between multi-core devices intermediary between a client and a server, the system comprising:

a first multi-core device intermediary between a client and a server;

a hash key used by a second multi-core device for determining which cores to distribute packets received by the second multi-core device, the hash key different from a second hash key used by the first multi-core device for determining which cores to distribute packets received by the first multi-core device;

wherein the first multi-core device identifies a core of the second multi-core device using (i) the hash key of the second multi-core device and (ii) tuple information corresponding to a connection between the client and the server via the first multi-core device, determines that the identified core of the second multi-core device is not a target core for providing a failover connection between the client and the server; and

wherein the first multi-core device modifies the tuple information so as to identify the target core when used with the hash key of the second multi-core device and uses the modified tuple information in establishing the failover connection in the second multi-core device.

12. The system of claim 11 , wherein the first multi-core device applies the tuple information to the hash key to evaluate to a result corresponding to a core of the second multi-core device.

13. The system of claim 11 , wherein the first multi-core device identifies, as the target core for providing the failover connection, a core that is at least one of: available and operational.

14. The system of claim 11 , wherein the modified tuple information comprises at least one of a port number and an address which is modified from that of the tuple information corresponding to the first connection.

15. The system of claim 11 , wherein the modified tuple information to used to establish the failover connection via the target core of the second multi-core device.

16. The system of claim 11 , wherein the first multi-core device communicates the modified tuple information to the second multi-core device to establish the failover connection.

17. The system of claim 11 , wherein the modified tuple information to used to establish a stateful failover connection in the second multi-core device mirroring the connection in the first multi-core device.

18. The system of claim 11 , wherein the first multi-core device communicates client-side and server-side process information to the second multi-core device to establish the failover connection with the client and the server.

19. The system of claim 11 , wherein the first multi-core device communicates network address translation information to the second multi-core device to establish the failover connection with the client and the server.

20. The system of claim 11 , wherein the first multi-core device further facilitates establishment of a failover connection via a second core of the second multi-core device mirroring a connection via a second core of the first multi-core device.

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 Feb 22, 2012
From: SUGANTHI, JOSEPHINE; VEZUNOV, SERGEY
To: CITRIX SYSTEMS, INC.
Reel/Frame 027744/0310 →
Continuity (2)
Provisional Application 61425116 · Dec 20, 2010
Related Publication 20120159235A1 · Jun 21, 2012