Server-Side Load Balancing Using Parent-Child Link Aggregation Groups
This application is a continuation of application Ser. No. 12/545,680, filed on Aug. 21, 2009, the entire disclosure of which is hereby incorporated herein by reference for all purposes. Various exemplary embodiments disclosed herein relate generally to the routing of packets in a communications network and the balancing of server load. In many client-server applications, such as IP Television (IPTV), the number of clients requesting a particular service can be quite large. Because any computer has finite processing capability, a server may only provide service to a limited number of clients before the quality of service degrades to unacceptable levels. The most obvious solution, simply providing faster server components, can become prohibitively expensive and technologically impossible as the number of active clients increases. Accordingly, many client-server applications provide multiple redundant servers in order to accommodate all client requests. Various forms of load balancing are then employed to ensure that no single server becomes too bogged down in serving client requests. In a rudimentary form of load balancing, multiple servers may be provided and the client may simply choose one server to process a request. This can be seen in applications such as file mirroring, where a list of multiple computers serving the requested file are presented to a user, who then simply picks a server to download from. Other information may be provided, such as the current status or geographic location of the server, but the onus is on the user to process this information and make an informed server selection. If the chosen server does not provide the quality of service expected by the client, a different server may be selected. In another form of server load balancing, a client may send multiple requests to multiple servers and simply accept the first response that arrives, discarding any later arriving responses. Again, this requires more work on the part of the client, as the request must be duplicated and transmitted to multiple addresses. A multicast protocol may be used to send a single request to multiple destinations, but again, this method places the burden on the client, the servers and the network. The server(s) would need to know each client it serves and join a multicast group hosted by the client. This is not practical. In a more advanced form of load balancing, a central server may arbitrate from which server a client will receive service. According to this method, a client may send its request to a central server which will then determine an appropriate working server to provide service to the client. The central server may then either respond to the client with the address of the assigned working server or hand the initial request directly to the working server. Thus, this method can require the client to perform unnecessary session establishment and exposes the client to at least a portion of the inner workings of the server system. This method may also carry the added disadvantage of leaving server system more vulnerable to attacks such as, for example, a denial of service attack. Additionally, a central server would have the same limits as any other computing system and may likewise receive too many establishment requests to process efficiently. Thus, in particularly high client volume applications, multiple central servers may be required and the problem becomes recursive. Another form of load balancing must then be implemented in order to ensure that no central server receives more requests than it can efficiently process. Accordingly, there exists a need for a method of balancing server load between multiple servers without needlessly complicating the methods performed by client devices in requesting a service. Additionally, a need exists for a method to balance server load in a manner that is virtually invisible to client devices. Another possible point of failure for any network system is in the links connecting network nodes. IEEE 802.1AX, which is incorporated herein by reference, provides for link aggregation groups (LAGs) that combat this possibility. A LAG is made up of multiple links between the same two nodes. When sending a packet over a LAG, a sending node simply selects one of the links that make up the LAG and transmits the packet over one of the selected link. A LAG is given an identifier such as the MAC address of one of its constituent links. In this manner, a packet may be transmitted over one of multiple links toward its destination in a manner that is virtually invisible to all devices other than the two devices at either end of the LAG. If one link fails, packets may still be transmitted over the remaining links in the LAG. While effective in combating link failure and increasing transfer speeds, LAGs are not useful for many other problems. The operation of a LAG is very simple and not highly customizable. Thus, LAGs are not particularly helpful when devising new and creative methods of fixing network problems and increasing performance. Accordingly, there exists an additional need for a LAG implementation allowing a higher degree of functionality and customization. The foregoing objects and advantages of the invention are illustrative of those that can be achieved by the various exemplary embodiments and are not intended to be exhaustive or limiting of the possible advantages that can be realized. Thus, these and other objects and advantages of the various exemplary embodiments will be apparent from the description herein or can be learned from practicing the various exemplary embodiments, both as embodied herein or as modified in view of any variation that may be apparent to those skilled in the art. Accordingly, the present invention resides in the novel methods, arrangements, combinations, and improvements herein shown and described in various exemplary embodiments. In light of the present need for a method of balancing server load between multiple redundant servers in a manner that is virtually invisible to client devices, a brief summary of various exemplary embodiments is presented. Some simplifications and omissions may be made in the following summary, which is intended to highlight and introduce some aspects of the various exemplary embodiments, but not to limit the scope of the invention. Detailed descriptions of a preferred exemplary embodiment adequate to allow those of ordinary skill in the art to make and use the inventive concepts will follow in later sections. Various exemplary embodiments relate to a method and related network node including one or more of the following: establishing, at the network node, a first Child Link Aggregation Group (CLAG), wherein the first CLAG includes at least one link to a first downstream node; establishing, at the network node, a second CLAG, wherein the second CLAG includes at least one link to a second downstream node; establishing, at the network node, a Parent Link Aggregation Group (PLAG), wherein the PLAG includes the first CLAG and the second CLAG; receiving, at the network node, a packet including an address of a destination of the packet; determining that the destination of the packet is associated with the PLAG; and transmitting the packet over both the first CLAG and the second CLAG. It should be apparent that, in this manner, various exemplary embodiments enable the routing of any packet to each of a group of servers and the determination of which server should process and/or respond to a received packet. In particular, by sending a packet over every CLAG contained in a PLAG, each server connected to such a CLAG will receive a copy of the packet. Thus, various exemplary embodiments enable the transmission of a packet to multiple servers in a manner that is virtually invisible to the client devices. In order to better understand various exemplary embodiments, reference is made to the accompanying drawings, wherein: Referring now to the drawings, in which like numerals refer to like components or steps, there are disclosed broad aspects of various exemplary embodiments. It should be noted that, while various examples utilize letters to signify various network addresses, these letters serve as placeholders and, in actual operation, valid network addresses formed according to appropriate standards would likely be present. In addition, while various embodiments are described herein as routing IP packets specifically, the present disclosure is in no way limited to this protocol. Sending node 110 may be a device that communicates with receiving nodes 140 Communications network 120 may be any network for providing data communications between sending node 110 and router node 130. Communications network 120 may be packet-switched or circuit-switched. Further, communications network 120 may provide, for example, phone and Internet service to various user devices in communication with communications network 120. Routing node 130 may be a device that receives and retransmits packets according to their destination address. More specifically, in various exemplary embodiments, routing node 130 is a packet router, network switch, multilayer switch, server, or any other device capable of reading an address and forwarding a packet over a port associated with the address. Routing node 130 may be associated with at least one MAC address, “T.” While it is likely that routing node 130 is associated with multiple MAC addresses, for simplicity, T will be used herein to refer to any appropriate MAC address of the MAC addresses associated with routing node 130. Receiving nodes A-C 140 Receiving node A 140 Having described the components of network 100, a brief summary of the operation of network 100 will be provided. It should be apparent that the following description is intended to provide an overview of the operation of network 100 and is therefore a simplification in some respects. The detailed operation of network 100 will be described in further detail below in connection with According to various exemplary embodiments, sending node may transmit a packet over communications network 120. The packet may be addressed to IP address A (i.e., the IP address associated with receiving node A 140 Thus, the packet sent by sending node 110 to IP address A has been received at each receiving node 140 Interface 210 may be an interface comprising hardware and/or executable instructions encoded on a machine-readable storage medium configured to transmit and receive data over communications network 120. Interface 210 may be coupled to another network device within communications network 120. Address resolution module 220 may include hardware and/or executable instructions on a machine-readable storage medium configured to determine how to route a packet according to its destination address. For example, address resolution module 220 may receive a packet from interface 210 and read its destination address. Address resolution module 220 may then consult address resolution storage 230 to determine a next-hop address associated with the destination address. Address resolution module 220 may finally pass the packet to link aggregation module 240 so it may forward the packet according to the determined next-hop address. Address resolution storage 230 may be any machine-readable medium capable of storing associations between destination addresses and identifiers used to route a packet. For example, address resolution storage 230 may be a table implemented according to the Address Resolution Protocol and thus provide associations between IP addresses and MAC addresses. An exemplary embodiment of the data stored in address resolution storage 230 is described in greater detail below with reference to Link aggregation module 240 may include hardware and/or executable instructions on a machine-readable storage medium configured to transmit a packet over an appropriate interface 260 A CLAG may be configured to include one or more links to another network node. Each CLAG may be associated with a CLAG identifier. This CLAG identifier may be a unique identifier or it may be an identifier associated with one of the included links, such as its MAC address. In operation, when forwarding a packet over a CLAG, the link aggregation module 240 may select one of the links included in the CLAG and transmit the packet over only the selected link. In this manner, link redundancy is established and if one link in the CLAG fails, the remaining links may be used to communicate with the attached network node. A PLAG may be configured to include multiple CLAGs. Each CLAG may connect to a different network node or the same network node. A PLAG may be associated with a PLAG identifier which may be a unique identifier or the same as the CLAG identifier for one of the included CLAGs. In operation, when forwarding a packet over a PLAG, the link aggregation module 240 may forward the packet over each constituent CLAG. The packet may then be forwarded according to the normal operation of the constituent CLAGs, as described above. Thus, a packet forwarded over a PLAG will be sent over one link from each constituent CLAG. When each CLAG connects to a different network node, each network node will receive one copy of the packet and can then process it accordingly. According to the exemplary embodiment in Link aggregation control storage 250 may be any machine-readable medium capable of storing the configuration of various link aggregations groups. Link aggregation control storage 250 may, for example, contain the definitions of all PLAGs and CLAGs configured on routing node 200. Exemplary embodiments of the data stored by link aggregation control storage 250 are described in further detail below with reference to Interfaces 260 Data arrangement 300 may include IP address field 310, corresponding MAC address field 320, and time to live (TTL) field 330. IP address field 310 may be used to indicate the IP address to which a particular record corresponds. MAC address field 320 may indicate a MAC address which should be used to route packets to the corresponding IP address. TTL field 330 may indicate when a particular record should be deleted from data arrangement 300. As an example, record 340 indicates that packets destined for IP address A should be forwarded over the interface associated with MAC address U and that this mapping should live until 21:12:00, at which point record 340 may be deleted. Likewise, record 350 indicates that IP address B also maps to MAC address U and that the mapping should live until 09:01:25. Record 360 indicates that IP address C maps to MAC address U as well and that this mapping should live until 00:51:50. Data arrangement 300 may contain numerous additional records 370. Data arrangement 400 may include CLAG address field 410 and link addresses field 420. CLAG address field 410 may indicate the CLAG identifier to which a CLAG record corresponds. Link addresses field 420 may indicate the MAC addresses that are associated with a particular CLAG address. As an example, CLAG record 430 indicates that a CLAG is configured that has MAC address U as an identifier and includes the interfaces associated with MAC addresses U and V. Likewise, CLAG record 440 indicates that a CLAG is configured that has MAC address W as an identifier and includes the interfaces associated with MAC addresses W, X, and Y. Further, CLAG record 450 indicates that a CLAG is configured that has MAC address Z as an identifier and includes the interface associated with MAC address Z. Data arrangement 400 may contain numerous additional CLAG records 460. Data arrangement 500 may include PLAG address field 510 and CLAG addresses field 520. PLAG address field 510 may indicate the PLAG identifier to which a PLAG record corresponds. CLAG addresses field 520 may indicate the CLAG identifiers that are associated with a particular PLAG address. As an example, PLAG record 530 indicates that a PLAG is configured that has MAC address U as an identifier and includes the CLAGs identified by MAC addresses U, W, and Z. Data arrangement 500 may contain numerous additional PLAG records 540. Control node 610 may be a network device capable of keeping receiving nodes 140 Receiving nodes 140 Data arrangement 700 may include an index field 710 and a server ID field 720. Index field 710 may simply include a number corresponding to a specific record. Records may be accessed by specifying the index of the desired record. Server ID field 720 may include an identifier for one of the receiving nodes 140 As an example, server record 730 may be indexed by the number zero and identify the node at IP address A (i.e., receiving node A 140 Method 800 starts in step 805 and proceeds to step 810, where routing node 130 receives a packet. Routing node 130 may then determine the destination IP address of the packet and resolve the destination IP address into an appropriate MAC address over which to forward the packet in steps 815 and 820, respectively. For example, routing node 130 may consult an address resolution storage 230 to determine a MAC address associated with the destination IP address. After determining an appropriate MAC address for forwarding the packet, routing node 130 may determine whether the MAC address is associated with a PLAG in step 825. If the MAC address identifies a PLAG, method 800 may proceed to step 830, where routing node 130 may retrieve a list of CLAGs associated with the PLAG by, for example, accessing a PLAG record associated with the PLAG address in a link aggregation control storage 250. Routing node 130 may then retrieve a list of links associated with the first CLAG in the list of CLAGs at step 835 by, for example, accessing a CLAG record associated with the first constituent CLAG from a link aggregation control storage 250. Routing node 130 may then select one link from the list of links for the CLAG and transmit the packet to the selected link in steps 840 and 845, respectively. Method 800 may then proceed to step 850, where routing node 140 may determine whether it has reached the end of the list of CLAG addresses. If it has not, method 800 may return to step 835 where routing node 140 may repeat steps 835-850 for the next CLAG in the list. If the end of the list has been reached, method 800 may stop in step 880. In this manner, one copy of the received packet may be sent over each CLAG. If it is determined at step 825 that the MAC address does not identify a PLAG, method 800 may move to step 855, where routing node 130 may determine whether the MAC address is instead associated with a CLAG. If so, routing node 130 may retrieve a list of links associated with the CLAG, select one link from the list, and transmit the packet to the selected link in steps 860, 865, and 870, respectively. Method 800 may then stop in step 880. In this manner, the routing node 130 may implement standard link aggregation functionality in addition to PLAG functionality. If routing node 130 determines at step 855 that the MAC address is not associated with a CLAG, routing node 130 may assume that the packet may be routed according to standard operation. Method 800 may proceed to step 875 where routing node 130 may transmit the packet to the MAC address associated with the destination IP address and then stop in step 880. Method 900 may start in step 905 and proceed to step 910, where the receiving node 140 Receiving node 140 In step 940, receiving node 140 Having described exemplary components and methods for the operation of exemplary networks 100, 600, an example of the operation of exemplary networks 100, 600 will now be provided with reference to The address resolution storage 230 of routing node 130 may be indicated by data arrangement 300. The link aggregation control storage 250 of routing node 130 may be indicated by data arrangements 400, 500. Control node 610 may currently be monitoring the status of receiving nodes 140 The process may begin with sending node 110 transmitting a packet with destination IP address A over communications network 120 inside frame 150 Link aggregation module 240 may then access CLAG record 430 and determine that interface addresses U and V are contained by CLAG U. Link aggregation module 240 may then select interface address U and transmit the packet in frame 150 After receiving the packet, each receiving node 140 Each receiving node may then retrieve server record 750, i.e. the server record having an index of two. Receiving node A and B 140 According to the foregoing, various exemplary embodiments provide for balancing server load between multiple servers in a manner that is virtually invisible to clients. In particular, by implementing a Parent Link Aggregation Group including multiple Child Link Aggregation Groups, any packet can be forwarded at Layer 2 to multiple servers at the end of each CLAG. Further, by implementing a selection algorithm across all of the servers, the servers can quickly and efficiently determine one server that should process the packet. It should be apparent from the foregoing description that various exemplary embodiments of the invention may be implemented in hardware and/or firmware. Furthermore, various exemplary embodiments may be implemented as instructions stored on a machine-readable storage medium, which may be read and executed by at least one processor to perform the operations described in detail herein. A machine-readable storage medium may include any mechanism for storing information in a form readable by a machine, such as a network node (e.g. router or switch). Thus, a machine-readable storage medium may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash-memory devices, and similar storage media. Although the various exemplary embodiments have been described in detail with particular reference to certain exemplary aspects thereof, it should be understood that the invention is capable of other embodiments and its details are capable of modifications in various obvious respects. As is readily apparent to those skilled in the art, variations and modifications can be affected while remaining within the spirit and scope of the invention. Accordingly, the foregoing disclosure, description, and figures are for illustrative purposes only and do not in any way limit the invention, which is defined only by the claims. Various exemplary embodiments relate to a method and related network node including one or more of the following: receiving, at the network node, a packet including a destination address of the packet; resolving the destination address of the packet to a first address of a first receiving node; identifying a second address of a second receiving node as being associated with the first address; and transmitting the packet to both the first address and the second address. 1. A method of routing packets in a communications network by a network node, the method comprising:
receiving, at the network node, a packet including a destination address of the packet; resolving the destination address of the packet to a first address of a first receiving node; identifying a second address of a second receiving node as being associated with the first address; and transmitting the packet to both the first address and the second address. 2. The method of a third address of the second receiving node is additionally associated with the first address, and transmitting the packet comprises transmitting the packet to both the first address and the second address and refraining from transmitting the packet to the third address. 3. The method of wherein transmitting the packet comprises transmitting the packet the first address, the second address, and the third address. 4. The method of 5. The method of identifying a parent link aggregation group (PLAG) identified by the first address; and identifying a child link aggregation group (CLAG) that belongs to the PLAG, wherein the second address belongs to the CLAG. 6. The method of identifying a member address that belongs to the PLAG, and identifying the CLAG as being identified by the member address. 7. The method of receiving the packet at the first receiving node; determining, by the first receiving node, that the packet is associated with a link aggregation group; determining, based on at least a portion of the packet, whether the first receiving node should process the packet; and if the first receiving node should not process the packet, discarding the packet. 8. A machine-readable medium encoded with instructions for performing the method of 9. A method of routing packets in a communications network by a network node, the method comprising:
receiving a packet at the network node; determining that the packet is associated with a link aggregation group, wherein the link aggregation group includes a plurality of links; transmitting the packet over a first link of the plurality of links associated with the link aggregation group; and transmitting the packet over a second link of the plurality of links associated with the link aggregation group. 10. The method of 11. The method of a first child link aggregation group of the plurality of child link aggregation groups includes the first link, and a second child link aggregation group of the plurality of child link aggregation groups includes the second link. 12. The method of 13. The method of 14. The method of 15. A machine-readable medium encoded with instructions for performing the method of 16. A method performed by a receiving node for handling a received packet, the method comprising:
receiving a packet at the receiving node; determining that the packet is associated with a link aggregation group; determining, based on at least a portion of the packet, whether the receiving node should process the packet; and if the receiving node should not process the packet, discarding the packet. 17. The method of determining a total number of receiving nodes associated with the link aggregation group; deriving a piece of information from the packet; performing a mathematical operation with respect to the piece of information and the total number of receiving nodes to obtain a result index; determining whether the result index corresponds to the receiving node; and determining that the receiving node should not process the packet based on the result index not corresponding to the receiving node. 18. The method of 19. The method of extracting a set of information from the packet; and computing a hash value based on the set of information. 20. A machine-readable medium encoded with instructions for performing the method of RELATED APPLICATIONS
TECHNICAL FIELD
BACKGROUND
SUMMARY
BRIEF DESCRIPTION OF THE DRAWINGS
DETAILED DESCRIPTION