Providing compatible network resources to program components executing in virtualized environment
By creating virtual network adapters and interfaces in a virtualized environment, the problem of providing compatible network resources in a virtualized environment is solved, ensuring that program components can run normally and run directly on the host, and solving network resource access in a virtualized environment is solved The problem of inconsistent methods.
Patent Information
- Application Number
- CN202380036694.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-10-28
- Filing Date
- 2023-02-21
- Publication Date
- 2024-12-13
AI Technical Summary
It is difficult to provide the same way of accessing network resources as if executed directly on its development platform in a virtualized environment, especially when there is no one-to-one network resource mapping between the host and the virtualized environment, and the host OS has Different ways to expose network resources to program components.
By creating a virtual network adapter in a virtualized environment, projecting the host's network interface into the virtualized environment, and using the virtual network interface and connection interface to route network packets, intercepting and forwarding network control messages to modify the host's network settings, ensure that Program components access network resources in the desired way.
It realizes that without modification in a virtualized environment, program components can access network resources in a compatible manner, avoid unsupported interface types and configurations, and ensure that the normal operation and user experience of program components are consistent with running directly on the host.
Smart Images

Figure CN119137581A_ABST
Abstract
Description
Background Art
[0001] Virtualization technology creates an abstraction layer on top of physical hardware that allows a single processing system (often referred to as a "host") to provide multiple isolated virtualized environments (often referred to as "guests") that execute operating systems ("OSs") and other program components independently of the host. Examples of virtualized environments include virtual machines ("VMs") and containers.
[0002] In order for a program component executed in a virtualized environment to execute correctly without modification, the resources utilized by the program component need to be provided in the client in the manner desired by the program component. For example, some applications executed in the client utilize network resources. In order to run correctly without modification, these applications need to be able to access network resources in the same manner as when executed directly on the platform for which they were originally developed.
[0003] However, it is very difficult to provide network resources in a manner desired by program components executing in a virtualized environment. This is particularly true when there is no one-to-one mapping between network resources provided by the host and those network resources desired by the client. It is also difficult to provide network resources in a manner desired by program components executing in a virtualized environment when the OS executing on the host exposes network resources to program components in a different manner than the OS executing in the client. Summary of the invention
[0004] Disclosed herein is a method for providing compatibility network resources to program components executed in a virtualized environment. Through implementation of the disclosed technology, network resources utilized by program components executed in a virtualized environment are provided in a manner desired by the program components, which enables the program components to execute correctly in the virtualized environment without modification. Other technical benefits not specifically mentioned herein may also be realized through implementation of the disclosed subject matter.
[0005] In order to provide various aspects of the functionality disclosed herein, a virtual network adapter is created in a virtualized environment corresponding to a network interface present on a host processing system providing the virtualized environment. In an embodiment, the virtual network adapter is a virtual Ethernet adapter. The virtual network adapter is aggregated behind a connection interface.
[0006] In an embodiment, a virtual network interface is created in a virtualized environment that is exposed to program components executing in the virtualized environment, such as client OS and applications. A virtual network interface is a type of network interface that is known to be compatible with program components executing in a virtualized environment. In an embodiment, a virtual network interface is a single virtual The virtual network interface is also connected to the connection interface. Then one of the virtual network adapters is selected as the active virtual network adapter in the connection interface.
[0007] When the configuration described above has been established, network packets are routed between program components executing in a virtualized environment, virtual network interfaces, connection interfaces, active virtual network adapters, and network interfaces corresponding to the active virtual network adapters.
[0008] In an embodiment, a network control message generated by a program component executing in a virtualized environment is intercepted and forwarded to a host processing system providing the virtualized environment. For example, in an embodiment, a component executing in a virtualized environment intercepts a network control message generated by a program component executing in the virtualized environment. The component forwards the intercepted network control message to the host processing system, which in turn executes the command requested by the network control message.
[0009] In an embodiment, the command is a request to scan networks available to the host processing system. A list of available networks is returned to a program component executing in the virtualization environment that generated the intercepted network control message.
[0010] In an embodiment, the command specified by the network control message modifies a network setting of the host processing system. In an embodiment, the command is a command to connect the host processing system to a specified network. In another embodiment, the command is a command to disconnect the host processing system from the specified network. In other embodiments, other types of network control messages modify other network settings of the host processing system.
[0011] In an embodiment, the subject matter described above is implemented as a computer-controlled apparatus, a computer-implemented method, a computer device, or an article such as a computer-readable medium. These and various other features will be apparent from a reading of the following detailed description and a review of the associated drawings.
[0012] This Summary is provided to introduce a brief description of some aspects of the disclosed technology in a simplified form, which will be further described in the following Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that address any or all of the disadvantages noted in any part of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] Figure 1is a computing system architecture diagram showing various aspects of an example mechanism for exposing compatible network resources to program components executing in a virtualized environment according to an embodiment;
[0014] Figure 2 is a flow chart showing a routine according to an embodiment, the routine illustrating a method for exposing compatible network resources to a program component executing in a virtualized environment. Figure 1 Various aspects of the example mechanisms shown in ;
[0015] Figure 3 is a computing system architecture diagram showing various aspects of an example mechanism disclosed herein for processing network control messages generated by program components executing within a virtualized environment, according to an embodiment;
[0016] Figure 4 is a flow chart showing a routine according to an embodiment, the routine illustrating a method for processing network control messages generated by a program component executed within a virtualized environment. Figure 3 Various aspects of the example mechanisms shown in ;
[0017] Figure 5 is a computer architecture diagram showing an illustrative computer hardware and software architecture for a computing device implementing various aspects of the technology presented herein; and
[0018] Figure 6 is a network diagram illustrating an example distributed computing environment in which various aspects of the disclosed technology are implemented in an embodiment. DETAILED DESCRIPTION
[0019] The following specific embodiments are directed to techniques for providing compatible network resources to program components executing in a virtualized environment. As briefly discussed above, various technical benefits are achieved through the implementation of embodiments of the disclosed technology, such as providing network resources to program components executing in a virtualized environment in a manner that enables the program components to execute without being modified. For example, the embodiments disclosed herein ensure that only supported network resources are disclosed in the virtualized environment and prevent unsupported network interface types and configurations from being disclosed in the virtualized environment. Therefore, program components in a virtualized environment execute and access network resources in the same manner as when they are executed directly on the platform on which they were originally developed.
[0020] As briefly discussed above, virtualization technology enables the creation of an abstraction layer on top of physical hardware that allows a single processing system (commonly referred to as a "host") to provide multiple isolated virtualized environments (commonly referred to as "guests") that execute OS and other programs independently of the host. Examples of virtualized environments include VMs and containers.
[0021] In a virtualized environment, a client typically executes an isolated OS (the client "OS") that is completely independent of the OS executing on the host (the "host OS"). This creates a deployment in which applications and other program components deployed into the client run in the OS environment for which they were originally designed, regardless of the host OS. This also allows program components executing in the client to appear to the user as if they were running directly on the host. Program components are executable programs, such as applications and components of the client OS.
[0022] In a specific example, for example, a host computer (such as OS) can be configured to provide execution of different OS (such as ANDROID TM The virtualized environment (such as a container or VM) of the host computer is a virtualized environment (such as a container or VM) of the host computer. In this example, applications and other program components executed in the virtualized environment have access to the same runtime environment as when they are executed directly on the physical device. Therefore, these program components can be executed in the virtualized environment without modification in the embodiment. At the same time, users of the host computer can utilize the program components as if they were running directly on the host computer.
[0023] In order to make the program component of performing in virtualization environment such as described above correctly perform without modification, it is necessary to provide the resource utilized by the program component in the mode desired by the program component in the virtualization environment.For example, some program components of performing in the virtualization environment utilize network resources.In order to correctly run without modification, these program components need to be able to access required network resources in the same manner as they directly perform on the platform they initially developed for them.It is very difficult to provide network resources in the virtualization environment in the mode desired by the program component of performing in the client.When there is no one-to-one mapping between the network resources provided by the main frame and those network resources desired by the program component of performing in the virtualization environment, and when wherein the host OS discloses network resources to the program component in a mode different from the client OS, this is especially true.
[0024] For example, because ANDROID TM OS is mainly developed for smart phones and tablet computing devices, so if there is an Ethernet interface in the virtualized environment or if there are multiple Wi-Fi interfaces in the virtualized environment, it is not necessary to use it in ANDROID TM In the case where the OS is a client OS, program components executed in the virtualized environment may not run properly. Other client operating systems may have other limitations that cause program components to execute incorrectly when other types of network resources are present or absent in the virtualized environment.
[0025] Figure 1 is a computing system architecture diagram showing various aspects of an example mechanism for exposing compatible network resources to program components executing in a virtualized environment according to an embodiment. Specifically, Figure 1 Various aspects of the configuration and operation of a host processing system 100 (referred to herein as “host 100 ”) configured to provide a virtualized environment 116 , such as a VM or container, are shown.
[0026] In order to provide the disclosed functionality, the host 100 includes various hardware devices 102, some of which are not shown in the figure for the sake of simplicity. Figure 1 , including several physical network interface cards (referred to herein as "network interfaces") 104A and 104B. Network interfaces 104A and 104B are hardware devices that provide media access to a physical network 106, such as a wired or wireless local area network, the Internet, a cellular network, or a virtual private network ("VPN"). Although the two network interfaces 104A and 104B are Figure 1 , but in other examples the host 100 may include other numbers of network interfaces. Figure 4 Additional details are provided regarding some of the other hardware components that may be present in host 100 .
[0027] Host network stack ( Figure 1 The host network stack (not shown) handles network communications passed between host 100 and physical network 106 via network interfaces 104A and 105B. The host network stack typically includes appropriate layers of the Open Systems Interconnection ("OSI") model.
[0028] Likewise Figure 1 As shown in FIG. 1 and briefly described above, host 100 executes host OS 108. In an embodiment, host OS 108 is from CORPORATION's operating system In other embodiments, other operating systems from other developers may be used as host OS 108 .
[0029] In some embodiments, host 100 also executes hypervisor 114. Hypervisor 114 is a software component that virtualizes hardware access to virtualized environments 116 such as VMs and containers. The term "hypervisor" as used herein is considered to include privileged host-side virtualization functions typically found in privileged partitions or hardware-isolated virtualized environments.
[0030] Virtual machine managers ("VMMs"), container engines, and kernel-based virtualization modules are some examples of hypervisors. In other embodiments, the techniques disclosed herein and other types of solutions are used to provide virtualized environment 116 with isolated access to virtualized hardware.
[0031] exist Figure 1 In the embodiment shown in , the hypervisor 114 provides support for one or more virtualized environments 116. In an embodiment, the virtualized environment 116 is a container. However, in other embodiments, the virtualized environment 116 can be a VM or another type of hardware-isolated virtualized environment. In some embodiments, a guest-host communication channel 115 is established between the host 100 and the virtualized environment 116, such as a socket-based interface, to enable network communication between the client OS 118 and the host OS 108.
[0032] like Figure 1 , and as briefly discussed above, in an embodiment, the guest OS 118 is executed in the virtualized environment 116. In an embodiment, the guest OS 118 is a different OS than the host OS 108. In some embodiments, the guest OS 118 includes a complete OS kernel that executes completely independently of the kernel of the host OS 108.
[0033] Through virtualization, the client OS 118 and other program components executing on the client OS 118 (such as applications 120) execute in the virtualized environment 116 in the same manner as if they were executing directly on the host 100 (e.g., directly on the host OS 108). The client OS 118 and other program components executing on the client OS 118 (such as applications 120) are generally unaware that they are not executing directly on physical hardware.
[0034] In an embodiment, client OS 118 is provided by OPEN HANDSET ALLIANCE TM Developed by ANDROID TM OS, and by LLC Business Sponsorship. ANDROID TM The OS is based on A mobile OS that is a modified version of the kernel and other open source software and is designed primarily for touch-screen mobile devices such as smartphones and tablet computing devices.
[0035] In another embodiment, the client OS 118 is a Linux FOUNDATION TM Supported and mainly by TIZEN developed and utilized by ELECTRONICS CO, LTD TMOS. In other embodiments, other operating systems from other developers may be used as client OS 118.
[0036] As briefly discussed above, various challenges arise when attempting to provide network resources to the guest OS 118 and other program components executing in the virtualized environment 116. This is particularly true when there is no one-to-one mapping between the network resources provided by the host 100 and those expected by the program components executing in the virtualized environment 116, and where the host OS 108 exposes the network resources differently than the guest OS 118. For example, when the guest OS 118 is ANDROID TM When the client OS 118 is running, a program component (such as application 120) may not run correctly if an Ethernet interface or multiple Wi-Fi interfaces are present in the virtualization environment 116. To address this technical challenge and potential other technical challenges, an abstraction layer 117 is provided in the virtualization environment 116 that ensures that the client OS 118 and other program components (such as application 120) executing thereon do not encounter unsupported network configurations.
[0037] In an embodiment, the network interfaces 104A and 104B available to the host 100 are projected into the virtualized environment 116 by creating corresponding virtual network adapters 128A and 128B in the virtualized environment 116. Figure 1 In the embodiment shown in FIG. 1 , virtual network adapters 128A and 128B are virtual Ethernet adapters, but may be implemented as other types of network adapters in other embodiments.
[0038] Some applications may not run correctly when certain types of network adapters are present. For example, when the client operating system is Android TM When OS118 is used, some applications may not run normally. In the illustrated embodiment, to prevent this situation, virtual network adapters 128A and 128B are not disclosed to client OS118.
[0039] exist Figure 1 In the embodiment shown in , virtual network adapters 128A and 128B are aggregated behind a single key interface 126. Connection interface 126 is a software component that provides functionality for combining multiple virtual network adapters 128A and 128B into a single interface for redundancy or increased throughput.
[0040] Connection interface 126 also provides functionality for selecting a single virtual network adapter 128A or 128B as the active adapter. Figure 1In the example shown in FIG. 1 , for example, virtual network adapter 128B corresponding to network interface 104B has been set as the active interface. Virtual network adapters 128A and 128B in virtualized environment 116 do not necessarily have to be of the same type as the network interfaces 104A and 104B to which they correspond. For example, in the example shown, network interface 104B may be Adapter, while the network adapter 128B in the virtualized environment 116 can be an Ethernet adapter. In order to expose the compatibility network interface to the client OS 118, in one embodiment, a virtual interface 124 and connects it to the connection interface 126. In this embodiment, the virtual Interface 124 is the only network interface visible to client OS 118 and other program components executing in virtualized environment 116. In addition, and as will be described in more detail below, connection interface 126 sets only a single one of virtual network adapters 128A and 128B as the active interface at any given time. As mentioned above, virtual network adapter 128B corresponding to network interface 104B is active at any given time. Figure 1 In the example shown in , is set as the active interface.
[0041] The one or more virtual interfaces exposed to the client OS 118 and other program components executing in the virtualization environment 116 are interface types and configurations compatible with the client OS 118 and other program components (such as applications 120). For example, if the client OS 118 is ANDROID TM OS, then up to four virtual interfaces 124 (with their corresponding network stacks) will be exposed: loopback interface ( Figure 1 Not shown), single Adapter (for example, Figure 1 ), a single cellular adapter, and a virtual private network ("VPN") interface ( Figure 1 This ensures that program components executing in the virtualized environment 116 will not encounter unsupported interface types or network configurations.
[0042] virtual Interface 124 and connection interface 126 forward the network packet to the virtual network adapter 128A or 128B currently set as active in connection interface 126. Figure 1 In the example shown in Interface 124 forwards network packets received from application 120 and client OS 118 to virtual network adapter 128B.
[0043] In turn, the network packets are forwarded to a flow steering engine ("FSE") 112, described below, and routed to a network interface 104 on the host 100, such as network interface 104B in the illustrated embodiment, for transmission on the physical network 106. Similarly, in an embodiment, network packets received at the network interface 104 and destined for the virtualized environment 116 are routed to the FSE 112, the virtual network adapter 128B, the connection interface 126, the virtual interface 124 and is ultimately routed to a target program component in the virtualized environment 116 .
[0044] On client OS 118, Android TM In the embodiment of OS, only The single virtual interface of interface 124 exposed to program components executing in virtualized environment 116 ensures that program components will not encounter unsupported interfaces or interface configurations. TM When the OS is running, the program components executed in the virtualized environment 116 will not encounter the Ethernet interface or multiple interfaces, which could cause program components to malfunction.
[0045] Despite Figure 1 In the embodiment shown in FIG. 1 , a virtual Interface 124, but in other embodiments, the virtual interface exposed to the client OS 118 and application 120 can be configured as another type of wired or wireless interface. For example, if the client OS 118 does not provide access to interface, the virtual Ethernet interface can be exposed to the virtualization environment 116 instead of the virtual Interface 124. The virtual cellular interface can also be exposed to the virtualization environment 116 in a similar manner instead of the virtual Interface 124.
[0046] As briefly discussed above, in an embodiment, when network interfaces 104A and 104B have been mirrored into virtualized environment 116 and abstraction layer 117 has been created in virtualized environment 116 in the manner described above, host 100 is configured to connect network interface 104 on host 100 to virtualized environment 116, such as virtualization layer 117. The interface 124 appropriately routes network traffic between the virtual network adapters. To provide this functionality, in an embodiment, each independent OS (e.g., host OS 108 and guest OS 118) assigns the same unique identity (e.g., the same Internet Protocol ("IP") address and the same Media Access Control ("MAC") address) to its corresponding network adapter.
[0047] In addition, and as briefly mentioned above, FSE 112 is executed on host 100. FSE 112 is a virtual switch ( Figure 1 116). FSE 112 is a software component (not shown) that routes network packets to and from virtualized environment 116. FSE 112 is an OS driver in an embodiment, but may be implemented as another type of component in other embodiments. For example, in an embodiment, FSE 112 is implemented as part of a Transmission Control Protocol ("TCP") or User Datagram Protocol ("UDP") module, or as a shim or filter between the transport layer and another layer of the host network stack.
[0048] In an embodiment, FSE 112 routes packets to and from virtualized environment 116 by determining which packets are destined for host OS 108 and which packets are destined for virtualized environment 116 by tracking unique OSI layer 4 identifiers (e.g., TCP and UDP port numbers). In this manner, in an embodiment, guest OS 118 executes without modifications to its network stack, and host OS 108 has a largely unmodified network stack (e.g., only FSE 112 is added to the network stack of host OS 108).
[0049] Following the operations described above, the guest OS 118 will have a virtual network adapter 128 active in the connection interface 126 (e.g., a virtual network adapter 128 that mirrors the active network interface 104 on the host 100). In addition, in an embodiment, the guest OS 118 will have a single virtual interface (e.g., a virtual network adapter 128 that mirrors the active network interface 104 on the host 100) visible to the application 120 and the guest OS 118. Interface 124).
[0050] In an embodiment, the host 100 utilizes various heuristics to select a single network interface 104 that is connected to the virtualization environment 116 in the manner described above. In an embodiment, these heuristics include the current network configuration of the host 100, whether the available network interfaces 104 are physical or virtual, the type of preferred network interface 104 on the host 100, the network properties of the network interfaces 104 on the host 100, and the type of virtual network interface that is exposed in the virtualization environment 116 without causing program components executing therein to crash or otherwise malfunction.
[0051] In an embodiment, a program component executed in the virtualization environment 116 issues a network control message requesting the host 100 to establish a connection with a specified network 106, a network control message requesting the host 100 to disconnect from a specified network, and a network control message for requesting a list of available networks 106 from the host 100. In an embodiment, in this manner, the program component executed in the virtualization environment modifies the network settings of the host 100.
[0052] The following will refer to Figure 3 and Figure 4 Details regarding a mechanism disclosed herein for processing network control messages generated by program components executing in a virtualized environment 116 are described below. Figure 2 Additional details are provided regarding the mechanisms described above for enabling network packets to flow into and out of virtualized environment 116 in a manner that is compatible with program components executing in virtualized environment 116 .
[0053] Figure 2 is a flow chart showing a routine 200 according to an embodiment, which shows Figure 1 1 and 2. Various aspects of the mechanism for exposing compatible network resources to program components executing in a virtualized environment 116 are shown in FIG. 2. Routine 200 begins at operation 202, where a network interface 104 present on a host 100 is identified. In an embodiment, a service executing on the host 100 identifies the network interface 104. In other embodiments, other components are configured to identify the network interface 104.
[0054] From operation 202, the routine 200 proceeds to operation 204, where a virtual network adapter 128 is created in the virtualized environment 116, corresponding to the network interface 104 identified at operation 202. When the virtual network adapter 128 has been created, the routine 200 proceeds from operation 204 to operation 206, where the virtual network adapter 128 is created as described above. Figure 1 The described approach aggregates virtual network adapters 128 behind connection interface 126. As briefly discussed above, and discussed in more detail below, in an embodiment, one of virtual network adapters 128 is selected as the active interface in connection interface 126.
[0055] From operation 206, routine 200 proceeds to operation 208, where Figure 1 In the embodiment shown in FIG. 1 , a virtual network interface (such as a virtual The interface 124) is exposed to program components executing in the virtualized environment 116. The routine 200 then proceeds from operation 208 to operation 210, where the newly created virtual network interface is connected to the connection interface 126. For example, in Figure 1 In the embodiment shown in FIG. The interface 124 has been connected to the connection interface 126 .
[0056] From operation 210, routine 200 proceeds to operation 212, where FSE 112 is executed. As discussed above, FSE 112 forwards network packets to or from virtualized space 116 through a virtual switch connected to virtualized environment 116. From operation 212, routine 200 proceeds to operation 214 and ends there.
[0057] Figure 3 1 is a computing system architecture diagram showing various aspects of a mechanism for processing network control messages 300 generated within a virtualized environment 116 according to an embodiment. As briefly discussed above, a network control message 300 is a message requesting modification of network settings of a host 100 or obtaining information about one or more networks from the host 100. Examples of network control messages 300 include messages requesting the host 100 to establish a connection to a specified network 106, messages requesting the host 100 to disconnect from a specified network 106, and messages requesting a list of networks 106 available to the host 100.
[0058] In an embodiment, program components (e.g., client OS 118 and application 120) executing within virtualized environment 116 generate network control message 300. In an embodiment, a virtual network interface (e.g., Figure 1 The virtual Interface 124 ) processes network control messages 300 from application programming interfaces (“APIs”) that are called by program components executing in virtualized environment 116 .
[0059] In an embodiment, in order to process network control messages 300 generated by program components executing in the virtualization environment 116, a guest network service ("GNS") daemon 302 is executed in the client OS 118. The GNS daemon 302 is a software component (e.g., a daemon process) that intercepts network control messages 300 from program components executing in the virtualization environment 116 and forwards the messages 300 to a GNS agent 304 executing on the host 100.
[0060] For example, and as will be described in more detail below, the GNS daemon 302 may intercept network control messages 300 generated by an application 120 requesting that the host 100 connect to a particular network 106, requesting that the host 100 disconnect from a network 106, or for performing a scan to identify networks 106 available to the host 100. In other embodiments, the GNS daemon 302 intercepts other types of network control messages 300 for use in performing other types of functions.
[0061] As briefly discussed above, the GNS daemon 302 forwards the intercepted network control message 300 to the GNS agent 304 executing on the host 100. The GNS agent 304 is a software component that is configured to receive the forwarded network control message 300 from the GNS daemon 302 and is configured to implement various aspects of the operation requested by the network control message 300. For example, the GNS agent 304 may cause the host 100 to connect to the network 106, disconnect from the network 106, or perform a scan for available networks 106 in response to receiving the network control message 300 from the GNS daemon 302.
[0062] In an embodiment, the GNS proxy 304 also provides a response to the network control message 300 back to the GNS daemon 302. For example, such a response may indicate whether an attempt to connect to or disconnect from the network 106 was successful, or the results of a network scan. In other embodiments, the GNS proxy 304 provides other types of responses to other types of network control messages 300. Additional details about the mechanisms for intercepting and processing network control messages 300 described above will be provided below.
[0063] Network Scanning
[0064] As briefly described above, in some embodiments, functionality is provided that enables program components (e.g., client OS 118 and applications 120) executing in a virtualized environment 116 to request a list of available wireless networks 106 from an underlying network interface 104. In an embodiment, the list includes an enumeration of observable service set identifiers ("SSIDs") from wireless network interfaces 104 on a host 100. To provide this functionality, a GNS daemon 302 intercepts a network control message 300 requesting a scan to identify available wireless networks 106 from a program component executing in a virtualized environment 116 in the manner described above.
[0065] In response to intercepting the network control message 300 requesting a scan to identify available wireless networks 106, the GNS daemon 302 requests from the host network service 306 Scan list. In turn, host 100 scans wireless interfaces and each network interface 104 that is opened. The scan results from each network interface 104 are organized into a single string array so that all names are unique. The list is then returned to GNS daemon 302, which in turn completes the intercepted network control message 300, thereby sending a list of available wireless networks to the requestor component in virtualized environment 116.
[0066] Network connection
[0067] As also discussed above, in an embodiment, a program component (such as application 120) executing in virtualized environment 116 also generates a network control message 300 requesting to connect to a specific network (e.g., a specific SSID). In an embodiment, GNS daemon 302 intercepts network control message 300 from a program component (such as client OS 118 or application 120) in virtualized environment 116 to connect to specific network 106. GNS daemon 302 forwards the intercepted network control message 300 to GNS agent 304 in the manner described above.
[0068] GNS agent 304 in turn instructs HNS 306 to connect to the network 106 identified by intercepted network control message 300. HNS 306 connects host 100 to the specified network 106 (if not already connected). As discussed above, in an embodiment, HNS 306 is a component of host OS 108 that manages network connections.
[0069] GNS agent 304 then instructs GNS daemon 302 to configure connection interface 126 as a virtual network adapter 128 corresponding to network interface 104 connected to the requested network. GNS daemon 302 then marks the active virtual network adapter 128 associated with network interface 104 connected to selected network 106 as the active interface in connection interface 126.
[0070] The network properties present in the host OS 108 for the newly selected network 106 are then synchronized to the virtualized environment 116. In an embodiment, the network properties that are synchronized into the virtualized environment 116 are selected from among those network properties that are available to the host 100 based on whether the program component executing in the virtualized environment 116 uses all of the network properties that would be available to the host 100 if it were executed directly on the host 100. For example, in some embodiments, only those properties that would be used by the application 120 if it were executed directly on the host 100 are synchronized into the virtualized environment 116.
[0071] If the request Network connection, then synchronize from host 100 to virtual The network properties of the interface 124 will reflect the network properties utilized by the network interface 104 connected to the requested wireless network 106. For example, in an embodiment, the network address, domain name server ("DNS") address, routing, and other network properties of the network interface 104 connected to the requested wireless network 106 are synchronized to the GNS daemon 302 and used to configure the virtual Interface 124. If a connection to Ethernet or cellular network 106 is requested, it is returned to GNS daemon 302 and used to configure virtual The network properties of interface 124, including the SSID, are hard-coded values that represent the wireless network.
[0072] In some embodiments, the network properties pushed into the virtualization environment 116 are identified based on the type of program component requesting connection to the network 106. For example, when a component of the host OS 108 or an application 120 requests a connection to the network 106 in the manner described above, all available network properties are pushed into the virtualization environment 116, not only network addresses and routes, but also higher-level concepts such as DNS name resolution priority rules and Hypertext Transfer Protocol ("HTTP") proxy configuration.
[0073] Network disconnection
[0074] As discussed above, in an embodiment, the GNS daemon 302 also intercepts network control messages 300 requesting to disconnect from the network 106. The GNS daemon 302 forwards these network control messages 300 to the GNS proxy 304. The GNS proxy 304 in turn instructs the HNS 306 to disconnect from the specified network 106. In an embodiment, a result message is returned by the GNS proxy 304 to the GNS daemon 302 indicating whether the disconnect request was successful.
[0075] Although the embodiments disclosed herein are primarily presented in the context of network control messages 300 for performing network scans, connecting to a network 106, and disconnecting from a network 106, in embodiments, other types of network control messages 300 are processed in a similar manner. In addition, the embodiments disclosed herein enable a program component executing in a virtualized environment 116 to modify network settings of a host 100, such as by causing the host 100 to connect to or disconnect from a specified network 106. In other embodiments, a program component executing in a virtualized environment 116 modifies other network settings of the host 100.
[0076] Figure 4 is a flow chart showing a routine 400 according to an embodiment, which shows Figure 31 and 2, and various aspects of an example mechanism for processing network control messages 300 generated by program components executing within a virtualized environment 116 are shown in FIG. 4. Routine 400 begins at operation 402, where a GNS daemon 302 is executed in a virtualized environment 116. As discussed above, a GNS daemon 302 is a software component (e.g., a daemon process) that intercepts network control messages 300 from program components executing in a virtualized environment 116 and forwards the messages 300 to a GNS agent 304 executing on a host 100.
[0077] Routine 400 proceeds from operation 402 to operation 404, where GNS agent 304 is executed on host 100. As also discussed above, GNS agent 304 is a software component configured to receive forwarded network control messages 300 from GNS daemon 302 and implement various aspects of the operations requested by network control messages 300.
[0078] From operation 404, routine 400 proceeds to operation 406, where GNS daemon 302 intercepts network control message 300. Routine 400 then proceeds from operation 406 to operation 408, where GNS daemon 302 forwards the intercepted network control message 300 to GNS agent 304 in the manner described above.
[0079] From operation 408, routine 400 proceeds to operation 410, where GNS agent 304 implements the command requested by intercepted network control message 300. For example, GNS agent 304 may cause host 100 to perform a scan of available networks 106, connect to a specified network 106, disconnect from a specified network 106, or execute another type of command. Details regarding various operations used to execute these commands in embodiments are provided above.
[0080] From operation 410, routine 400 proceeds to operation 412, where GNS agent 304 returns the result of executing the requested command to GNS daemon 302. GNS daemon 302, in turn, provides a response to the program component that generated the original network control message 300. For example, in an embodiment, GNS daemon 302 provides an indication of whether the requested command was successful. In another embodiment, GNS daemon 302 provides the result of the wireless network scan to application 120. Routine 400 then proceeds from operation 412 to operation 414 and ends there.
[0081] The techniques disclosed herein ensure that compatibility requirements related to available network interfaces and configurations for program components executed in the virtualized environment 116 are met. For example, when the client OS 118 is ANDROID TM When OS is Figures 1 to 4The embodiments shown in and described above enable applications 120 and other program components to run without modification; ensure that unsupported interface types or configurations are exposed to program components executing in virtualized environment 116; and enable users to interact with program components as if they were running locally on host 100. Alternative or additional compatibility requirements may also be met by the techniques disclosed herein to support client operating systems in other types of client operating systems (such as TIZEN TM OS) to correctly execute program components.
[0082] Figure 5 is a computer architecture diagram showing an illustrative computer hardware and software architecture for a processing system 500 that implements the various techniques presented in the embodiments herein. Specifically, Figure 5 The architecture shown in is used to implement a host 100 capable of providing various aspects of the functionality disclosed in the embodiments herein.
[0083] Figure 5 The processing system 500 shown in FIG. 5 includes a central processing unit 502 (“CPU”), a system memory 504 (including random access memory 506 (“RAM”) and read-only memory (“ROM”) 508), and a system bus 510 that couples the system memory 504 to the CPU 502. In an embodiment, firmware ( Figure 5 ), which contains basic routines that help transfer information between elements within the processing system 500, such as during startup.
[0084] Processing system 500 also includes a mass storage device 512 for storing an operating system 522, such as host OS 108, application programs, and other types of programs, some of which have been described herein. In an embodiment, mass storage device 512 is configured to store other types of programs and data.
[0085] The mass storage device 512 is connected to the bus 510 through a mass storage controller ( Figure 5 500). The mass storage device 512 and its associated computer-readable media provide non-volatile storage for the processing system 500. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk, a compact disk read-only memory (“CD-ROM”) drive, a digital versatile disk read-only memory (“DVD-ROM”) drive, or a universal serial bus (“USB”) storage key, the computer-readable media includes any available computer-readable storage media or communication media accessible by the processing system 500.
[0086] Communication media includes computer readable commands, data structures, program modules, or other data in a modulated data signal (such as a carrier wave or other transmission mechanism), and includes any delivery medium. The term "modulated data signal" means having one or more of its characteristics changed or set in some way to encode information in the signal. By way of example, communication media includes wired media, such as a wired network or a direct wired connection, and wireless media, such as acoustic, radio frequency, infrared and other wireless media. Any combination of the above is also included in the scope of computer readable media.
[0087] By way of example, computer-readable storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. For example, computer-readable storage media include RAM, ROM, erasable programmable ROM ("EPROM"), electrically EPROM ("EEPROM"), flash memory or other solid-state memory technology, CD-ROM, DVD-ROM, HD-DVD, or other optical storage, magnetic cassettes, tape, disk storage or other magnetic storage devices, or any other medium configured to store the desired information and accessible by the processing system 500. For the purposes of the claims, the phrase "computer-readable storage medium" and its variations do not include waves or signals per se or communications media.
[0088] According to various configurations, the processing system 500 operates in a networked environment using logical connections to remote computers 505 through a network, such as the network 106. In an embodiment, the processing system 500 is connected to the network 106 through a network interface unit 516 connected to the bus 510. In other embodiments, the network interface unit 516 connects to other types of networks and remote computer systems.
[0089] In an embodiment, the processing system 500 also includes an input / output controller 518 for receiving and processing input from a number of other devices, including a keyboard, a mouse, a touch input, an electronic stylus ( Figure 5 Similarly, in an embodiment, the input / output controller 518 sends a signal to a display screen or other type of output device ( Figure 5 ) provides output.
[0090] When loaded into CPU 502 and executed, the software components described herein convert CPU 502 and the entire processing system 500 from a general purpose computing device into a special purpose processing system that is customized to facilitate the functionality presented herein. In an embodiment, CPU 502 is composed of transistors or other discrete circuit elements, which, in an embodiment, individually or collectively assume any number of states.
[0091] More specifically, in an embodiment, CPU 502 operates as a finite state machine in response to executable instructions within the software modules disclosed herein. These computer executable instructions switch CPU 502 by specifying how CPU 502 switches between states, thereby switching transistors or other discrete hardware elements that constitute CPU 502.
[0092] Encoding the software modules presented herein may also convert the physical structure of the computer-readable medium presented herein. In different implementations of this specification, the specific conversion of the physical structure depends on various factors. Examples of these factors include the technology used to implement the computer-readable medium, whether the computer-readable medium is characterized as a primary memory or a secondary memory, etc.
[0093] For example, if the computer-readable medium is implemented as a semiconductor-based memory, the software disclosed herein is encoded on the computer-readable medium by transforming the physical state of the semiconductor memory. For example, in an embodiment, the software transforms the state of transistors, capacitors, or other discrete circuit elements that make up the semiconductor memory. In an embodiment, the software transforms the physical state of such components in order to store data thereon.
[0094] In an embodiment, the computer readable medium disclosed herein is implemented using magnetic or optical technology. In such an embodiment, when software is encoded therein, the program components presented herein convert the physical state of the magnetic or optical medium. These conversions include changing the magnetic properties of a specific location within a given magnetic medium. In an embodiment, these transformations also include changing the physical features or characteristics of a specific location within a given optical medium to change the optical properties of these locations. Other conversions of physical media are possible without departing from the scope and spirit of this specification, and the above examples are provided only to facilitate this discussion.
[0095] Many types of physical transformations occur within processing system 500 in order to store and execute the software components presented herein. Figure 5The architecture shown for processing system 500 or similar architectures are used to implement other types of computing devices, including handheld computers, video game devices, embedded computer systems, mobile devices such as smartphones, tablet computers, alternate reality ("AR"), mixed reality ("MR"), and virtual reality ("VR") devices, and other types of computing devices known to those skilled in the art. It is also contemplated that processing system 500 may not include Figure 5 All components shown in the Figure 5 Other components not explicitly shown in the Figure 5 A completely different architecture is shown in .
[0096] Figure 6 is a network diagram illustrating a distributed network computing environment 600 in which various aspects of the disclosed technology are implemented according to various embodiments presented herein. Figure 6 As shown in FIG. 1 , in an embodiment, one or more server computers 600A are connected to a network 106 (e.g., a fixed line or WLAN, a wide area network (“WAN”), an intranet, an extranet, a peer-to-peer network, a VPN, the Internet, A communication network, a proprietary low-voltage communication network, or other communication networks, any one or a combination thereof) is interconnected with several client computing devices (such as a tablet computer 600B, a game console 600C, a smart watch 600D, a phone 600E (e.g., a smartphone), a personal computer 600F, and an AR / VR device 600G).
[0097] For example, in a network environment where network 106 is the Internet, server computer 600A is a dedicated server computer that is operable to process data and communicate with client computing devices 600B to 600G via any of several known protocols, such as, in embodiments, Hypertext Transfer Protocol (“HTTP”), File Transfer Protocol (“FTP”), or Simple Object Access Protocol (“SOAP”).
[0098] Furthermore, in an embodiment, the network computing environment 600 utilizes various data security protocols, such as Secure Sockets Layer (“SSL”) or Pretty Good Privacy Protocol (“PGP”). In an embodiment, each of the client computing devices 600B to 600G is equipped with an OS, such as host OS 108, which is operable to support one or more computing applications or terminal sessions, such as a web browser ( Figure 6 Not shown), graphical UI ( Figure 6 Not shown) or in a mobile desktop environment ( Figure 6 ), to gain access to server computer 600A.
[0099] In an embodiment, the server computer 600A is communicatively coupled to other computing environments ( Figure 6 (not shown) and receives data about the interactions of the participating users. In the illustrative operation, the user ( Figure 6 ) interacts with computing applications running on client computing devices 600B to 600G to obtain required data and / or execute other computing applications.
[0100] In an embodiment, data and / or computing applications are stored on server 600A and transmitted to collaborating users via client computing devices 600B to 600G via network 106. In an embodiment, participating users ( Figure 6 600A) to request specific data and applications that are fully or partially hosted on the server computer 600A. In an embodiment, these data are communicated between the client computing devices 600B to 600G and the server computer 600A for processing and storage.
[0101] Server computer 600A hosts computing applications, processes and applets for data and application generation, authentication, encryption and communication, as described above with respect to Figures 1 to 4 those described, and with other server computing environments ( Figure 6 Not shown), third-party service providers ( Figure 6 not shown) and network attached storage ("NAS") and storage area networks ("SAN") ( Figure 6 (not shown) collaborate to implement application / data transactions in an embodiment.
[0102] To facilitate discussion, Figure 5 The computing architecture and Figure 6 The distributed network computing environment shown in the embodiment has been simplified. The computing architecture and distributed computing network include and utilize many more computing components, devices, software programs, network devices, and other components not specifically described in the embodiments herein.
[0103] Although the subject matter described above has been presented in the general context of computing devices implementing virtualized environments (such as VMs and containers), those skilled in the art will recognize that, according to embodiments, other implementations are performed in combination with other types of computing devices, systems, and modules. Those skilled in the art will also understand that other computer system configurations, including handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, computing or processing systems embedded in devices (e.g., wearable computing devices, automobiles, home automation, etc.), minicomputers, mainframe computers, etc., can be used to practice the subject matter disclosed herein in the embodiments.
[0104] It is also understood that the operations of the routines and methods disclosed herein are not presented in any particular order, and that it is possible and expected to perform some or all of the operations in one or more alternative orders. For ease of description and illustration, the operations have been presented in a demonstration order. Without departing from the scope of the appended claims, operations may be added, omitted, and / or performed simultaneously. The routines and methods shown may be terminated at any time, and need not be performed in full in various embodiments.
[0105] In an embodiment, some or all of the operations of these methods and / or substantially equivalent operations are performed by executing computer-readable instructions as defined herein and included on a computer-readable storage medium. As used herein, the term "computer-readable instructions" and its variants are used broadly herein to include routines, applications, application modules, program modules, programs, program components, data structures, algorithms, etc. According to an embodiment, the computer-readable instructions are implemented on various system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, etc.
[0106] In an embodiment, the logical operations described herein are implemented as (1) a sequence of computer-implemented actions or program modules running on a computing system and / or (2) interconnected machine logic circuits or circuit modules within the computing system. Implementation is a matter of choice that depends on the performance and other requirements of the computing system. Therefore, the logical operations described herein are variously referred to as states, operations, structural devices, actions, or modules. In an embodiment, these operations, structural devices, actions, and modules are implemented in software, firmware, dedicated digital logic, or any combination thereof.
[0107] For example, the operations shown in the sequence and flow charts and described herein are implemented, at least in part, by a module that implements the features disclosed herein, such as a dynamic link library ("DLL"), a static link library, a function generated by an API, a network service, a compiler, an interpreter, a script, or any other executable instruction set. In an embodiment, data is stored in a data structure in one or more memory components. In one embodiment, data is retrieved from a data structure by addressing a link or a reference to the data structure.
[0108] The methods and routines described herein may also be implemented in many other ways. For example, in an embodiment, the routines and methods are implemented at least in part by a processor or local circuit of another remote computer. In addition, one or more of the operations of the routines or methods may alternatively or additionally be implemented at least in part by a chipset working alone or in conjunction with other software modules.
[0109] The disclosure presented herein also includes the subject matter set forth in the following clauses:
[0110] Clause 1: A computer-implemented method comprising: creating a virtual network adapter in a virtualized environment, the virtual network adapter corresponding to a network interface present on a host processing system providing the virtualized environment; aggregating the virtual network adapters behind a connection interface; exposing the virtual network interface to a program component executing in the virtualized environment; connecting the virtual network interface to the connection interface; selecting one of the virtual network adapters as an active virtual network adapter in the connection interface; and routing network packets between the program component executing in the virtualized environment, the virtual network interface, the connection interface, the active virtual network adapter, and the network interface corresponding to the active virtual network adapter.
[0111] Clause 2: The computer-implemented method of clause 1, wherein the virtual network interface comprises a single virtual wireless interface, and wherein the virtual network adapter comprises a virtual Ethernet adapter.
[0112] Clause 3: The computer-implemented method of any one of Clauses 1 or 2 further includes: intercepting a network control message generated by a program component among program components executed in a virtualized environment; forwarding the network control message to a host processing system; and executing a command requested by the network control message at the host processing system.
[0113] Clause 4: The computer-implemented method of any of Clauses 1-3, wherein the command comprises a request to scan networks available to the host processing system.
[0114] Clause 5: The computer-implemented method of any of Clauses 1-4, wherein the command modifies a network setting of the host processing system.
[0115] Clause 6: The computer-implemented method of any of clauses 1-5, wherein the command comprises a command to connect the host processing system to a specified network.
[0116] Clause 7: The computer-implemented method of any of clauses 1-6, wherein the command comprises a command to disconnect the host processing system from the specified network.
[0117] Item 8: A computer-readable storage medium having computer-executable instructions stored thereon, which, when executed by a processing system, cause the processing system to: expose a virtual network interface to program components executing in a virtualization environment provided by the processing system; intercept a network control message generated by one of the program components executing in the virtualization environment; forward the network control message from the virtualization environment to the processing system; and execute a command requested by the network control message at the processing system.
[0118] Clause 9: The computer-readable storage medium described in Clause 8 also has computer-executable instructions stored thereon to: create a virtual network adapter in a virtualized environment, the virtual network adapter corresponding to a network interface present on a processing system; select one of the virtual network adapters as an active virtual network adapter; and cause network packets to be routed between program components executed in the virtualized environment, the virtual network interfaces, the active virtual network adapter, and the network interface corresponding to the active virtual network adapter.
[0119] Clause 10: The computer-readable storage medium of any of clauses 8 or 9, wherein the virtual network interface comprises a single virtual wireless interface, and wherein the virtual network adapter comprises a virtual Ethernet adapter.
[0120] Clause 11: The computer-readable storage medium of any of clauses 8-10, wherein the command comprises a request to scan networks available to the processing system.
[0121] Clause 12: The computer-readable storage medium of any of clauses 8-11, wherein the command modifies a network setting of the processing system.
[0122] Clause 13: The computer-readable storage medium of any of clauses 8-12, wherein the command comprises a command to connect the processing system to a specified network.
[0123] Clause 14: The computer-readable storage medium of any of clauses 8-13, wherein the command comprises a command to disconnect the processing system from a specified network.
[0124] Clause 15: A processing system comprising: a processor; and a computer-readable storage medium having computer-executable instructions stored thereon, which, when executed by the processing system, cause the processing system to: create a virtual network adapter in a virtualized environment, the virtual network adapter corresponding to a network interface present on the processing system; expose the virtual network interface to program components executing in the virtualized environment; select one of the virtual network adapters as an active virtual network adapter; and cause network packets to be routed between program components executing in the virtualized environment, the virtual network interfaces, the active virtual network adapter, and the network interface corresponding to the active virtual network adapter.
[0125] Clause 16: The processing system of clause 15, wherein the virtual network interface comprises a single virtual wireless interface, and wherein the virtual network adapter comprises a virtual Ethernet adapter.
[0126] Clause 17: A processing system as described in any of clauses 15 or 16, wherein the computer-readable storage medium also has computer-executable instructions stored thereon to: intercept a network control message generated by a program component executing in a virtualized environment; forward the network control message to the processing system; and execute a command requested by the network control message at the processing system.
[0127] Clause 18: The processing system of any of clauses 15-17, wherein the command comprises a request to scan networks available to the processing system.
[0128] Clause 19: The processing system of any of clauses 15-18, wherein the command comprises a command to connect the processing system to a specified network.
[0129] Clause 20: The processing system of any of clauses 15-19, wherein the command comprises a command to disconnect the processing system from the specified network.
[0130] Techniques for providing compatible network resources to components executing in a virtualized environment have been disclosed herein. Although the subject matter presented herein has been described in language specific to computer structural features, methods and transformative actions, specific computing machines, and computer-readable media, it will be understood that the subject matter set forth in the appended claims is not necessarily limited to the specific features, actions, or media described herein. Rather, specific features, actions, and media are disclosed as example forms of implementing the claimed subject matter.
[0131] The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the illustrated and described example configurations and applications, and without departing from the scope of the present disclosure set forth in the appended claims.
Claims
1. A computer-implemented method comprising: creating a virtual network adapter in a virtualized environment, the virtual network adapter corresponding to a network interface present on a host processing system providing the virtualized environment; aggregating the virtual network adapters behind the connection interface; exposing a virtual network interface to a program component executing in the virtualized environment; connecting the virtual network interface to the connection interface; selecting one of the virtual network adapters as an active virtual network adapter in the connection interface; as well as Network packets are routed between the program component executing in the virtualized environment, the virtual network interface, the connection interface, the active virtual network adapter, and the network interface corresponding to the active virtual network adapter.
2. The computer-implemented method of claim 1, wherein the virtual network interface comprises a single virtual wireless interface, and wherein the virtual network adapter comprises a virtual Ethernet adapter.
3. The computer-implemented method of claim 1 , further comprising: intercepting a network control message generated by one of the program components executing in the virtualized environment; forwarding the network control message to the host processing system; as well as Commands requested by the network control message are executed at the host processing system.
4. The computer-implemented method of claim 3, wherein the command comprises a request to scan a network available to the host processing system.
5. The computer-implemented method of claim 3, wherein the command modifies a network setting of the host processing system.
6. The computer-implemented method of claim 3, wherein the command comprises a command to connect the host processing system to a specified network or a command to disconnect the host processing system from a specified network.
7. A computer-readable storage medium having computer-executable instructions stored thereon, which, when executed by a processing system, cause the processing system to: exposing a virtual network interface to a program component executing in a virtualization environment provided by the processing system; intercepting a network control message generated by one of the program components executing in the virtualized environment; forwarding the network control message from the virtualized environment to the processing system; as well as Commands requested by the network control message are executed at the processing system.
8. The computer-readable storage medium of claim 7, further having computer-executable instructions stored thereon to: creating a virtual network adapter in the virtualized environment, the virtual network adapter corresponding to a network interface present on the processing system; selecting one of the virtual network adapters as an active virtual network adapter; as well as Network packets are caused to be routed between the program component executing in the virtualized environment, the virtual network interface, the active virtual network adapter, and the network interface corresponding to the active virtual network adapter.
9. The computer-readable storage medium of claim 8, wherein the virtual network interface comprises a single virtual wireless interface, and wherein the virtual network adapter comprises a virtual Ethernet adapter.
10. The computer-readable storage medium of claim 7, wherein the command performs a request to scan for networks available to the processing system, wherein the command modifies a network setting of the processing system, wherein the command connects the processing system to a specified network, or wherein the command disconnects the processing system from a specified network.
11. A processing system comprising: processor; as well as A computer-readable storage medium having computer-executable instructions stored thereon, which, when executed by the processing system, cause the processing system to: creating a virtual network adapter in a virtualized environment, the virtual network adapter corresponding to a network interface present on the processing system; exposing a virtual network interface to a program component executing in the virtualized environment; selecting one of the virtual network adapters as an active virtual network adapter; as well as Network packets are caused to be routed between the program component executing in the virtualized environment, the virtual network interface, the active virtual network adapter, and the network interface corresponding to the active virtual network adapter.
12. The processing system of claim 11, wherein the virtual network interface comprises a single virtual wireless interface, and wherein the virtual network adapter comprises a virtual Ethernet adapter.
13. The processing system of claim 11, wherein the computer-readable storage medium further has computer-executable instructions stored thereon to: intercepting network control messages generated by program components executing in the virtualized environment; forwarding the network control message to the processing system; and Commands requested by the network control message are executed at the processing system.
14. The processing system of claim 13, wherein the command comprises a request to scan networks available to the processing system.
15. The processing system of claim 13, wherein the command comprises a command to connect the processing system to a designated network or a command to disconnect the processing system from a designated network.
