IP Library › Granted Patent US 10,200,447
Granted Patent B2
US 10,200,447 · App. 14/862,698 · Granted Feb 5, 2019

FTP load balancing support for cluster

Inventors: Sandhya Gopinath (Bangalore, IN); Kaur Gurpreet (Bangalore, IN); Santosh Sahu (Bangalore, IN); Janraj CJ (Bangalore, IN)
Assignee: Citirix Systems, Inc.
H04L67/06H04L67/1002H04L67/28
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 10,200,447
App. No.
14/862,698
Granted
Feb 5, 2019
Kind
B2
Abstract

The present disclosure is directed to providing FTP data connections between a client and a server via a multi-core system. Both client-side and server-side data connections are allowed to be served on a core that is the same as a core that has processed the corresponding control connection using at least one of receive side scaling (RSS) filter rules and changes in port allocation logic. In a cluster where control connection and data connection can reach different nodes based on an RSS distribution, the node which has processed the control connection is also allowed to process the corresponding data connection using at least one of RSS filter rules, service registration, changes in port allocation logic and node-to-node (N2N) messages. The systems and methods discussed herein apply to active FTP, passive FTP, and active FTP with a random port in which the server initiates data connection from a non-standard FTP port.

Claims (49)

1. A method for managing file transfer protocol (FTP) connections between a client and a server by a multi-core system, comprising:

receiving, by a first core of a plurality of cores in a multi-core system deployed as an intermediary between a client and a server, an FTP control connection between the client and the server;

selecting, by the first core, a second core of the predetermined plurality of cores that will receive the corresponding FTP data session, responsive to the server selecting a predetermined port;

predicting, by the first core based on the FTP control connection, connection information of the corresponding FTP data connection;

providing, by the first core to the second core, the predicted connection information of the corresponding FTP data connection;

receiving, by a third core of the plurality of cores, the corresponding FTP data connection between the client and the server, responsive to the server selecting a port different from the predetermined port;

determining that the third core is not the second core; and

directing the third core to handle processing of the FTP data connection.

2. The method of claim 1 , wherein selecting the second core that will receive the corresponding FTP data control further comprises:

selecting a port for the FTP data connection; and

broadcasting a command to establish a listening service on the selected port to each of the plurality of cores.

3. The method of claim 1 , further comprising directing the first core to handle processing of the FTP data connection via receive side scaling (RSS) filter rules or changes in port allocation logic.

4. The method of claim 1 , further comprising:

receiving, by the first core, a second FTP control connection between a second client and the server;

selecting, by the first core, a fourth core of the predetermined plurality of cores that will receive the corresponding second FTP data session, responsive to the server selecting a predetermined port;

receiving, by a fifth core of the plurality of cores, the corresponding second FTP data connection between the second client and the server, responsive to the server selecting a port different from the predetermined port;

determining that the fourth core is the fifth core; and

directing the fourth core to handle processing of the second FTP data connection.

5. The method of claim 4 , further comprising:

determining that the second FTP control connection is an active FTP connection, and that the second FTP data connection is on a non-standard FTP port selected by the server; and

directing the fourth core to handle processing of the second FTP data connection using core-to-core messages, responsive to the determination that the second FTP data connection is on a non-standard FTP port selected by the server.

6. The method of claim 4 , further comprising:

determining that the second FTP control connection is a passive FTP connection; and

directing the first core to handle processing of the second FTP data connection using RSS filter rules, responsive to the determination that the second FTP control connection is a passive FTP connection.

7. The method of claim 1 , wherein the first core and second core are the same core.

8. The method of claim 1 , wherein selecting the second core further comprises determining a mapped internet protocol (IP) address and port such that reverse traffic from the client or server will be directed to the second core based on a tuple of the mapped IP address and port and a source IP address and port of the reverse traffic.

9. The method of claim 1 , wherein directing the third core to handle processing of the FTP data connection further comprises transmitting a command to the second core to release resources of the second core reserved for the FTP data connection.

10. A multi-core system for managing file transfer protocol (FTP) connections between a client and a server, comprising:

a plurality of cores of a multi-core system deployed as an intermediary between a client and server;

wherein a first core of the plurality of cores is configured to:

select a second core of the predetermined plurality of cores that will receive the corresponding FTP data session, responsive to the server selecting a predetermined port,

predict, based on the FTP control connection, connection information of the corresponding FTP data connection, and

provide the predicted connection information of the corresponding FTP data connection to the second core;

wherein a third core of the plurality of cores is configured to receive the corresponding FTP connection between the client and the server responsive to the server selecting a port different from the predetermined port, determine that the third core is not the second core, and direct the third core to handle processing of the FTP data connection.

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

select a port for the FTP data connection; and

broadcast a command to establish a listening service on the selected port to each of the plurality of cores.

12. The system of claim 10 , wherein the first core is further configured to handle processing of the actual FTP data connection via receive side scaling (RSS) filter rules or changes in port allocation logic.

13. The system of claim 10 , wherein the first core is further configured to receive a second FTP control connection between a second client and the server, and select a fourth core of the predetermined plurality of cores that will receive the corresponding second FTP data session, responsive to the server selecting a predetermined port; and

wherein a fifth core of the plurality of cores is configured to receive the corresponding second FTP data connection between the second client and the server, determine that the fourth core is the fifth core, and handle processing of the second FTP data connection.

14. The system of claim 13 , wherein the fourth core is further configured to:

determine that the second FTP control connection is an active FTP connection, and that the second FTP data connection is on a non-standard FTP port selected by the server, and

handle processing of the second FTP data connection using core-to-core messages, responsive to the determination that the second FTP data connection is on a non-standard FTP port selected by the server.

15. The system of claim 13 , wherein the fourth core is further configured to:

determine that the second FTP control connection is a passive FTP connection, and

handle processing of the second FTP data connection using RSS filter rules, responsive to the determination that the second FTP control connection is a passive FTP connection.

16. The system of claim 10 , wherein the first core and second core are the same core.

17. The system of claim 10 , wherein the first core is further configured to determine a mapped internet protocol (IP) address and port such that reverse traffic from the client or server will be directed to the second core based on a tuple of the mapped IP address and port and a source IP address and port of the reverse traffic.

18. The system of claim 10 , wherein at least one of the first core and the third core is further configured to transmit a command to the second core to release resources of the second core reserved for the FTP data connection.

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 24, 2015
From: GOPINATH, SANDHYA; GURPEET, KAUR; SAHU, SANTOSH; CJ, JANRAJ
To: CITRIX SYSTEMS, INC.
Reel/Frame 036644/0377 →
Continuity (1)
Related Publication 20170085622A1 · Mar 23, 2017
Cited By (1)
US 12,299,298