IP Library › Granted Patent US 8,145,788
Granted Patent B1
US 8,145,788 · App. 10/180,639 · Granted Mar 27, 2012

Distributed ISP load balancer

Assignee: EMC Corporation
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 8,145,788
App. No.
10/180,639
Filed
Jun 24, 2002
Granted
Mar 27, 2012
Kind
B1
Art Unit
2443
USPC
709/241
Abstract

The present invention relates to a device and method for managing inbound and outbound communications for a multi-homed network. A connection manager is located on a local network that is connected to an external network, such as the Internet, through multiple service provider connections. The connection manager intercepts all communication packets that are inbound to the local network from the external network and all packets that are outbound from the local network to the external network. The connection manager then associates the packets with a particular ISP connection based on the availability and bandwidth load status of the ISP connections.

Claims (65)

1. A method of handling a computer network communication for a local network that is connected to an external network through multiple service providers, the method comprising:

receiving a communication packet that is inbound or outbound with respect to the local network;

determining for such packet an availability status for each of the service providers by transmitting a plurality of ping messages to a network host associated with one service provider, waiting for an acknowledgment from the network host, and determining that the one service provider is unavailable if a ratio of the quantity of acknowledgments received divided by the quantity of ping messages sent is less than a predetermined value;

upon determining that said one service provider is unavailable, transmitting ping messages to said network host; upon receiving a response to said ping messages indicating that said one service provider is available, waiting for a hold-down period and transmitting another ping message to said network host; and designating said service provider as being available if a response is received to said another ping message;

determining for such packet a bandwidth load status for each of the service providers;

selecting a service provider based upon the availability status and bandwidth load status of the service providers; and

associating the received packet with the selected service provider.

2. A method as defined in claim 1 , wherein selecting a service provider based upon the availability status and bandwidth load status of the service providers comprises selecting the service provider that has the lowest bandwidth load among the available service providers.

3. A method as defined in claim 1 , wherein the packet is outbound with respect to the local network and wherein associating the received packet with the selected service provider comprises transmitting the packet to the external network via the selected service provider.

4. A method as defined in claim 3 , wherein the external network comprises the Internet and wherein the packet contains a non-publicly routable source IP address, and additionally comprising replacing the non-publicly routable source IP address with a hide IP address comprising a publicly routable source IP address selected from a range of IP addresses associated with the selected service provider.

5. A method as defined in claim 4 , additionally comprising maintaining a record that defines the hide IP addresses for each service provider connected to the local network.

6. A method as defined in claim 1 , wherein the received packet is an inbound packet and relates to a DNS query request to translate a domain name into an IP address for a domain hosted in the local network, the method additionally comprising:

forwarding the DNS query request to a domain name server of the local network;

receiving a resolution message from the domain name server, wherein the resolution message contains a first IP address in a range of IP addresses corresponding to multiple service providers associated with the domain name;

determining a current availability status and bandwidth load of each of said multiple services providers, said selecting comprising selecting a service provider based upon current availability status and bandwidth load;

changing the first IP address in the resolution message to a hide IP address for the selected service provider;

and wherein associating the received packet with the selected service provider comprises responding to the DNS query request by sending a DNS query response message that identifies the hide IP address for the selected service provider as the IP address for the domain name.

7. A method as defined in claim 6 , wherein the DNS query response message is sent to the external network via the selected service provider.

8. A method as defined in claim 6 , wherein determining a service provider with which the resolution message is associated comprises identifying a service provider that assigned the first IP address to the local network.

9. A method as defined in claim 6 , additionally comprising creating a port forwarding rule that maps the hide IP address of the selected service provider to the first IP address.

10. A method as defined in claim 1 , wherein determining an availability status for a service provider comprises

determining that the service provider is unavailable if no acknowledgement message is received within a predetermined time period of sending a ping message.

11. A method as defined in claim 1 , wherein the method is performed at a local network that is inbound from local access routers associated with the service providers.

12. A method as defined in claim 6 , wherein the domain name server is located at a computer of the local network and wherein the computer performs the claimed method.

13. A method as defined in claim 1 , wherein the availability status for each of the service providers and the bandwidth load status for each of the service providers is determined using configuration information for each service provider, the configuration information for each service provider including a network address for a local access router for the service provider, a range of network addresses provided to the local network by the service provider, and a static inbound bandwidth and a static outbound bandwidth for the service provider.

14. A method as defined in claim 1 additionally comprising:

obtaining service provider configuration information for each service provider that connects the local network to the external network, wherein the service provider configuration information for each service provider includes a public IP address range assigned by the service provider to the local network, a hide IP address range that will be publicly advertised over the external network for the service provider, and an inbound and outbound static bandwidth for the service provider;

obtaining dynamic NAT rule definitions that are used to determine which service provider should be used for transmitting outbound communications to the external network from the local network;

obtaining port forwarding rules that are used to determine translations from external network addresses to local network addresses;

obtaining at least one external network address that is used to check the availability of the service providers; and

obtaining DNS settings that define external network addresses that will be advertised in connection with DNS queries.

15. A local computer network having connection manager embodied on a computer device that handles computer network communications for the local network, wherein the local computer network is connected to an external network through multiple service providers and wherein the connection manager performs operations comprising: receiving a communication packet that is inbound or outbound with respect to the local network; determining for such packet an availability status for each of the service providers by transmitting a plurality of ping messages to a network host associated with one service provider, waiting for an acknowledgment from the network host, and determining that the one service provider is unavailable if a ratio of the quantity of acknowledgments received divided by the quantity of ping messages sent is less than a predetermined value; upon determining that said one service provider is unavailable, transmitting ping messages to said network host; upon receiving a response to said ping messages indicating that said one service provider is available, waiting for a hold-down period and transmitting another ping message to said network host; and designating said service provider as being available if a response is received to said another ping message; determining for such packet a bandwidth load status for each of the service providers; selecting a service provider based upon the availability status and bandwidth load status of the service providers; and associating the received packet with the selected service provider.

16. The local computer network of claim 15 , wherein the packet is outbound with respect to the local network and wherein associating the received packet with the selected service provider comprises transmitting the packet to the external network via the selected service provider.

17. The local computer network of claim 15 , wherein the received packet is an inbound packet and relates to a DNS query request to translate a domain name into an IP address for a domain hosted in the local network, and wherein the connection manage performs operations further comprising:

forwarding the DNS query request to a domain name server of the local network;

receiving a resolution message from the domain name server, wherein the resolution message contains a first IP address in a range of IP addresses corresponding to multiple service providers associated with the domain name;

determining a current availability status and bandwidth load of each of said multiple services providers, said selecting comprising selecting a service provider based upon current availability status and bandwidth load;

changing the first IP address in the resolution message to a hide IP address for the selected service provider;

and wherein associating the received packet with the selected service provider comprises responding to the DNS query request by sending a DNS query response message that identifies the hide IP address for the selected service provider as the IP address for the domain name.

18. A connection manager system for handling a computer network communication for a local network that is connected to an external network through multiple service providers, the system comprising:

a memory in which instructions and data are stored;

a processor, coupled to the memory, such that the processor receives the instructions stored in the memory and executes the instructions to perform operations comprising:

receiving a communication packet that is inbound or outbound with respect to the local network;

upon determining that said one service provider is unavailable, transmitting ping messages to said network host; upon receiving a response to said ping messages indicating that said one service provider is available, waiting for a hold-down period and transmitting another ping message to said network host; and designating said service provider as being available if a response is received to said another ping message;

determining for such packet an availability status for each of the service providers by transmitting a plurality of ping messages to a network host associated with one service provider, waiting for an acknowledgment from the network host, and determining that the one service provider is unavailable if a ratio of the quantity of acknowledgments received divided by the quantity of ping messages sent is less than a predetermined value;

determining for such packet a bandwidth load status for each of the service providers;

selecting a service provider based upon the availability status and bandwidth load status of the service providers; and

associating the received packet with the selected service provider.

19. A system as defined in claim 18 , wherein the processor selects a service provider based upon the availability status and bandwidth load status of the service providers by selecting the service provider that has the lowest bandwidth load among the available service providers.

20. A system as defined in claim 18 , wherein the packet is outbound with respect to the local network and wherein the processor associates the received packet with the selected service provider by transmitting the packet to the external network via the selected service provider.

21. A system as defined in claim 18 , wherein the received packet is an inbound packet and relates to a DNS query request to translate a domain name into an IP address for a domain hosted in the local network, and the processor executed method further comprising:

forwarding the DNS query request to a domain name server of the local network;

receiving a resolution message from the domain name server, wherein the resolution message contains a first IP address in a range of IP addresses corresponding to multiple service providers associated with the domain name;

determining a current availability status and bandwidth load of each of said multiple services providers, said selecting comprising selecting a service provider based upon current availability status and bandwidth load;

changing the first IP address in the resolution message to a hide IP address for the selected service provider;

and wherein associating the received packet with the selected service provider comprises responding to the DNS query request by sending a DNS query response message that identifies the hide IP address for the selected service provider as the IP address for the domain name.

22. A program product for use in a computer that executes program steps recorded in a non-transitory computer-readable media to perform a method of handling a computer network communication for a local network that is connected to an external network through multiple service providers, the program product comprising: a recordable media; a plurality of computer-readable instructions executable by the computer to perform a method comprising: receiving a communication packet that is inbound or outbound with respect to the local network; upon determining that a service provider is unavailable, transmitting ping messages to said network host; upon receiving a response to said ping messages indicating that said one service provider is available, waiting for a hold-down period and transmitting another ping message to said network host; and designating said service provider as being available if a response is received to said another ping message; determining for such packet an availability status for each of the service providers by transmitting a plurality of ping messages to a network host associated with one service provider, waiting for an acknowledgment from the network host, and determining that the one service provider is unavailable if a ratio of the quantity of acknowledgments received divided by the quantity of ping messages sent is less than a predetermined value; determining for such packet a bandwidth load status for each of the service providers; selecting a service provider based upon the availability status and bandwidth load status of the service providers; and associating the received packet with the selected service provider.

23. A program product as defined in claim 22 , wherein selecting a service provider based upon the availability status and bandwidth load status of the service providers comprises selecting the service provider that has the lowest bandwidth load among the available service providers.

24. A program product as defined in claim 22 , wherein the packet is outbound with respect to the local network and wherein associating the received packet with the selected service provider comprises transmitting the packet to the external network via the selected service provider.

25. A program product as defined in claim 22 , wherein the received packet is an inbound packet and relates to a DNS query request to translate a domain name into an IP address for a domain hosted in the local network, the method additionally comprising:

forwarding the DNS query request to a domain name server of the local network;

receiving a resolution message from the domain name server, wherein the resolution message contains a first IP address in a range of IP addresses corresponding to multiple service providers associated with the domain name;

determining a current availability status and bandwidth load of each of said multiple services providers, said selecting comprising selecting a service provider based upon current availability status and bandwidth load;

changing the first IP address in the resolution message to a hide IP address for the selected service provider;

and wherein associating the received packet with the selected service provider comprises responding to the DNS query request by sending a DNS query response message that identifies the hide IP address for the selected service provider as the IP address for the domain name.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2006
From: RAINFINITY
To: EMC CORPORATION
Reel/Frame 017596/0063 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2002
From: LOVE, PHILIP; REN, YUXIANG ROBIN
To: RAINFINITY, INC.
Reel/Frame 013361/0949 →
Continuity (1)
Provisional Application 60384974 · May 31, 2002