The present invention generally relates to load balancing within a computer system, and particularly although not exclusively to load balancing between AAA (Authentication, Authorization, Audit) servers. The invention may find particular application, in some embodiments, with multi-message complex protocols such as Extensible Authentication Protocol (EAP).
The technology and techniques described in this section are considered to be useable in conjunction with the present invention, but they may not necessarily have been previously conceived, pursued and/published. Therefore, unless otherwise explicitly indicated, nothing described in this section is prior art to the claims in this application. In particular, there is no admission that anything is prior art merely by virtue of its inclusion within this section.
One common application for load balancing within a computer system (or network) is to spread the authorization and authentication load between more than one AAA server. Traditional load balancers typically use a variety of techniques for random load balancing between AAA servers, but none of these are particularly well-suited for one of the most commonly used protocols, namely the Extensible Authentication Protocol (EAP). Varieties of this protocol in use include Lightweight EAP (LEAP) and Protected EAP (PEAP). Similarly, conventional load balancers cannot easily—or in many cases at all—make use of some of the advanced features that modern AAA servers can offer, such as maximum session checking and IP address allocation/revocation because these features tend to rely on the same AAA server receiving all the AAA traffic for the end user or device in order to maintain appropriate state information.
The Institute for Electrical and Electronics Engineers (IEEE) recently proposed standards known as 802.1x for passing EAP messages over wired or wireless LANs. While some current implementations have been adapted for use with EAP using “sticky” timers to tie traffic to a given AAA server (AAAS) for a configurable time, these do not work correctly with accounting or at all with 802.1x protocols like EAP-PEAP or EAP-TLS where the AAAS may be required to keep state over the entire user session (which may perhaps last for hours). For example, when wireless LANs (WLANs) are deployed, session re-keying is often required. Most of the more recent WLAN AAA protocols employ an encrypted “tunnel” which use key exchange dialogues that are costly in terms of CPU usage and network bandwidth. Hence, there is a desire to ensure the same AAA server receives both the initial authentication and subsequent re-key requests.
One of the difficulties with EAP authentication is that it is not a once-off procedure. Often, several challenges and responses are required, for example because the protocol payload is simply too big to fit into a single packet (e.g., in Remote Authentication Dial-In User Service (RADIUS) protocol, the maximum packet size is 4K). In other cases, the specific protocol in use may itself dictate that several exchanges are required (for example where a back-end server detects that the password has expired and needs changing). Of course, it is critical that every message in the exchange is sent to the same server, since if the load balancer sends sequential messages to different servers, then authentication failures/errors will inevitably occur. The “sticky” timer may allow the initial authentication exchange to be tied to a single AAAS but subsequent re-key exchanges (that may occur minutes or hours later) may well go to another AAAS that does not have the required state information.
EAP authentication has become the mainstay of WLAN based authentication and is now on the verge of mainstream adoption for generalised LAN access also. But with the new deployment models comes much increased levels of network traffic and AAA processing (for example, EAP-TLS requires far more message exchanges than prior protocols). Regular wireless session re-keying and re-authentication add to this workload. Traditionally there may have been a few thousand remote users. Now there may be many tens of thousands of such users, all relying on the AAAS for their office-based LAN access.
There is accordingly a clear need for a load balancer, and a method of load balancing, which are capable of at least alleviating these difficulties. Such solutions may but need not make use of EAP.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
A method and apparatus for load balancing within a computer system is described below. The described embodiment uses EAP in the context of 802.1x for AAA, although the invention in its broadest form is not restricted to any specific protocol, neither is it restricted only to AAA applications. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
1.0 General Overview
The needs identified in the foregoing Background, and other needs and objects that will become apparent from the following description, are achieved in the present invention, which comprises, in one aspect, a method for providing load balancing within a computer system, particularly though not exclusively load balancing between multiple AAA servers within a cluster or server farm.
In one aspect of the present invention, a method of load balancing within a computer system includes the steps of: (a) receiving a message representing a request for computer resources from a remote supplicant, the message including a unique supplicant identifier; (b) extracting the identifier from the message; (c) associating the remote supplicant with one of several available resources, depending upon the supplicant identifier, and storing this association information. When further messages arrive, they are forwarded toward the proper associated resource on the basis of the stored information. The further messages may either be passed on, as received, or they may be modified in some way and the information within them simply passed on as required to the associated resource.
In a preferred embodiment, the identifier preferably represents a media access control (MAC) address. Preferably, the message requests authentication and is designed to be passed on by a load balancing server (LBS) to one of a number of AAA servers within a server farm.
The invention in other aspects extends to an apparatus for load balancing within a computer system, and to a computer-readable medium carrying a sequence of instructions which, when executed, implements the method as described above and as specified in the claims.
Various embodiments may incorporate the following design features:
The LBS preferably performs a load-balancing scheme to select one AAA Server from among a set of identically configured AAA Servers. In one embodiment, a modulo N operation is performed on the client MAC address, and the resulting value is used as an index to select one of the AAA Servers.
Using the methods mentioned above, and described in more detail below, embodiments can provide a transparent and efficient deterministic distribution of workload to a AAA server farm, with no single point of failure, and with provision for the simple deployment of new or replacement AAA servers when required, for example when the system throughput needs to be increased.
In one embodiment, a load balancing method:
The present invention, in one or more of its various aspects, may find particular application in the deployment of large scale 802.1x networks. At present, network administrators must typically deploy AAA servers into each 802.1x location, and scale each server so that it can handle the traffic that is generated in each location. In many locations, the AAA server may be relatively idle, while in others it may be overburdened. Ultimately, that means higher running costs. By making use of the present method, load balancing between geographic locations can easily be provided, thereby reducing costs and also reducing configuration time.
2.0 Structural and Functional Overview
In a first embodiment, the AAA servers S1, S2, S3, S4 act essentially independently of one another and the entire system comprises those items to the left of the dotted line 24 in
3.0 Load Balancing within a Computer System
Referring first to
In block 103, a test is performed to determine whether the supplicant unique identifier is in a second lookup table.
If the requesting supplicant is not known, then in block 104, a load-balancing computation is performed based on the supplicant unique identifier that was received in block 102, to yield a resource selection index value. In one embodiment, upon receipt, the LBS 16 performs a load balancing decision to select one of servers S1, S2, S3, S4 for processing the request; for example, LBS 16 performs a modulo N operation on the client MAC address.
In block 106, a resource identifier is retrieved by looking up the resource selection index value in a first lookup table. In one embodiment, a result value from the modulo operation is used as an index into a look up table to select one of servers S1, S2, S3, S4. For example, LBS 16 maintains a first look up table (LUT 1 as shown in
In block 108, a mapping of the resource identifier to the supplicant unique identifier is created in a second lookup table. In one embodiment, once LBS 16 has obtained the IP address of the chosen server, it then creates an entry in a second look up table (LUT 2 in
In block 110, the service request packet is forwarded to the selected resource for processing. In one embodiment, packet is transmitted without any changes, to the target AAA server and the LBS waits for the AAA response which, in turn, is returned to the client device 10. Alternatively, the AAA response is returned to an intermediate EAP device—not shown—such as an intermediate router that knows how to route the message back to the originating client device.
If the test of block 103 is true, meaning that previous requests from the same supplicant have been processed, then an abbreviated process is used. In block 105, the resource identifier for the supplicant is retrieved from the second lookup table LUT 2. In one embodiment, when the next EAP packet arrives from the client, the LBS 16 finds the client MAC address in LUT 2, and sends the packet onto the target AAA server.
Referring now to
By the very nature of EAP authentications, any mid-sequence authentications, at the point of fail-over, will fail. This is because the newly assigned server may not have sufficient state information to complete the authentication. Hence any outstanding requests for the failed server can be dropped. The supplicant will then have to re-authenticate from the start.
To facilitate safe fail-back, the LBS periodically attempts to authenticate a new supplicant to the primary server. Referring now to
The process of
In an alternative embodiment to that described above, the system may include a Global Session State Server (GSSS), as indicated by reference numeral 22 in
In this scheme, the LBS ensures that most of the time, any given end-user will be authenticated (and re-keyed), authorised and accounted on the same server. Each server behaves as an efficient write-through cache updating both itself and the GSSS as each authentication/accounting operation completes. If a server is taken out of service any EAP-TLS/EAP-PEAP based re-key authentications would normally be rejected by the secondary AAAS because of a lack of state. In this scheme the secondary server can retrieve the required state from the GSSS and complete the re-key authentication. Note that the GSSS is not updated upon every EAP packet arriving at the AAAS—only at the point of authentication completion.
Referring again to
This scheme achieves a coherent distributed session cache with little or no run-time cost.
4.0 Hardware Overview
While the concepts set out above have been described in terms of a purely software solution, it is equally possible for the present invention to be hardware-based and, for example, to be built into a Content Switching Server (CSS) platform. Indeed, this could potentially offer higher throughput because a CSS is essentially a switch, and balancing occurs at near-wire speed. Alternatively, the invention could be embodied within an aggregator device.
Computer system 300 (this corresponding to the LBS 16 of
A communication interface 318 may be coupled to bus 302 for communicating information and command selections to processor 304. An external terminal 312 or other computer system connects to the computer system 300 and provides commands to it using the interface 318. Firmware or software running in the computer system 300 provides a terminal interface or character-based command interface so that external commands can be given to the computer system.
A switching system 316 is coupled to bus 302 and has an input interface and a respective output interface (commonly designated 319) to external network elements. The external network elements may include a plurality of additional routers 320 or a local network coupled to one or more hosts or routers, or a global network such as the Internet having one or more servers. The switching system 316 switches information traffic arriving on the input interface to output interface 319 according to the method previously described. For example, switching system 316, in cooperation with processor 304, can determine a destination of a packet of data arriving on the input interface and send it to the correct destination such as one of the AAA servers of
The implementation of LBS functionality is provided by computer system 300 in response to processor 304 executing one or more sequences of one or more instructions contained in main memory 306. Such instructions may be read into main memory 306 from another computer-readable medium, such as storage device 310. Execution of the sequences of instructions contained in main memory 306 causes processor 304 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in main memory 306. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the method. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor 304 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 310. Volatile media includes dynamic memory, such as main memory 306. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 302. Transmission media can also take the form of wireless links such as acoustic or electromagnetic waves, such as those generated during radio wave and infrared data communications.
Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 304 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 300 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to bus 302 can receive the data carried in the infrared signal and place the data on bus 302. Bus 302 carries the data to main memory 306, from which processor 304 retrieves and executes the instructions. The instructions received by main memory 306 may optionally be stored on storage device 310 either before or after execution by processor 304.
Interface 319 also provides a two-way data communication coupling to a network link that is connected to the local network 20 of
5.0 Extensions and Alternatives
In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
In particular, it will be understood that the method described could, instead of using the MAC address, instead use any other unique identifier of a client or supplicant device. For example, the logon user ID could be used in some embodiments, although this would frequently not be desirable since the user ID is frequently not sent until after a suitable encrypted tunnel has been set up between the client device and the point of access to the LAN.
While the preferred method has been described with reference to the EAP protocol, the use of EAP and/or RADIUS is not essential. Instead of RADIUS, Diameter or any other suitably feature-rich protocol could be used. Provided that the MAC address or other client identifier can be reliably transmitted in such a way that it can be used to form the basis of the load balancing scheme, any convenient protocol may be used.
Finally, while the method has been described in connection with load balancing between AAA servers, it will of course be understood that the same approach could be used for load balancing between any network or computer resources.
Number | Name | Date | Kind |
---|---|---|---|
5109515 | Laggis et al. | Apr 1992 | A |
5586254 | Kondo et al. | Dec 1996 | A |
6587866 | Modi et al. | Jul 2003 | B1 |
6601084 | Bhaskaran et al. | Jul 2003 | B1 |
6898635 | Jung | May 2005 | B2 |
7047315 | Srivastava | May 2006 | B1 |
7174378 | Yoon et al. | Feb 2007 | B2 |
7185096 | Kalyanavarathan et al. | Feb 2007 | B2 |
7197547 | Miller et al. | Mar 2007 | B1 |
7237034 | Clarke et al. | Jun 2007 | B2 |
7328237 | Thubert et al. | Feb 2008 | B1 |
20010044893 | Skemer | Nov 2001 | A1 |
20010047414 | Yoon et al. | Nov 2001 | A1 |
20020049842 | Huetsch et al. | Apr 2002 | A1 |
20020087694 | Daoud et al. | Jul 2002 | A1 |
20020103846 | Zisapel et al. | Aug 2002 | A1 |
20020120743 | Shabtay et al. | Aug 2002 | A1 |
20020156887 | Hashimoto | Oct 2002 | A1 |
20020165948 | Vincent | Nov 2002 | A1 |
20020194335 | Maynard | Dec 2002 | A1 |
20030036886 | Stone | Feb 2003 | A1 |
20030055971 | Menon | Mar 2003 | A1 |
20030061356 | Jason, Jr. | Mar 2003 | A1 |
20030065944 | Mao et al. | Apr 2003 | A1 |
20030079031 | Nagano | Apr 2003 | A1 |
20030110259 | Chapman et al. | Jun 2003 | A1 |
20030123424 | Jung | Jul 2003 | A1 |
20030126200 | Wolff | Jul 2003 | A1 |
20030126252 | Abir | Jul 2003 | A1 |
20030126263 | Fenton et al. | Jul 2003 | A1 |
20030149620 | Gaither | Aug 2003 | A1 |
20030208596 | Carolan et al. | Nov 2003 | A1 |
20030229697 | Borella | Dec 2003 | A1 |
20030236888 | Chauffour et al. | Dec 2003 | A1 |
20040006642 | Jang et al. | Jan 2004 | A1 |
20040024861 | Coughlin | Feb 2004 | A1 |
20040024880 | Elving et al. | Feb 2004 | A1 |
20040267920 | Hydrie et al. | Dec 2004 | A1 |
20050005006 | Chauffour et al. | Jan 2005 | A1 |
20050108397 | Basso et al. | May 2005 | A1 |
20060112170 | Sirkin | May 2006 | A1 |