Patent Publication Number: US-2009228884-A1

Title: Network interface engine

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This patent application claims the benefit of U.S. provisional patent application Ser. No. 61/034,096, Method and Apparatus for Virtualization, filed Mar. 5, 2008, the entirety of which is incorporated herein by this reference thereto. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Technical Field 
     This invention relates generally to the field of virtualization environments. More specifically, this invention relates to an intermediate between a pre-boot environment, an operating system with full support of networking hardware, and a hypervisor. 
     2. Description of the Related Art 
     Computers contain an operating system (OS) that serves as an interface between hardware and applications running on the computer. To put it simply, the OS manages the computer resources for the applications. Traditional operating systems, such as Microsoft® Windows, are slow to load. Furthermore, these operating systems are written for native hardware architecture and are incompatible with computer programs that were written for other architectures. As a result, computer programs were developed to resolve these incompatibilities. 
     An operating system that does not directly interact with computer hardware is referred to as a virtual machine because its hardware interface is represented entirely in software, or “virtual.” 
     A traditional operating system accesses networks, e.g. the Internet by using a driver to interact with a network interface controller, which uses both a physical layer and a data link layer for accessing physical networks. A physical network can be a local area network (LAN), e.g. Ethernet, a wireless local area network (WLAN), e.g. Wifi, or wireless wide area network (WWAN), e.g. 2G, 3G, 4G. 
     SUMMARY OF THE INVENTION 
     In the context of this patent application, a pre-boot environment is defined as a user-accessible software environment that is available before the host OS boots. The host OS is commonly a full-featured OS such as Microsoft® Windows. The pre-boot environment may be a Basic Input/Output System (BIOS)-based application, a Unified Extensible Firmware Interface (UEFI)-based application, an embedded OS along with applications, or a small-footprint Linux OS along with applications. 
     Pre-boot environments such as BIOS, UEFI, or an embedded OS contain very limited support for network interfaces because device drivers are difficult and time consuming to generate. On the other hand, device drivers for various network interfaces are readily available on an OS such as Linux, covering network media such as LAN, WLAN, and WWAN. Via virtualization, the pre-boot environment can gain access to a wide range of network interfaces without having its own device drivers, by leveraging an OS with broad networking hardware support. The OS with the networking hardware support directly interfaces to the networking hardware chipsets and provides a virtual network interface to the pre-boot environment. 
     In one embodiment, a network interface engine serves as an intermediary between the pre-boot environment and the network interface hardware (LAN, WLAN, or WWAN chipsets). In one embodiment, the network interface engine comprises the Linux OS and, therefore, uses Linux network device drivers to interact with networking hardware. In one embodiment, the network interface engine functions as an intermediary for a pre-boot environment until other operating systems are launched. In another embodiment, the network interface engine is used by the co-resident pre-boot environment and other operating systems in the virtualized environment. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram that illustrates a client for running a virtualized environment according to one embodiment of the invention; 
         FIG. 2  is a block diagram that illustrates a system for enabling a pre-boot environment to access the physical networking hardware via a virtual network interface provided by the network interface engine, according to one embodiment of the invention; 
         FIG. 3  is a block diagram that illustrates the components for booting for a virtualized environment according to one embodiment of the invention; and 
         FIG. 4  is a flow diagram that illustrates the booting process implemented by the components illustrated in  FIG. 3  according to one embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In one embodiment, the invention comprises a method and an apparatus for using virtualization to enable universal network access on a pre-boot environment that typically has very limited networking hardware support. 
     Hardware 
       FIG. 1  is a block diagram that illustrates the hardware partitioning for a virtualized environment according to one embodiment of the invention. The client  100  comprises a computing platform configured to act as a client device, e.g. a computer, a digital media player, a personal digital assistant, an Internet appliance, etc. The client  100  may include a number of external or internal devices, e.g. a mouse, a keyboard, a display device, etc. 
     The client  100  includes a computer-readable storage medium, i.e. memory  110 . The memory includes, but is not limited to, for example random access memory (RAM), an electronic, optical, magnetic, or other storage or transmission device capable of coupling to a processor, e.g. flash drive, CD-ROM, DVD, magnetic disk, memory chip, ROM, etc. The memory  110  is coupled to a processor  120 , which executes computer-executable program code stored in the memory  110 . In a client  100  that runs in a virtualized environment, the memory and other hardware are logically partitioned  130  to support, for example, different operating systems. Each partition executes in a separate memory space. In one embodiment of the invention, memory and hardware are virtualized and shared. 
     A hypervisor  140 , which is also known as a virtual machine monitor, allocates system resources to provide each OS with the appearance of having its own partitioned memory  130 , processor, and hardware or firmware resources. The hypervisor  140  is illustrated as being within the memory  110 , however, in another embodiment, the hypervisor  140  is implemented within hardware or firmware. 
     System Components 
       FIG. 2  is a block diagram that illustrates a system for enabling a pre-boot environment to access the physical network via a virtual network interface, according to one embodiment of the invention. 
     Computer hardware is represented by system hardware  205  and networking hardware  210  (Ethernet controllers, Wifi chipsets, 3G modules, etc.). The hypervisor  140  manages hardware access by the virtual machines. There are two virtual machines shown: a pre-boot environment  225  and a network interface engine  230 . The network interface engine  230  is responsible for physical network access; therefore, the hypervisor  140  grants it direct access to networking hardware  210 . The pre-boot environment  225  is the software environment that a user can interact with via input devices and a display; therefore, the hypervisor  140  grants it access to most of the system hardware  205 . 
     The hypervisor  140  helps to establish a virtual network interface  220  between the two virtual machines. The network interface engine  230  makes its network connectivity available to the pre-boot environment  225  via the virtual network interface  220 . This enables the pre-boot environment  225  to implement a single network interface that matches the virtual network interface  220 , yet it can effectively make use of a wide range of network hardware interfaces (LAN, WLAN, WWAN chipsets by different manufacturers) by virtue of the diverse driver support in the network interface engine  230 . 
     When the pre-boot environment  225  needs to access the network  235 , it uses the standard interface on the virtual network interface  220 . In one embodiment, the virtual network interface  220  is a software implemented communication channel. In another embodiment, the virtual network interface  220  is an emulated standard Ethernet controller. The network interface engine  230  in turn bridges the access to its networking hardware device drivers, which communicate directly with the networking hardware  210  to get onto the network  235 . 
     The virtual network interface  220  can be implemented as an application programming interface (API) or a socket-based interface that establishes a communication channel between the pre-boot environment  225  and the network interface engine  230  with the help of the hypervisor  140 . In one embodiment, the virtual network interface  220  is implemented as an emulation of a standard, well-known Ethernet controller interface. In this case, the pre-boot environment  225  only needs to implement one network device driver. Through the network interface engine  230 , the single network device driver can access a broad range of network hardware interfaces. 
     Parameters of the network interface (e.g. Wifi access point IDs, Wifi access point passwords, 3G login, etc.) can be configured by the user via a simple application in the pre-boot environment  225  or with the network interface engine  230 . These parameters can be stored in a persistent storage area accessible by the network interface engine  230 . 
     Flow Chart 
       FIG. 3  is a block diagram that illustrates the booting process for a virtualized environment, according to one embodiment of the invention.  FIG. 4  is a flow diagram that illustrates the steps for booting a virtualized environment using the components in  FIG. 3  according to one embodiment of the invention. 
     When the system is first turned on, system firmware  305  executes  400 . System firmware  305  is usually either BIOS or UEFI. System firmware  305  hands control over to the bootloader  308 , which then loads  405  the hypervisor  140 . The hypervisor  140  first loads  410  the pre-boot environment  225 , which can be a BIOS application, UEFI application, or an embedded OS. The pre-boot environment  225  presents  415  the user interface. The user interface can include various static or network-based applications (e.g. stock ticker, weather, e-mails, calendar events, RSS feeds, clock, photos, etc.). 
     In parallel, the hypervisor  140  can load  420  the network interface engine  230 . When the network interface engine  230  is loaded, the virtual network interface  220  will be ready for use by the pre-boot environment  225 . The pre-boot environment  225  can then update  425  its network-based applications with live data from the Internet (e.g. updated stock prices, new e-mails, etc.). 
     In some embodiments of the invention, the hypervisor  140  may load  430  yet another operating system virtual machine  325  that accesses the network through the network interface engine  230 . In this case, the virtual network interface  220  bridges the physical network hardware to two virtual machines, a pre-boot environment  225  and an operating system  325 . 
     As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the members, features, attributes, and other aspects are not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, divisions and/or formats. Accordingly, the disclosure of the invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following Claims.