Abstract:
In a method for managing shared Ethernet adapters in a virtualized computer environment, a computer programmed with a hypervisor program receives a first request from a virtual client to transmit data. In response to receiving the first request, the computer programmed with the hypervisor program selects a first active virtual server from a first plurality of concurrently active virtual servers of the virtualized computer environment. The computer programmed with the hypervisor program copies the data from a memory of the virtual client to a trunk adapter of a first shared Ethernet adapter of the selected first active virtual server.

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to virtualized computer environments, and more specifically to managing Ethernet adapters in a virtualized computer environment. 
     BACKGROUND 
     System virtualization creates several virtual systems within a single physical system. Each virtual system is a logical division or sharing of physical resources, such as a percentage of real processor capacity, an amount of real memory, an amount of storage and a percentage of network I/O capacity. While a specific real processor can in some cases be allocated to a virtual system, the virtual system is not a self-contained computer containing the real processor but is formed with other virtual systems from the same real computer. Virtualization of resources can also be implemented by combining multiple physical resources into shared pools from which virtual resources may be retrieved and shared by multiple entities. In some computer platforms virtualization is implemented by logical partitions of physical resources. 
       FIG. 1  illustrates a known real computer  100  including a failover configuration according to the prior art. Real computer  100  includes a hypervisor or logical partitioning program  112  to logically divide the physical resources of real computer  100  into multiple logical partitions (LPARs)  103   a - e . A Virtual I/O Client (VIOC) system and a Virtual I/O Server (VIOS) system can be formed in separate LPARs in the same or different real computers by installation of I/O client software and I/O server software in the respective LPARs. In the example illustrated in  FIG. 1 , VIOCs  104   a - c  are formed in respective LPARs  103   a - c , and VIOSs  104   d - e  are formed in respective LPARs  103   d - e  in the same real computer  100 . Hypervisor program  112  forms LPARs  103   a - e  from the physical resources of real computer  100 , performs standard operating system functions, and manages the communication between LPARs  103   a - e  via virtual switch  114 . VIOCs  104   a - c  have respective virtual Ethernet adapters  106   a - c  for communicating with one another. VIOSs  104   d - e  have respective virtual Ethernet adapters  106   d - e  for communicating with VIOCs  104   a - c . VIOSs  104   d - e  provide virtualized network resources to VIOCs  104   a - c  via respective shared Ethernet adapters (SEA)  108   a - b  which bridge respective physical Ethernet adapters  110   a - b  to respective virtual Ethernet adapters  106   a - e . Physical Ethernet adapters  110   a - b  connect real computer  100  to external network  120  via respective physical switches  122   a - b . Hypervisor program  112  is a thin layer of software that copies data from the memory of one of VIOCs  104   a - c  to memory of one of VIOSs  104   d - e  when the one of VIOCs  104   a - c  sends a request to transmit data to external network  120 . 
     In a failover configuration, each SEA is given a priority value to determine which SEA, and in turn which VIOS, will serve as the primary and which will serve as the backup. In the example illustrated in  FIG. 1 , VIOS  104   d  serves as a primary VIOS and VIOS  104   e  serves as a failover VIOS. In other words, virtual switch  114  and Remote Direct Memory Access (RDMA) program  116  route data to external network  120  through SEA  108   a  of VIOS  104   d  while SEA  108   b  of VIOS  104   e  remains inactive. When VIOS  104   d  fails, VIOS  104   d  notifies VIOS  104   e  via control channel  124  to become the primary VIOS and receive routed data to transmit to external network  120 . As a result, network bandwidth is not optimally utilized since network bandwidth of VIOS  104   e  is unutilized while in failover mode. Also, transitioning to the failover VIOS  104   e  in the prior art is not seamless when primary VIOS  104   d  fails because transitioning to a failover VIOS requires updating a MAC table with the IP address of the failover VIOS. The update typically causes a delay which results in lost data packets. 
     SUMMARY 
     In a first embodiment of the present invention, there is a method for managing shared Ethernet adapters in a virtualized computer environment. A computer programmed with a hypervisor program receives a first request from a virtual client to transmit data. In response to receiving the first request, the computer programmed with the hypervisor program selects a first virtual server from a first plurality of concurrently active virtual servers of the virtualized computer environment. The computer programmed with the hypervisor program copies the data from a memory of the virtual client to a trunk adapter of a first shared Ethernet adapter program of the selected first active virtual server. 
     In a second embodiment of the present invention, there is a computer program product for managing shared Ethernet adapters in a virtualized computer environment. The computer program product comprises one or more computer-readable tangible storage devices and program instructions stored on at least one of the one or more storage devices. The program instructions comprise first program instructions to receive a request from a virtual client to transmit data. The program instructions further comprise second program instructions to select a first active virtual server from a first plurality of concurrently active virtual servers of the virtualized computer environment. The program instructions further comprise third program instructions to copy the data from a memory of the virtual client to a trunk adapter of a first shared Ethernet adapter of the selected first active virtual server. 
     In a third embodiment of the present invention, there is a computer system for managing shared Ethernet adapters in a virtualized computer environment. The computer system comprises one or more processors, one or more computer-readable memories, one or more computer-readable tangible storage devices, and program instructions stored on at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories. The program instructions comprise first program instructions to receive a request from a virtual client to transmit data. The program instructions further comprise second program instructions to select a first active virtual server from a first plurality of concurrently active virtual servers of the virtualized computer environment. The program instructions further comprise third program instructions to copy the data from a memory of the virtual client to a trunk adapter of a first shared Ethernet adapter of the selected first active virtual server. 
    
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         FIG. 1  illustrates a real computer including a failover configuration according to the prior art. 
         FIG. 2  illustrates a computer system for aggregating shared Ethernet adapters in a virtualized computer environment, according to one embodiment of the present invention. 
         FIG. 3  illustrates a flow chart of aggregating shared Ethernet adapters in the virtualized computer environment of  FIG. 2 , according to one embodiment of the present invention. 
         FIG. 4  illustrates a flow chart further detailing aggregating shared Ethernet adapters in the virtualized computer environment of  FIG. 2 , according to another embodiment of the present invention. 
         FIG. 5  illustrates internal and external real components of the computer of  FIG. 2 . 
     
    
    
     DETAILED DESCRIPTION 
     The present invention will now be described in detail with reference to the Figures.  FIG. 2  illustrates a real computer generally designated  200  for aggregating shared Ethernet adapters in a virtualized computer environment, according to one embodiment of the present invention. Real computer  200  includes a hypervisor or logical partitioning program  212  to logically divide the real resources (i.e., processors, RAM, disk storage, I/O, etc.) of real computer  200  into multiple logical partitions (LPARs)  203   a - e . In the illustrated example, Virtual I/O Clients (VIOCs)  204   a - c  are formed in respective LPARs  203   a - c  by installation of I/O client programs in respective LPARs  203   a - c , and Virtual I/O Servers (VIOS)  204   d - e  are formed in respective LPARs  203   d - e  by installation of I/O server programs in respective LPARs  203   d - e . One of skill in the art will appreciate that, in other embodiments, there can be a different number of LPARs in real computer  200 , each formed into a VIOC or a VIOS. VIOCs  204   a - c  include respective virtual Ethernet adapters  206   a - c  for communicating with one another. VIOCs  204   d - e  also include respective virtual Ethernet Adapters  206   d - e  for communicating with respective VIOCs  204   a - c . Shared Ethernet adapters (SEA)  208   a - b  interface to respective physical Ethernet adapters  836   a - b  which connect real computer  200  and respective VIOSs  204   d - e  to external network  220  via respective physical switches  222   a - b.    
     Hypervisor program  212  forms LPARs  203   a - e  from the real resources of real computer  200 , performs standard operating system functions, and manages requests to transmit data packets between LPARs  203   a - e  and external network  220 . Hypervisor program  212  has a virtual switch  214  for routing data transmit requests from a sending VIOC, e.g., VIOC  204   a , to one of VIOSs  204   d - e  via one of SEAs  208   a - b . Hypervisor program  212  has a Remote Data Memory Access (RDMA) program  216  to directly copy data packets, associated with the request, from a memory of the sending VIOC to a memory of one of VIOSs  204   d - e.    
     In the example illustrated in  FIG. 2 , both SEAs  208   a - b  are simultaneously active. In other words, VIOS  204   d  is available to transmit data packets to external network  220  upon receiving routed data transmit requests from virtual switch  214  via SEA  208   a , and VIOS  204   e  is available to transmit data packets to external network  220  upon receiving routed data transmit requests from virtual switch  214  via SEA  208   b . Also, VIOSs  204   d - e  are able to receive data packets from external network  220 . Although  FIG. 2  illustrates real computer  200  having two simultaneously active VIOSs  204   d - e , it should be understood that real computer  200  may include more than two VIOSs, any combination of which may be simultaneously active. 
     Hypervisor program  212  has a packet distribution program  218  to select one of VIOSs  204   d - e  to transmit data packets to external network  220 . Virtual switch  214  communicates with packet distribution program  218  to determine to which of VIOSs  204   d - e  virtual switch  214  should route data packets. In one example embodiment, if more than one of VIOSs  204   d - e  are active, packet distribution program  218  can distribute packets among both active VIOSs  204   d - e  without regard for priorities of VIOSs  204   d - e.    
     In an example embodiment, if more than one of VIOSs  204   d - e  are active, packet distribution program  218  uses a user-configurable algorithm to select one of VIOSs  204   d - e  to which virtual switch  214  should route data packets, such as a round robin algorithm, a hash-based algorithm, or other similar algorithm. A round robin algorithm selects a VIOS identified at a position in a list identifying active VIOSs, and then either increments the position in the list if the position is not at the end of the list, or sets the position to the beginning of the list if the position is at the end of the list. A hash-based algorithm calculates a hash value by applying a hash function based on the source and destination MAC address of a received data transmit request, and selects a VIOS identified in a position represented by the hash value in a hash table containing a list identifying available VIOSs. The algorithm used by the packet distribution program  218  is configurable through a hardware management console as later illustrated in  FIG. 5 . 
     Hypervisor program  212  has a switch table  224  that aggregates SEAs  208   a - b  by storing information about the states of respective VIOSs  204   d - e , each state indicating whether a VIOS is active or not. Packet distribution program  218  accesses switch table  224  to determine which of VIOSs  204   d - e  are available for transmitting data packets. Switch table  224  may be predefined and later adjusted by a network administrator. For example, a network administrator may initially activate both VIOS  204   d  and VIOS  204   e . A network administrator may later choose to temporarily disable VIOS  204   d  to, for example, permit a software update, and therefore update switch table  224  accordingly. 
     Packet distribution program  218  may also update switch table  224  in real time. For example, if VIOS  204   d  fails or if physical switch  222   a  fails, virtual switch  214  will ordinarily detect the failure and automatically instruct packet distribution program  218  to change the state of VIOS  204   d  in switch table  224  to inactive. Thereafter, packet distribution program  218  will avoid selecting VIOS  204   d  for transmitting data packets to external network  220  until switch table  224  is updated to indicate that VIOS  204   d  has become active. Packet distribution program  218  will instead select the active VIOS  204   e  for transmitting data packets to external network  220 . Once VIOS  204   d  becomes active again, packet distribution program  218  will resume routing requests to transmit data to VIOS  204   d  according to the user-configurable algorithm. 
     Additionally, when a physical network associated with SEA  208   a  fails, in which case SEA  208   a  becomes non-functional, virtual switch  214  will temporarily disable a trunk adapter corresponding to SEA  208   a . Since the trunk adapter acts as a virtual port in hypervisor program  212 &#39;s virtual switch  214 , a temporarily disabled trunk adapter indicates that the trunk is unusable. This allows hypervisor program  212  to ignore the disabled virtual port and continue using another SEA, such as SEA  208   b , configured on another VIOS, such as VIOS  204   e.    
     Thus, virtual switch  214  seamlessly re-routes data transmit requests to an active VIOS when another VIOS becomes inactive. Additionally, virtual switch  214  efficiently utilizes network bandwidth of multiple VIOSs while maintaining failover capabilities by intelligently routing data transmit requests to appropriate VIOSs. 
       FIG. 3  illustrates a flow chart of aggregating shared Ethernet adapters in the virtualized computer environment of  FIG. 2 , according to one embodiment of the present invention. At step  310 , virtual switch  214  of hypervisor program  212  receives a request from a sending VIOC  204   a  to transmit a data packet to external network  220 . At step  320 , packet distribution program  218  determines which of VIOSs  204   d - e  are active by accessing switch table  224 . Switch table  224  contains information about the status, e.g., active or inactive, of each of VIOSs  204   d - e . Switch table  224  may be predefined and later adjusted by a network administrator. Virtual switch  214  may also utilize packet distribution program  218  to update the status of VIOSs  204   d - e  in switch table  224  in real time. 
     At step  330 , packet distribution program  218  selects one of the active VIOSs based on a user-configurable algorithm and notifies virtual switch  214  of the selected active VIOS. The user-configurable algorithm can be, for example, a round-robin algorithm, a hash-based algorithm, or other similar algorithm to select an active VIOS. The algorithm is pre-configured through a hardware management console. At step  340 , virtual switch  214  routes the request to transmit data to the selected active VIOS, e.g., VIOS  204   d , via the SEA connecting the selected VIOS, e.g., SEA  208   a , to external network  220 . Virtual switch  214  routes data by copying data from memory of sending VIOC  204   a  to a trunk adapter of the selected active VIOS. 
       FIG. 4  illustrates a flow chart further detailing aggregating shared Ethernet adapters in the virtualized computer environment of  FIG. 2 , according to another embodiment of the present invention. It should be understood that in the example illustrated in  FIG. 4 , both VIOS  204   d  and VIOS  204   e  are initially active. At step  410 , packet distribution program  218  of hypervisor program  212  receives notice of VIOS  204   d  becoming inactive. VIOS  204   d  may become inactive as a result of VIOS  204   d  or associated physical switch  222   a  failing. In this example, virtual switch  214  sends the notice to packet distribution program  218  in response to detecting a failed VIOS  204   d  or failed physical switch  222   a . VIOS  204   d  may also become inactive as a result of a network administrator temporarily disabling VIOS  204   d  to, for example, allow for a software update. Thus, since packet distribution program  218  of hypervisor program  212  is able to detect temporarily disabled or failed VIOS  204   d , packet distribution program  218  is able to adjust, in real time, how packet distribution program  218  routes packets by avoiding routing packets to SEA  208   a  associated with failed VIOS  204   d . At step  420 , packet distribution program  218  updates switch table  224  to indicate that VIOS  204   d , and associated SEA  208   a , is inactive. 
     At step  430 , packet distribution program  218  accesses switch table  224  to determine the active VIOSs and selects an active VIOS  204   e  based on a user-configurable algorithm. The user-configurable algorithm can be, for example, a round-robin algorithm, a hash-based algorithm, or other similar algorithm to select an active VIOS. At step  440 , virtual switch  214  re-routes data packets received from VIOCs to selected active VIOS  204   e . Virtual switch  214  re-routes data packets by copying data from memory of sending VIOC  204   a  to a trunk adapter of selected alternate VIOS  204   e . VIOS  204   e  then sends the packets to external network  220 . 
       FIG. 5  illustrates internal and external real components of computer  200 . Computer  200  includes internal components  800  and external components  900 . Internal components  800  include one or more processors  820 , one or more computer-readable RAMs  822  and one or more computer-readable ROMs  824  on one or more buses  826 , and one or more guest operating systems  828  and one or more computer-readable tangible storage devices  830 . The guest operating systems  828  execute in respective VIOCs and VIOSs to control execution of applications in the respective VIOCs and VIOSs, and are separate from hypervisor program  212 . The one or more operating systems  828 , hypervisor program  212 , and packet distribution program  218  are stored on one or more of the computer-readable tangible storage devices  830  for execution by one or more of the processors  820  via one or more of the RAMs  822  (which typically include cache memory). Switch table  224  is also stored on one or more of the computer-readable tangible storage devices  830 . In the embodiment illustrated in  FIG. 5 , each of the computer-readable tangible storage devices  830  is a magnetic disk storage device of an internal hard drive. Alternatively, each of the computer-readable tangible storage devices  830  is a semiconductor storage device such as ROM, EPROM, flash memory or any other computer-readable tangible storage device that can store a computer program and digital information. 
     Internal components  800  also include a R/W drive or interface  832  to read from and write to one or more portable computer-readable tangible storage devices  936  such as a CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk or semiconductor storage device. The hypervisor program  212  and packet distribution program  218  can be stored on one or more of the portable computer-readable tangible storage devices  936 , read via R/W drive or interface  832  and loaded into one or more computer-readable tangible storage devices  830 . 
     Internal components  800  also include a network adapter or interface  836  such as a network adapter card. The hypervisor program  212  and packet distribution program  218  can be downloaded to computer  200  from an external computer via a network (for example, the Internet, a local area network, or other wide area network) and network adapter or interface  836 . From the network adapter or interface  836 , the hypervisor program  212  and packet distribution program  218  are loaded into one or more computer-readable tangible storage devices  830 . The network may comprise copper wires, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. 
     External components  900  include a computer display monitor  920 , a keyboard  930 , and a computer mouse  934 . A hardware management console for configuring packet distribution program  218 , including the user-configurable algorithm used by packet distribution program  218 , may comprise a combination of computer display  920 , keyboard  930 , and computer mouse  934 . Internal components  800  also include device drivers  840  to interface to computer display monitor  920 , keyboard  930 , and computer mouse  934 . The device drivers  840 , R/W drive or interface  832 , and network adapter or interface  836  comprise hardware and software (stored in one or more computer-readable tangible storage devices  830  and/or one or more computer-readable ROMs  824 ). 
     Hypervisor program  212  and packet distribution program  218  can be written in various programming languages including low-level, high-level, object-oriented or non object-oriented languages. Alternatively, the functions of hypervisor program  212 , and packet distribution program  218  can be implemented in whole or in part by computer circuits and other hardware (not shown). 
     The description above has been presented for illustration purposes only. It is not intended to be an exhaustive description of the possible embodiments. One of ordinary skill in the art will understand that other combinations and embodiments are possible.