IP Library Granted Patent US 10,079,877
Granted Patent B2
US 10,079,877 · App. 15/015,507 · Granted Sep 18, 2018

System and method for cloud aware application delivery controller

Inventor: Sankar Muthu Paramasivam (Santa Clara, CA)
Assignee: Citrix Systems, Inc.
H04L67/1006G06F17/3053G06F17/30525H04L67/42
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,079,877
App. No.
15/015,507
Filed
Feb 4, 2016
Granted
Sep 18, 2018
Kind
B2
Examiner
LIM, KRISNA
Art Unit
2451
USPC
709/203
Abstract

The present disclosure is directed towards systems and methods of managing cloud-based services via a network. A controller intermediary to clients and servers of a cloud environment can receive account information related to each of a plurality of instances of one or more services provided by the servers of the cloud environment. The controller can determine a weight for each of the instances based on the account information. The weight can indicate a performance of the instance of the service provided via the cloud environment. The controller can select an instance of the plurality of instances to direct network traffic from a client. The controller can select the instance based on the weight for each of the instances.

Claims (78)

1. A method of managing cloud-based services via a network, comprising:

receiving, by a controller intermediary to a client and a cloud environment, account information related to each of a plurality of instances of one or more services provided by one or more servers of the cloud environment, wherein a first instance of the plurality of instances is provided via a first zone of the cloud environment and a second instance of the plurality of instances is provided via a second zone of the cloud environment;

determining, by the controller, a first weight for the first instance and a second weight for the second instance based on the account information, the first weight and the second weight and indicating a performance of a corresponding instance of the one or more services provided via the cloud environment; and

selecting, by the controller based on a load balancing function and responsive to the first weight greater than the second weight, the first instance of the plurality of instances to direct network traffic from the client.

2. The method of claim 1 , comprising:

generating, by the controller using a cloud application programming interface, one or more queries to retrieve the account information for each of the plurality of instances, the one or more queries configured to retrieve information for at least one of a placement, resource allocation, type of reservation, or type of connectivity.

3. The method of claim 1 , comprising:

generating, by the controller using a cloud application programming interface, a query to retrieve placement information for the first instance of the plurality of instances;

transmitting, by the controller, the query to a metadata server maintained by a provider of the cloud environment, the metadata server including a database storing placement information for the first instance; and

receiving, by the controller from the metadata server responsive to the query, the placement information for the first instance.

4. The method of claim 1 , comprising:

periodically receiving updated account information; and

periodically selecting, based on the load balancing function and an updated weight for each of the plurality of instances based on the updated account information, a second instance of the plurality of instances to direct network traffic from one or more clients.

5. The method of claim 1 , comprising:

identifying, based on the account information, that a first instance of a first service of the one or more services is provided via the first zone of the cloud environment;

identifying, based on the account information, that a second instance of a second service of the one or more services is provided via the second zone of the cloud environment, a distance between the controller and the second zone greater than a distance between the controller and the first zone; and

determining, by the controller responsive to determining the distance between the controller and the second zone is greater than the distance between the controller and the first zone, to cache data provided via the second instance of the second service in memory of the controller.

6. The method of claim 1 , comprising:

identifying, by the controller, a plurality of devices intermediary to the client and the one or more servers;

determining, by the controller, the first weight for the first instance based on the account information and a first placement of a first intermediary device of the plurality of devices;

determining, by the controller, the second weight for the first instance based on the account information and a second placement of a second intermediary device of the plurality of devices; and

selecting, by the controller, the first intermediary device to direct network traffic of the first instance from the client based on a comparison of the first weight and the second weight.

7. The method of claim 6 , comprising:

determining the first weight is greater than the second weight based on a distance between the first placement and the one or more servers being less than a distance between the second placement and the one or more servers; and

selecting the first intermediary device responsive to the first weight being greater than the second weight.

8. The method of claim 1 , comprising:

identifying, by the controller, a first virtual server executing on a device intermediary to the client and the one or more servers, the first virtual server associated with the first instance;

identifying, by the controller, a second virtual server executing on the device intermediary to the client and the one or more servers, the second virtual server associated with the second instance;

determining, by the controller, the first weight for the first instance based on the account information and an attribute of the first virtual server;

determining, by the controller, the second weight for the second instance based on the account information and an attribute of the second virtual server; and

selecting, by the controller, the first virtual server to direct network traffic of the first instance from the client based on a comparison of the first weight and the second weight.

9. The method of claim 1 , comprising:

identifying, by the controller, a first device intermediary to the client and the cloud environment, the first device configured to direct network traffic related to the plurality of instances;

identifying, by the controller, a second device intermediary to the client and the cloud environment, the second device configured to direct network traffic related to the plurality of instances;

determining, by the controller, a third weight based on account information for each of the plurality of instances and an attribute of the first device;

determining, by the controller, a fourth weight based on account information for each of the plurality of instances and an attribute of the second device, the fourth weight less than the third weight; and

selecting, by the controller, the first device to direct network traffic related to the plurality of instances.

10. The method of claim 1 , comprising:

identifying, by the controller, a first plurality of virtual servers executed by a first device intermediary to the client and the cloud environment, the first plurality of virtual servers configured to direct network traffic related to one or more of the plurality of instances;

identifying, by the controller, a second plurality of virtual servers executed by a second device intermediary to the client and the cloud environment, the second plurality of virtual servers configured to direct network traffic related to one or more of the plurality of instances;

determining, by the controller, a third weight based on account information for each of the one or more plurality of instances and an attribute for each of the first plurality of virtual servers;

determining, by the controller, a fourth weight based on account information for each of the one or more plurality of instances and an attribute for each of the second plurality of virtual servers, the fourth weight less than the third weight; and

selecting, by the controller, the first device executing the first plurality of virtual servers to direct network traffic related to the one or more of the plurality of instances.

11. A system to manage cloud-based services via a network, comprising:

a controller intermediary to a client and a cloud environment configured to:

receive account information related to each of a plurality of instances of one or more services provided by one or more servers of the cloud environment, wherein a first instance of the plurality of instances is provided via a first zone of the cloud environment and a second instance of the plurality of instances is provided via a second zone of the cloud environment;

determine a first weight for the first instance and a second weight for the second instance based on the account information, the first weight and the second weight and indicating a performance of a corresponding instance of the one or more services provided via the cloud environment; and

select, based on a load balancing function and responsive to the first weight greater than the second weight, the first instance of the plurality of instances to direct network traffic from the client.

12. The system of claim 11 , wherein the controller is further configured to:

generate, using a cloud application programming interface, one or more queries to retrieve the account information for each of the plurality of instances, the one or more queries configured to retrieve information for at least one of a placement, resource allocation, type of reservation, or type of connectivity.

13. The system of claim 11 , wherein the controller is further configured to:

generate, using a cloud application programming interface, a query to retrieve placement information for the first instance of the plurality of instances;

transmit the query to a metadata server maintained by a provider of the cloud environment, the metadata server including a database storing placement information for the first instance; and

receive, from the metadata server responsive to the query, the placement information for the first instance.

14. The system of claim 11 , wherein the controller is further configured to:

identify, based on the account information, that a first instance of a first service of the one or more services is provided via the first zone of the cloud environment;

identify, based on the account information, that a second instance of a second service of the one or more services is provided via the second zone of the cloud environment, a distance between the controller and the second zone greater than a distance between the controller and the first zone; and

determine, responsive to determining the distance between the controller and the second zone is greater than the distance between the controller and the first zone, to cache data provided via the second instance of the second service in memory of the controller.

15. The system of claim 11 , wherein the controller is further configured to:

identify a plurality of devices intermediary to the client and the one or more servers;

determine the first weight for the first instance based on the account information and a first placement of a first intermediary device of the plurality of devices;

determine the second weight for the first instance based on the account information and a second placement of a second intermediary device of the plurality of devices; and

select the first intermediary device to direct network traffic of the first instance from the client based on a comparison of the first weight and the second weight.

16. The system of claim 15 , wherein the controller is further configured to:

determine the first weight is greater than the second weight based on a distance between the first placement and the one or more servers being less than a distance between the second placement and the one or more servers; and

select the first intermediary device responsive to the first weight being greater than the second weight.

17. The system of claim 11 , wherein the controller is further configured to:

identify a first virtual server executing on a device intermediary to the client and the one or more servers, the first virtual server associated with the first instance;

identify a second virtual server executing on the device intermediary to the client and the one or more servers, the second virtual server associated with the second instance;

determine the first weight for the first instance based on the account information and an attribute of the first virtual server;

determine the second weight for the second instance based on the account information and an attribute of the second virtual server; and

select the first virtual server to direct network traffic of the instance from the client based on a comparison of the first weight and the second weight.

18. The system of claim 11 , wherein the controller is further configured to:

identify a first device intermediary to the client and the cloud environment, the first device configured to direct network traffic related to the plurality of instances;

identify a second device intermediary to the client and the cloud environment, the second device configured to direct network traffic related to the plurality of instances;

determine a third weight based on account information for each of the plurality of instances and an attribute of the first device;

determine a fourth weight based on account information for each of the plurality of instances and an attribute of the second device, the fourth weight less than the third weight; and

select the first device to direct network traffic related to the plurality of instances.

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 Feb 4, 2016
From: PARAMASIVAM, SANKAR MUTHU
To: CITRIX SYSTEMS, INC.
Reel/Frame 037665/0620 →
Continuity (1)
Related Publication 20170230451A1 · Aug 10, 2017