IP Library Granted Patent US 9,705,977
Granted Patent B2
US 9,705,977 · App. 13/090,489 · Granted Jul 11, 2017

Load balancing for network devices

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,705,977
App. No.
13/090,489
Granted
Jul 11, 2017
Kind
B2
Abstract

In one embodiment, an electronic device receives a request; obtains a current state from each of a plurality of electronic devices; and selects one of the plurality of electronic devices to service the request based on the current state of each of the plurality of electronic devices. The current state of each of the plurality of electronic devices is one of a plurality of states in a state model. Each of the plurality of states in the state model indicates a discrete level of workload for the plurality of electronic devices.

Claims (89)

1. A method comprising, by an electronic device:

receiving a request;

obtaining a current state indicator from each of a plurality of electronic devices, wherein:

the current state indicator of each of the plurality of electronic devices is one of a plurality of state indicators in a state model;

the state model is configured to indicate discrete levels of workload for the plurality of electronic devices, the discrete levels comprising:

a first discrete level comprising two or more state indicators that indicate that an associated electronic device is operating below a capacity of the associated electronic device and is configured to accept an increase in workload;

a second discrete level comprising two or more state indicators that indicate that an associated electronic device is operating at or above the capacity of the electronic device and is configured to accept an increase in workload if none of the plurality of electronic devices are assigned a state indicator of the first discrete level; and

a third discrete level comprising two or more state indicators that indicate that an associated electronic device is configured to deny an increase in workload; and

selecting one of the plurality of electronic devices to service the request based on the current state indicator of each of the plurality of electronic devices.

2. The method of claim 1 , wherein the one electronic device selected to service the request is an electronic device currently having a lowest level of workload, as indicated by the state model, among the plurality of electronic devices.

3. The method of claim 1 , wherein:

the state model is represented as a Simple Network Management Protocol (SNMP) variable; and

the current state indicator of each of the plurality of electronic devices is obtained from the electronic device using a SNMP command.

4. The method of claim 1 , wherein the current state indicator of each of the plurality of electronic devices is obtained from the electronic device using a Hypertext Transfer Protocol (HTTP) command.

5. The method of claim 1 , wherein each of the plurality of electronic devices determines its own current state indicator based on one or more resource metrics of the electronic device.

6. The method of claim 1 , wherein each of the plurality of electronic devices determines its own current state indicator based on one or more workload metrics of the electronic device.

7. The method of claim 1 , wherein the plurality of electronic devices is a plurality of intermediary network devices.

8. The method of claim 1 , wherein the plurality of electronic devices is a plurality of proxy devices.

9. The method of claim 1 , wherein:

the plurality of electronic devices is a plurality of caching devices; and

the request is a request for cached content.

10. The method of claim 1 , further comprising forwarding the request to the selected one electronic device.

11. A system comprising:

a memory comprising instructions executable by one or more processors; and

the one or more processors coupled to the memory and operable to execute the instructions, the one or more processors being operable when executing the instructions to:

receive a request;

obtain a current state indicator from each of a plurality of systems, wherein:

the current state indicator of each of the plurality of systems is one of a plurality of state indicators in a state model;

the state model is configured to indicate discrete levels of workload for the plurality of systems, the discrete levels comprising:

a first discrete level comprising two or more state indicators that indicate that an associated system is operating below a capacity of the associated system and is configured to accept an increase in workload;

a second discrete level comprising two or more state indicators that indicate that an associated system is operating at or above the capacity of the associated system and is configured to accept an increase in workload if none of the plurality of systems are assigned a state indicator of the first discrete level; and

a third discrete level comprising two or more state indicators that indicate that an associated system is configured to deny an increase in workload; and

select one of the plurality of systems to service the request based on the current state indicator of each of the plurality of systems.

12. The system of claim 11 , wherein the one system selected to service the request is a system currently having a lowest level of workload, as indicated by the state model, among the plurality of systems.

13. The system of claim 11 , wherein:

the state model is represented as a Simple Network Management Protocol (SNMP) variable; and

the current state indicator of each of the plurality of systems is obtained from the system using a SNMP command.

14. The system of claim 11 , wherein the current state indicator of each of the plurality of systems is obtained from the system using a Hypertext Transfer Protocol (HTTP) command.

15. The system of claim 11 , wherein each of the plurality of systems determines its own current state indicator based on one or more resource metrics of the system.

16. The system of claim 11 , wherein each of the plurality of systems determines its own current state indicator based on one or more workload metrics of the system.

17. The system of claim 11 , wherein the plurality of systems is a plurality of intermediary network devices.

18. The system of claim 11 , wherein the plurality of systems is a plurality of proxy devices.

19. The system of claim 11 , wherein:

the plurality of systems is a plurality of caching devices; and

the request is a request for cached content.

20. The system of claim 11 , wherein the one or more processors are further operable when executing the instructions to forward the request to the selected one system.

21. One or more computer-readable non-transitory storage media embodying software operable when executed by a computer system to:

receive a request;

obtain a current state indicator from each of a plurality of computer systems, wherein:

the current state indicator of each of the plurality of computer systems is one of a plurality of state indicators in a state model;

the state model is configured to indicate discrete levels of workload for the plurality of computer systems, the discrete levels comprising:

a first discrete level comprising two or more state indicators that indicate that an associated computer system is operating below a capacity of the associated computer system and is configured to accept an increase in workload;

a second discrete level comprising two or more state indicators that indicate that an associated computer system is operating at or above a capacity of the associated computer system and is configured to accept an increase in workload if none of the plurality of computer systems are assigned a state indicator of the first discrete level; and

a third discrete level comprising two or more state indicators that indicate that an associated computer system is configured to deny an increase in workload; and

select one of the plurality of computer systems to service the request based on the current state indicator of each of the plurality of computer systems.

22. The media of claim 21 , wherein the one computer system selected to service the request is a computer system currently having a lowest level of workload, as indicated by the state model, among the plurality of computer systems.

23. The media of claim 21 , wherein:

the state model is represented as a Simple Network Management Protocol (SNMP) variable; and

the current state indicator of each of the plurality of computer systems is obtained from the computer system using a SNMP command.

24. The media of claim 21 , wherein the current state indicator of each of the plurality of computer systems is obtained from the computer system using a Hypertext Transfer Protocol (HTTP) command.

25. The media of claim 21 , wherein each of the plurality of computer systems determines its own current state indicator based on one or more resource metrics of the computer system.

26. The media of claim 21 , wherein each of the plurality of computer systems determines its own current state indicator based on one or more workload metrics of the computer system.

27. The media of claim 21 , wherein the plurality of computer systems is a plurality of intermediary network devices.

28. The media of claim 21 , wherein the plurality of computer systems is a plurality of proxy devices.

29. The media of claim 21 , wherein:

the plurality of computer systems is a plurality of caching devices; and

the request is a request for cached content.

30. The media of claim 21 , wherein the software is further operable when executed by the computer systems to forward the request to the selected one computer system.

31. The method of claim 1 , wherein:

the first discrete level comprises a first state indicator;

the second discrete level comprises a second state indicator, wherein the second state indicator indicates a workload greater than the first state indicator;

the third discrete level comprises a third state indicator, wherein the third state indicator indicates a workload greater than the second state indicator; and

the method further includes, for a given electronic device assigned the third state indicator:

upon reduction of workload for the given electronic device sufficient to match workload of the second state indicator, maintaining assignment of the given electronic device to the third state indicator; and

upon further reduction of workload for the given electronic device sufficient to match workload of the first state indicator, reassigning the given electronic device from the third state indicator to the first state indicator.

32. The system of claim 11 , wherein:

the first discrete level comprises a first state indicator;

the second discrete level comprises a second state indicator wherein the second state indicator indicates a workload greater than the first state indicator;

the third discrete level comprises a third state indicator workload, wherein the third state indicator indicates a workload greater than the second state indicator; and

the one or more processors are further operable when executing the instructions to, for a given system of the plurality of systems assigned the third state indicator:

upon reduction of workload for the given system sufficient to match workload of the second state indicator, maintain assignment of the given system to the third state indicator; and

upon further reduction of workload for the given system sufficient to match workload of the first state indicator, reassign the given system from the third state indicator to the first state indicator.

33. The media of claim 21 , wherein:

the first discrete level comprises a first state indicator;

the second discrete level comprising a second state indicator of the state indicators, wherein the second state indicator indicates a workload greater than the first state indicator;

the third discrete level comprising a third state indicator, wherein the third state indicator indicates a workload greater than the second state indicator; and

the one or more processors are further operable when executing the instructions to, for a given computer system of the plurality of computer systems assigned the third state indicator:

upon reduction of workload for the given computer system sufficient to match workload of the second state indicator, maintain assignment of the given computer system to the third state indicator; and

upon further reduction of workload for the given computer system sufficient to match workload of the first state indicator, reassign the given computer system from the third state indicator to the first state indicator.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2016
From: BLUE COAT SYSTEMS, INC.
To: SYMANTEC CORPORATION
Reel/Frame 039851/0044 →
RELEASE OF SECURITY INTEREST Recorded Aug 1, 2016
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 039516/0929 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 30740/0181 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035797/0280 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 27727/0144 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035798/0006 →
SECURITY INTEREST Recorded May 22, 2015
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT
Reel/Frame 035751/0348 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 3, 2013
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 030740/0181 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 027727/0178 Recorded Oct 16, 2012
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 029140/0170 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Feb 16, 2012
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 027727/0144 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Feb 16, 2012
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 027727/0178 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2011
From: PORTER, KEVIN
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 026156/0166 →