Patent Publication Number: US-6658018-B1

Title: Method and system of providing advanced teaming functionality capable of utilizing heterogeneous adapters to improve utility and performance

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention generally relates to the field of data communication networks. More particularly, the present invention relates to a method and system of providing advanced teaming functionality, capable of accommodating heterogeneous adapters to improve the utility and performance of a fault-tolerant network adapter team. 
     2. Description of Related Art 
     Most computer communication networks designate at least one computer as its network server. Servers operate as centralized repositories for all the applications and work-files available on the network and provide an expedient way to interconnect and execute programs that are distributed across a network. Servers are also responsible for managing the access and flow of information on the network. As a result, enterprises are increasingly relying on such networks to support both routine and business-critical applications. 
     Such networks, however, are not without weaknesses. For example, as illustrated in the lower portion of FIG. 1 (Prior Art), a particularly susceptible element in all networks is the network link  191 A to the server  100 A. The network link  191 A is physically coupled to an adapter  101 A (i.e., network interface card) installed within the server  100 A. As such, all data traveling to, and from, the network must pass through the adapter  101 A. A failing adapter  101 A will, therefore, compromise the network server  100 A connectivity and ultimately result in the loss of productivity. 
     In an effort to guard against such vulnerability, fault-tolerant adapter teams  105 , as shown in the upper portion of FIG. 1, have been developed which rely on redundancy for their restorative capabilities. These adapter teams  105 , typically comprise a set of M adapters  101 ,  101 B,  101 C, . . .  101 M along with corresponding team software, and can be manually configured, by the network administrator, to designate one of the adapters as “primary”  101  and the remaining adapters as “secondary adapters”  101 B,  101 C, . . .  101 M. The primary adapter  101  is configured to support a primary connection  191  to the network and embodies the identity of the adapter team  105  by having its Media Access Control (MAC) address serve as the network adapter  101  address. As such, all communications destined for the server  100  shall be directed towards the primary adapter. 
     Meanwhile, the secondary adapters  101 B,  101 C, . . .  101 M serve as back-up connections. The adapter team  105  software contains one or more intermediate drivers  185  that monitor all network connections  191 ,  191 B,  191 C . . .  191 M and, in the event of primary adapter  101  failure, the software provides “fail-over” capability by defaulting to a pre-selected secondary adapter (i.e.,  101 B) as the alternate primary. The pre-selected secondary adapter is the secondary adapter in the adapter team  105  determined to be most capable. Traffic is subsequently re-routed to the alternate primary adapter, while still utilizing the original primary (or team)  101  address. Thus, the pre-selected secondary adapter  101 B automatically assumes ownership of all data going to the server  100 , without the need for human intervention. In some instances, the team&#39;s software also provides for automatic “restore-back” capabilities, which allows a replacement adapter, positioned in a team slot previously occupied by a failing primary adapter  101 , to be re-instituted as the primary if the software senses that the adapter is fully operational. In this manner, the redundant set of adapters  101 ,  101 B,  101 C . . .  101 M provides network link recovery that is generally transparent to applications and users. 
     It is also possible to capitalize on the existence of multiple adapters in a team to increase the effective system bandwidth. For example, Adaptive Load Balancing techniques make use of the team&#39;s M adapters  101 ,  101 B,  101 C, . . .  101 M to increase performance by balancing the transmission of data from the server  100  to the network. In such a configuration, the team&#39;s address, which as stated above, is the primary adapter&#39;s address, is advertised to the network. Accordingly, all server-bound traffic is received by the primary adapter  101 . The remaining M- 1  team adapters (referred to above as secondary adapters)  101 B,  101 C, . . .  101 M do not receive any traffic originated by the client. However, the M- 1  team adapters  101 B,  101 C,. . .  101 M, as well as the primary adapter  101 , do transmit data from the server  100  to the network. The transmission of data is achieved by ratably allocating the data across the primary adapter  101  and remaining M- 1  team adapters  101 B,  101 C, . . .  101 M. This effectively aggregates the outgoing server bandwidth, thereby increasing network throughput and mitigating bottlenecking episodes. 
     Although conventional fault-tolerant adapter teams  105  are capable of providing fast and reliable recovery from adapter failures, a high premium is often paid in both hardware cost and network efficiency. One reason for such a high premium in conventional teams  105  arises from the need to have adapters of the same type or speed to ensure a seamless fail-over transition. This significantly increases the cost of system maintenance by forcing the purchase of similar adapters and rendering dissimilar adapters unusable. This also limits the choice of adapters that can be utilized in fault-tolerant teams  105  or Adaptive Load Balancing teams  105 . Such limitations can be particularly costly when changes in the server  100  configuration precipitates adapter upgrades, rendering all the inventoried adapters obsolete. 
     Moreover, conventional symmetric fault-tolerant teams  105  require the manual designation of the primary adapter  101 . These conventional teams  105  are, therefore, incapable of either automatically initializing the primary adapter  101  or doing so in an intelligent and efficient manner. 
     Furthermore, Adaptive Load Balancing teams  105  capable of accommodating dissimilar adapters, cannot select, “on the fly”, the adapter with the next-best performance profile that optimizes network throughput. Because the incoming data is solely routed to the primary adapter  101  and the outgoing data is proportionately balanced across all M team adapters  101 ,  101 B,  101 C, . . .  101 M, a non-optimal secondary adapter  101 B selection can compromise the efficiency of a network. 
     In addition, some advanced servers  100  possess hot-plug capabilities, allowing network administrators to swap components without powering down the server  100 . With respect to hot-plug-compatible fault-tolerant teams  105 , hot-plugging is achieved by electrically isolating a port in the team while maintaining power to the rest of the team ports. Conventional hot-plugging adapter teams  105 , however, only permit the failed adapter to be replaced by an identical adapter. This further limits the choice of adapters available for fault-tolerant teams  105 . 
     What is needed is a system and method that can overcome the limitations of conventional systems by providing advanced teaming functionality which is capable of supporting both, similar and dissimilar network adapters, to improve the utility and performance of fault-tolerant adapter teams. 
     SUMMARY 
     Systems and methods consistent with the principles of the present invention address the need identified above and overcomes the prior art limitations by presenting a system and method that provides advanced teaming functionality which is capable of supporting both similar and dissimilar network adapters, to improve the utility and performance of fault-tolerant adapter teams. 
     Accordingly, a system and method, consistent with the principles of the present invention as embodied and broadly described herein, includes a team of multiple network adapters such that the team is capable of concurrently supporting network adapters of similar and dissimilar types. The capabilities of each of the network adapters in the team are dynamically assessed and based on the capabilities of the adapters, a primary adapter is selected. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The accompanying drawings, which are incorporated in and constitute a part of this Specification, illustrate an embodiment of the invention and, together with the description, explain the objects, advantages, and principles of the invention. In the drawings: 
     FIG. 1 (Prior Art) is a system level block diagram various components of a computer network server interfacing with a data communications network, including network adapters and fault tolerant teams. 
     FIG. 2 is a high-level flow diagram depicting the integration of the various routines comprising an embodiment of the present invention. 
     FIGS. 3,  4 ,  5 , and  6  are high-level flow diagrams depicting the operation of various routines comprising an embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION 
     The following detailed description refers to the accompanying drawings that illustrate embodiments of the present invention. Other embodiments are possible and modifications may be made to the embodiments without departing from the spirit and scope of the invention. Therefore, the following detailed description is not meant to limit the invention. Rather the scope of the invention is defined by the appended claims. 
     It will be apparent to one of ordinary skill in the art that the embodiments as described below may be implemented in many different embodiments of software, firmware, and hardware in the entities illustrated in the figures. The actual software code or specialized control hardware used to implement the present invention is not limiting of the present invention. Thus, the operation and behavior of the embodiments will be described without specific reference to the actual software code or specialized hardware components. The absence of such specific references is feasible because it is clearly understood that artisans of ordinary skill would be able to design software and control hardware to implement the embodiments of the present invention based on the description herein. 
     An embodiment of the present invention is illustrated by the high-level flow diagram of FIG. 2, which integrates the various routines comprising the method of the present invention. The embodiment includes a primary selection routine  300 , an adapter capability determination routine  400 , an alternative primary adapter selection routine  500  and an adapter restoration routine  600 . These routines may be stored in any storage device, such as, for example, a computer system main (non-volatile) memory  170 , an optical disk  125 , magnetic tape or disk  120 , or on the memory, if any, incorporated on the network adapters. Furthermore, these routines may be programmed when the system is manufactured or via a computer-readable medium at a later date. Such a medium may include any of the forms listed above with respect to storage devices and may further include, for example, a carrier wave modulated, or otherwise manipulated, to convey instructions that can be read, demodulated/decoded and executed by a computer. 
     The first part of this embodiment, as shown in FIG. 3, is the primary selection routine  300 , which designates one of the team adapters as an initial primary adapter, based on the adapters&#39; capabilities. The selection routine  300  is triggered at the creation of the network adapter team and, as illustrated in block B 310 , begins with the first adapter in the team. In block B 320 , the selection routine  300  initializes a team capability value to 0. The team capability value is a figure of merit indicating the value of the adapter in the team with the highest priority. In block B 330 , routine  300  queries the adapter capability determination routine  400  for the current adapter. The adapter capability determination routine  400  then returns an adapter capability value, corresponding to the current adapter. As explained in more detail with respect to routine  400 , the adapter capability value reflects the adapter&#39;s priority by relating to the adapter&#39;s properties and capabilities. 
     In block B 340 , routine  300  compares the current adapter capability value to the team (i.e., maximum) capability value. If the current adapter capability value is greater than the team capability value, then in block B 350 , the team adapter ID, which corresponds to the primary adapter ID, is set to the current adapter ID. In block B 360 , the team capability value is set to the current adapter capability value, which essentially designates the most qualified adapter as the primary adapter. If the current adapter capability value is not greater than the team capability value, routine  300  progresses to block B 370 . 
     In block B 370 , the routine  300  determines whether the current adapter is the last adapter in the team to be queried. If the current adapter is not the last adapter then routine  300  loops back to block B 380  in order to query the next team adapter in sequence. Routine  300  continues blocks B 330 -B 360  until all team adapters have been queried, and if the current adapter is the last team adapter, routine  300  terminates in block B 390 . As such, the last adapter in the team having its adapter ID designated as the team adapter ID, is the selected primary adapter. 
     The second part of this embodiment, as shown in FIG. 4, is the adapter capability determination routine  400  which, as indicated above, assigns an adapter capability value for each adapter in the team, based on the adapter&#39;s capabilities and position. 
     The adapter capability value is used by routine  300  to select a primary adapter. However, for adapters in Adaptive Load Balancing teams, the adapter capability value may be used, for example, to select the most qualified adapter capable of receiving data traffic from the network. Such usage can be tailored to suit various Adaptive Load Balancing team configurations and will promote the optimization of load balancing features. 
     The adapter capability value is a numeric value, calculated by adding various weighting factors corresponding to an adapter&#39;s attributes. The adapter capability value is then used to rank each adapter in a fault-tolerant team. Because these weighting factors are relative values, artisans of ordinary skill will recognize that these factors must be optimized for each system. To this end, the factors indicated herein are represented in generic terms. 
     The capability determination routine  400  begins by initializing the adapter capability value for a particular adapter, as shown in block B 415 . In block B 420 , the capability determination routine  400  then determines the adapter transmission rate (i.e., speed). If the adapter speed is 10 Mbps, routine  400  increments the adapter capability value by a predetermined amount X, as shown in block B 425 . If the adapter speed is 100 Mbps, routine  400  increments the adapter capability value by a predetermined amount Y, as indicated in block B 430 . If, as in block B 435 , the adapter speed is 1000 Mbps (i.e., 1 Gbps), routine  400  then advances to block B 445  to determine whether the microprocessor speed of the server is less than a predetermined amount θ, as depicted in B 445 . If so, routine  400  increments the adapter capability value by a certain amount α, as indicated in block B 440 ; if not, routine  400  increments the adapter capability value by a different amount β, as indicated in block B 450 . This allows routine  400  to consider, and calculate, the degree to which the server microprocessor can accommodate a 1 Gbps transmission rate. 
     In block B 455 , routine  400  determines whether the adapter is configured for full duplex data transmission. If so, routine  400  increments the adapter capability value by a predetermined amount A, as shown in block B 460 . If the adapter is not configured for full duplex, routine  400  advances to block B 465 . 
     In block B 465 , routine  400  determines whether the adapter has off-load capabilities. Off-load capabilities are possible through adapter-enhanced features, such as on-board adapter processors. On-board processors increase server efficiency by enabling the adapter to perform certain tasks, thereby relieving the server microprocessor (i.e., off-loading) from such duties. These off-load capabilities include security features and speed enhancements. If the adapter does contain off-load capabilities, routine  400  increments the adapter capability value by a predetermined amount B, as indicated in block B 470 . If the adapter does not contain off-load capabilities, routine  400  advances to block B 475 . 
     In block B 475 , routine  400  determines whether the adapter has a reliability factor less than a predefined amount, δ. The reliability factor is based on statistics collected by the server and can be defined in accordance with various criteria. Such criteria may include, the number of times and frequency that a particular adapter failed, the number of transmit under-run associated with a particular adapter, and the number of receive over-run errors associated with a particular adapter. If the adapter has a reliability factor less than 6, routine  400  decrements the adapter capability value by a predetermined amount, C, as depicted in block B 480 . If the adapter does have a reliability factor greater than 6, the adapter capability determination routine  400  terminates, as shown in block B 485 . 
     FIG. 5 illustrates the third part of this embodiment, the alternate primary adapter selection routine  500 , which executes upon the failure of a primary adapter in the team. The alternate primary adapter selection routine  500  selects an alternate primary adapter, which is automatically switched to, in the event that the primary has failed. As shown in block B 515 , routine  500  first determines whether the failing adapter is the primary adapter. If it is not the primary adapter, routine  500  terminates, as shown in block B 560 . If it is the primary adapter, routine  500  advances to block B 520 . 
     In block B 520 , routine  500  initializes the team capability value to 0. In block B 525 , routine  500  begins by pointing to the first adapter in the team. In block B 530 , routine  500  compares the current adapter ID to the maximum adapter ID by determining both, whether the current adapter is operational and whether it has a capability value greater than the team capability value. If the current adapter fails to satisfy any of the conditions, routine  500  advances to block B 545 . If the current adapter is operational and contains a capability value greater than the team capability value, routine  500  progresses to blocks B 535  and B 540 , which respectively set the maximum adapter ID and the team capability value equal to the current adapter ID and capability value. By doing so, blocks B 535  and B 540  effectively select the alternate primary adapter. 
     In block B 545 , routine  500  determines whether all the adapters have been subjected to the comparison block B 530 . If not, routine  500  loops back to block  530  in order to subject the next team adapter in sequence to the comparison. Routine  500  continues blocks B 535 -B 545  until all team adapters have been compared, and if the current adapter is the last team adapter then routine  500  advances to block B 550 . 
     In block B 555 , routine  500  marks the primary adapter as disabled and provides some notification to the network administrator of the primary adapter failure. After this marking and notification, block  560  enables the selected alternate primary adapter and then routine  500  terminates, as indicated in block B 565 . 
     FIG. 6 illustrates the last part of this embodiment, the adapter restoration routine  600 , which is invoked after a replacement adapter is substituted for any failed adapter or a failed adapter is restored to on-line service by, for example, replacing the network cable to the adapter. The replacement adapter may be any adapter, including the failed primary that has been repaired, reconditioned, or merely reconnected. The adapter restoration routine  600  evaluates the replacement adapter and automatically restores it as the new primary adapter if its attributes are greater than any of the remaining adapters in the team, including the alternate primary adapter selected by routine  500 . Upon replacing the adapter, the restoration routine  600 , in block B 620 , queries the adapter capability determination routine  400  for the replacement adapter. The adapter capability determination routine  400  then returns an adapter capability value, corresponding to the replacement adapter. 
     In block B 630 , routine  600  determines whether the replacement adapter capability value is greater than the current team capability value. If not, routine  600  advances to the termination block of B 670 . If the replacement adapter possesses an adapter capability value greater than the current team capability value, routine  600  progresses to block B 640 , which sets the maximum adapter ID equal to the replacement adapter ID. Subsequently, in block B 650 , routine  600  sets the team capability value equal to the replacement adapter capability value. By doing so, blocks B 640  and B 650  effectively restore the replacement adapter as the new primary adapter. Block B 660 , then enables the replacement adapter and enables the replaced adapter as a secondary adapter. The restoration routine  600  is subsequently terminated, as per block B 670 . As stated above, routine  600  may be used to activate any adapter that replaces a failing adapter, and will designate the replacement adapter as the new primary adapter, if it is assessed as the most qualified adapter in the team. 
     It is important to note that the foregoing description of embodiments of the present invention provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible consistent with the above teachings or may be acquired from practice of the invention. The scope of the invention is defined by the claims and their equivalents.