IP Library › Granted Patent US 10,594,660
Granted Patent B2
US 10,594,660 · App. 15/320,211 · Granted Mar 17, 2020

Selecting proxies

Inventors: David Smith (Eagle, ID); Mark A. Fahrenkrug (Waukee, IA)
Assignee: Hewlett-Packard Development Company, LP.
H04L63/0281G06F9/505H04L63/029H04L67/1023G06F9/465H04L12/2856H04L29/12047H04L63/20H04L67/1002H04L67/1008H04W4/70
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,594,660
App. No.
15/320,211
Granted
Mar 17, 2020
Kind
B2
Abstract

Example embodiments relate to selecting proxies. In this manner, the embodiments disclosed herein enable determination of a device to which to send communication through a firewall and determination of a set of proxies available to communicate with the device through the firewall. A set of success labels are determined for the set of proxies, wherein a success label for an individual proxy comprises information related to communicating with the device via the individual proxy. Based on a first success label determined for the first proxy, a first proxy may be selected to communicate with the determined device.

Claims (60)

1. A non-transitory machine-readable storage medium comprising instructions for selecting proxies, the instructions executable by a processor of a computing device to:

determine a device in a system to which to send communication through a firewall of the system;

determine proxies available in the system to communicate with the device through the firewall, wherein proxy availability for communication with the device is determined both passively and actively, wherein the instructions are to cause the processor to:

passively determine proxy availability for communication with the device while performing other functionality of the computing device without engaging in communication with the device through the firewall of the system; and

actively determine proxy availability for communication with the device by engaging in communication with the device through the firewall of the system;

determine a label for each of the proxies, wherein the label of each proxy indicates whether the proxy has had successful communication with the device, unsuccessful communication with the device, or has not attempted communication with the device, wherein the instructions are to cause the processor to:

determine a first label to comprise information indicating that a predetermined number of previous attempts to communicate with the device were successful;

determine a second label to comprise information indicating that a predetermined number of previous attempts to communicate with the device were unsuccessful; and

determine a third label to comprise information indicating that communication to the device via the proxy has not been attempted;

group the proxies into a plurality of subsets of proxies based on the labels of the proxies, including a first subset of proxies having the first label indicating successful communication with the device, a second subset of proxies having the second label indicating unsuccessful communication with the device, and a third subset of proxies having the third label indicating that no attempts at communications have been made with the device; and select a first proxy from the first subset of proxies to communicate with the device.

2. The non-transitory machine-readable storage medium of claim 1 , further comprising instructions executable by the processor of the computing device to:

associate a respective weight with each of the plurality of subsets of proxies;

select the first subset of proxies based on a first weight associated with the first subset of proxies; and

select the first proxy from the first subset of proxies based on the first weight associated with the first subset of proxies.

3. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions executable by the processor of the computing device to select the first proxy comprise instructions to:

based on a set of conditions associated with each proxy in the first subset of proxies, select the first proxy from the first subset of proxies, wherein the set of conditions comprise a first condition related to use of each proxy.

4. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions executable by the processor of the computing device to select the first proxy comprise instructions to:

select the first proxy from the first subset of proxies based on load balancing.

5. The non-transitory machine-readable storage medium of claim 1 , further comprising instructions executable by the processor of the computing device to:

based on determined information related to communicating with the device via the first proxy, move the first proxy from the first subset of proxies having the first label to the second subset of proxies having the second label.

6. The non-transitory machine-readable storage medium of claim 5 , wherein the first proxy is moved to the second subset of proxies based on a predetermined number of unsuccessful attempts to communicate with the device via the first proxy.

7. The non-transitory machine-readable storage medium of claim 1 , wherein a second proxy is moved from the third subset of proxies to the second subset of proxies based on a successful attempt to communicate with the device via the second proxy.

8. A computing device for selecting proxies, the computing device comprising:

a processor; and

a memory storing instructions that when executed cause the processor to:

determine a device in a system to which to send communication through a firewall of the system;

determine proxies available in the system to communicate with the device through the firewall, wherein proxy availability for communication with the device is determined both passively and actively, wherein the instructions are to cause the processor to:

passively determine proxy availability for communication with the device while performing other functionality of the computing device without engaging in communication with the device through the firewall of the system; and

actively determine proxy availability for communication with the device by engaging in communication with the device through the firewall of the system;

determine a label for each of the proxies that indicates whether the proxy has had successful communication with the device, unsuccessful communication with the device, or has not attempted communication with the device, wherein the instructions cause the processor to:

determine a first label to comprise information indicating that a predetermined number of previous attempts to communicate with the device were successful;

determine a second label to comprise information indicating that a predetermined number of previous attempts to communicate with the device were unsuccessful; and

determine a third label to comprise information indicating that communication to the device via the proxy has not been attempted;

group the proxies into a plurality of proxy subsets based on the labels determined for the proxies, including a first subset of proxies having the first label indicating successful communication with the device, a second subset of proxies having the second label indicating unsuccessful communication with the device, and a third subset of proxies having the third label indicating that no attempts at communications have been made with the device; and

select a first proxy from the first subset of proxies to communicate with the device.

9. The computing device of claim 8 , wherein the instructions when executed cause the processor to:

associate each subset of proxies with a respective weight; and

select the first proxy from the first subset of proxies based on a first weight associated with the first subset of proxies.

10. The computing device of claim 8 , wherein the instructions when executed cause the processor to:

receive information related a new label that indicates a new type of communication pattern between a proxy and the device; and

determine a fourth subset of proxies to be associated with the new label.

11. The computing device of claim 8 , wherein the instructions when executed cause the processor to:

based on determined information related to communicating with the device via the first proxy, move the first proxy from the first subset of proxies with the first label to the second subset of proxies with the second label.

12. The computing device of claim 11 , wherein the first proxy is moved to the second subset of proxies based on a predetermined number of unsuccessful attempts to communicate with the device via the first proxy.

13. A method for execution by a computing device for selecting proxies, the method comprising:

determining proxies available in a system to communicate with a device in the system through a firewall, wherein proxy availability for communication with the device is determined both passively and actively, wherein:

the proxy availability is determined passively for communication with the device while performing other functionality of the computing device without engaging in communication with the device through the firewall of the system; and

the proxy availability is determined actively for communication with the device by engaging in communication with the device through the firewall of the system;

determining a label for each of the proxies, wherein the label of each proxy indicates whether the proxy has had successful communication with the device, unsuccessful communication with the device, or has not attempted communication with the device, further comprising:

determining a first label to comprise information indicating that a predetermined number of previous attempts to communicate with the device were successful;

determining a second label to comprise information indicating that a predetermined number of previous attempts to communicate with the device were unsuccessful; and

determining a third label to comprise information indicating that communication to the device via the proxy has not been attempted;

grouping the proxies into a plurality of proxy subsets based on the labels determined for the proxies, including a first subset of proxies having the first label indicating successful communication with the device, a second subset of proxies having the second label indicating unsuccessful communication with the device, and a third subset of proxies having the third label indicating that no attempts at communications have been made with the device;

selecting a first proxy from the first subset of proxies to communicate with the device; and

responsive to selecting the first proxy, sending communication to the device via the selected first proxy through the firewall.

14. The method of claim 13 , further comprising: associating each subset of proxies with a respective weight;

selecting the first proxy from the first subset of proxies based on a first weight associated with the first subset of proxies; and

based on information related to communication with the device via the first proxy, revising the first weight associated with the first subset of proxies.

15. The method of claim 13 , further comprising:

revising the plurality of proxy subsets to include an additional proxy subset based on a new pattern determined from a predetermined number of attempts to communicate with the device via the first proxy.

Continuity (1)
Related Publication 20170155623A1 · Jun 1, 2017
Cited By (61)
US 12,192,026 US 12,200,038 US 12,200,083 US 12,200,084 US 12,218,776 US 12,218,777 US 12,229,210 US 12,231,253 US 12,231,519 US 12,250,089 US 12,250,090 US 12,260,364 US 12,261,712 US 12,277,187 US 12,277,188 US 12,277,189 US 12,278,878 US 12,278,880 US 12,284,069 US 12,289,383 US 12,294,481 US 12,301,401 US 12,309,123 US 12,309,241 US 12,323,287 US 12,323,500 US 12,323,501 US 12,332,960 US 12,341,860 US 12,355,855 US 12,368,789 US 12,375,582 US 12,411,902 US 12,413,648 US 12,425,492 US 12,438,956 US 12,445,511 US 12,457,273 US 12,483,635 US 12,517,972 US 12,524,490 US 12,524,491 US 12,536,243 US 12,542,764 US 12,549,645 US 12,563,130 US 12,587,429 US 12,587,430 US 12,587,579 US 12,603,809 US 12,652,330 US 12,659,218 US 12,671,750 US 12,706,984 US 12,719,734 US 12,719,735 US 12,719,945 US 12,724,840 US 12,726,551 US 12,739,296 US 12,744,828