IP Library Granted Patent US 9,225,775
Granted Patent B2
US 9,225,775 · App. 12/272,618 · Granted Dec 29, 2015

Global server load balancing

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,225,775
App. No.
12/272,618
Granted
Dec 29, 2015
Kind
B2
Abstract

A global server load balancing (GSLB) switch serves as a proxy to an authoritative DNS communicates with numerous site switches which are coupled to host servers serving specific applications. The GSLB switch receives from site switches operational information regarding host servers within the site switches neighborhood. When a client program requests a resolution of a host name, the GSLB switch, acting as a proxy of an authoritative DNS, returns one or more ordered IP addresses for the host name. The IP addresses are ordered using metrics that include the information collected from the site switches. In one instance, the GSLB switch places the address that is deemed “best” at the top of the list.

Claims (64)

1. A method performed by a load balancing switch, the method comprising:

storing, by the load balancing switch, round trip time data for each of a plurality of site switches, wherein the round trip time data for a site switch in the plurality of site switches comprises a time for exchanging at least one message between the site switch and a client machine, each site switch in the plurality of site switches associated with one or more host servers;

receiving, by the load balancing switch from a domain name server, a plurality of network addresses generated by the domain name server in response to a domain name query originating at the client machine, the plurality of network addresses comprising network addresses of multiple site switches from the plurality of site switches;

ordering, by the load balancing switch, the plurality of network addresses based upon the round trip time data for the plurality of site switches to generate a first ordered list of the plurality of network addresses; and

causing, by the load balancing switch, the first ordered list of network addresses to be communicated to the client machine.

2. The method of claim 1 wherein, for a first site switch in the plurality of site switches, the round trip time data for the first site switch comprises time information for exchanging at least one message between the first site switch and the client machine.

3. The method of claim 2 wherein the time information for exchanging at least one message between the first site switch and the client machine comprises information indicating a time interval between a time when the first site switch receives a connection request from the client machine and a time when the first site switch receives a connection acknowledgement from the client machine in response to an acknowledgment packet sent from the first site switch to the client machine in response to receiving the connection request.

4. The method of claim 1 further comprising reordering, by the load balancing switch, the first ordered list based upon a set of performance metrics associated with the plurality of site switches other than the round trip time data to generate a second ordered list.

5. The method of claim 4 wherein the set of performance metrics comprises geographical locations of the host servers associated with the plurality of site switches.

6. The method of claim 1 wherein storing the round trip time data for each of a plurality of site switches comprises storing the round trip time data for the plurality of site switches in a table indexed by network neighborhood.

7. The method of claim 1 wherein each site switch in the plurality of site switches acts as a proxy for the one or more host servers associated with the site switch, the one or more host servers associated with the site switch being reached through the site switch.

8. The method of claim 1 further comprising periodically receiving, by the load balancing switch, the round trip time data for each of the plurality of site switches from the site switch, wherein the round trip time data received from a site switch comprises round trip time data collected by the site switch for each connection established between the site switch and the client machine.

9. The method of claim 1 further comprising:

prior to the domain name server receiving the domain name query, communicating the domain name query from the client machine to a local domain name server that is different from the client machine and from the domain name server generating the plurality of network addresses; and

wherein the domain name query is caused by a program executed by the client machine.

10. A system comprising:

a load balancing switch comprising a memory, the load balancing switch configured to store round trip time data for each of a plurality of site switches, wherein the round trip time data for a site switch in the plurality of site switches comprises a time for exchanging at least one message between the site switch and a client machine, each site switch in the plurality of site switches associated with one or more host servers;

wherein the load balancing switch is configured to receive a plurality of network addresses generated by a domain name server in response to a domain name query originated from the client machine, the plurality of network addresses comprising network addresses of multiple site switches from the plurality of site switches, order the plurality of network addresses based upon the round trip time data for the plurality of site switches to generate a first ordered list of the plurality of network addresses, and cause the first ordered list of network addresses to be communicated to the client machine.

11. The system of claim 10 wherein, for a first site switch in the plurality of site switches, the round trip time data for the first site switch comprises time information for exchanging at least one message between the first site switch and the client machine.

12. The system of claim 11 wherein the time information for exchanging at least one message between the first site switch and the client machine comprises information indicating a time interval between a time when the first site switch receives a connection request from the client machine and a time when the first site switch receives a connection acknowledgement from the client machine in response to an acknowledgment packet sent from the first site switch to the client machine in response to receiving the connection request.

13. The system of claim 10 wherein the load balancing switch is configured to reorder the first ordered list based upon a set of performance metrics associated with the plurality of site switches other than the round trip time data to generate a second ordered list.

14. The system of claim 13 wherein the set of performance metrics comprises geographical locations of the host servers associated with the plurality of site switches.

15. The system of claim 10 wherein the load balancing switch is configured to store the round trip time data for the plurality of site switches in a table indexed by network neighborhood.

16. The system of claim 10 wherein each site switch in the plurality of site switches acts as a proxy for the one or more host servers associated with the site switch, the one or more host servers associated with the site switch being reached through the site switch.

17. The system of claim 10 wherein the load balancing switch is further configured to periodically receive the round trip time data for each of the plurality of site switches from the site switch, wherein the round trip time data received from a site switch comprises round trip time data collected by the site switch for each connection established between the site switch and the client machine.

18. The system of claim 10 wherein:

prior to the domain name server receiving the domain name query, the domain name query is communicated from the client machine to a local domain name server that is different from the client machine and from the domain name server that generates the plurality of network addresses; and

the domain name query is caused by a program executed by the client machine.

19. A switch comprising:

a memory configured to store round trip time data for each of a plurality of network devices, wherein the round trip time data for a network device comprises a time associated with communication between the network device and a client machine;

and wherein the switch is configured to:

generate an ordered list of network addresses based upon the round trip time data for the plurality of network devices, the ordered list of network addresses comprising network addresses generated by a domain name server and received by the switch in response to a domain name query originated from the client machine; and

communicate the ordered list of network addresses to the client machine.

20. The switch of claim 19 wherein, for a first network device in the plurality of network devices, the time associated with communication between the first network device and the client machine specifies a time interval between a time when the first network device receives a connection request from the client machine and a time when the first network device receives a connection acknowledgement from the client machine in response to an acknowledgment packet sent from the first network device to the client machine in response to receiving the connection request.

21. The switch of claim 19 wherein the switch is configured to reorder the first ordered list based upon a set of performance metrics associated with the plurality of network devices other than the round trip time data to generate a second ordered list.

22. The switch of claim 21 wherein the set of performance metrics comprises geographical locations of one or more host servers associated with the plurality of network devices.

23. The switch of claim 19 wherein the memory is configured to store a table comprising the round trip time data for the plurality of network devices, wherein the table is indexed by network neighborhood.

24. The switch of claim 19 wherein each network device in the plurality of network devices acts as a proxy for one or more host servers associated with the network device, the one or more host servers associated with the site switch being reached through the site switch.

25. The switch of claim 19 wherein the domain name query is caused by a program executed by the client machine.

26. A method comprising:

storing, by a network device, round trip time data for each of a plurality of site switches, each site switch associated with one or more host servers, wherein the round trip time data for a site switch comprises a time for exchanging at least one message between the site switch and a client machine;

receiving, by the network device from a domain name server, a set of network addresses for a domain name query originating at the client machine and received by the domain name server, the set of network addresses comprising network addresses of multiple site switches from the plurality of site switches;

generating, by the network device, an ordered list of network addresses by ordering the set of network addresses based upon the round trip time data stored for the plurality of site switches; and

communicating, by the network device, the ordered list of network addresses to the client machine.

27. The method of claim 26 :

wherein the domain name query is caused by a program executed by the client machine; and

prior to the receiving, the domain name query is communicated from the client machine to a local domain name server that is different from the client machine and from the domain name server from which the set of network addresses is received by the network device.

28. A method comprising:

receiving, by a load balancing switch, from a domain name system (DNS) server, a plurality of network addresses generated by the DNS server in response to a domain name query originated at a client machine;

ordering, by the load balancing switch, the plurality of network addresses based upon round trip time data for a plurality of site switches to generate an ordered list of network addresses, the round trip time data comprising, for each site switch in the plurality of site switches, a time for exchanging at least one message between the site switch and the client machine; and

causing, by the load balancing switch, the ordered list of network addresses to be communicated to the client machine.

29. The method of claim 28 wherein each site switch in the plurality of site switches is associated with one or more host servers that are reached through the site switch using one or more virtual IP addresses configured at the site switch.

30. The method of claim 28 wherein the ordered list of network addresses comprises virtual IP addresses configured at the plurality of site switches.

31. The method of claim 28 :

wherein the domain name query is caused by a program executed by the client machine; and

prior to the receiving, the domain name query is communicated from the client machine to a local domain name server that is different from the client machine and from the domain name server from which the set of network addresses is received by the load balancing switch.

32. A network device comprising:

a memory configured to store a plurality of network addresses received by the network device from a domain name system (DNS) server, the plurality of network addresses generated by the DNS server in response to a domain name query originated at a client machine; and

a set of one or modules configured to:

order the plurality of network addresses based upon round trip time data for a plurality of site switches to generate an ordered list of network addresses, the round trip time data comprising, for each site switch in the plurality of site switches, a time for exchanging at least one message between the site switch and the client machine; and

cause the ordered list of network addresses to be communicated to the client machine.

33. The network device of claim 32 wherein each site switch in the plurality of site switches is associated with one or more host servers that are reached through the site switch using one or more virtual IP addresses configured at the site switch.

34. The network device of claim 32 wherein the ordered list of network addresses comprises virtual IP addresses configured at the plurality of site switches.

35. The network device of claim 32 wherein the domain name query is caused by a program executed by the client machine.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
RELEASE OF SECURITY INTEREST Recorded Jan 22, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034804/0793 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2010
From: FOUNDRY NETWORKS, LLC
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 025056/0830 →
CHANGE OF NAME Recorded Jul 21, 2010
From: FOUNDRY NETWORKS, INC.
To: FOUNDRY NETWORKS, LLC
Reel/Frame 024733/0739 →
SECURITY AGREEMENT Recorded Jan 20, 2010
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION; MCDATA SERVICES CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 023814/0587 →