Using network virtual service clients to disrupt sleep and restore client environments

Through the network virtual service client, the operating status of the virtual network interface card is saved and restored during the virtual machine sleep and recovery, and the destructive operation problems during the virtual machine sleep and recovery in the prior art are solved, and the uninterrupted sleep and recovery process is achieved, which improves the efficiency and reliability of the system.

CN119816813APending Publication Date: 2025-04-11MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380061191.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-12
Filing Date
2023-08-14
Publication Date
2025-04-11

AI Technical Summary

Technical Problem

The prior art When virtual machines sleep and recover, destructive operations are required to recreate the operating state of the virtual network interface card, resulting in resource consumption and interruption.

Method used

When the client environment is sleepy through the Network Virtual Service Client (NVSC), the operating state of the virtual network interface card (VNIC) is saved in persistent memory and the communication channel between the NVSC and the network virtual service provider is disabled. When the client environment is restored, the NVSC re-enables the communication channel and restores the operational state of the VNIC.

Benefits of technology

It realizes the non-interrupted sleep and recovery of the virtual machine, reduces interference to the virtual network interface card and system components, and improves the wake-up time and reliability of the VNIC.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119816813A_ABST
    Figure CN119816813A_ABST
Patent Text Reader

Abstract

Examples of the present disclosure describe systems and methods for using a network virtual service client to sleep and restore a client environment without interruption. In an example, when a client environment is dormant, a network virtual service client provides instructions to a virtual network interface card to set a device power state of the virtual network interface card to a low power state. The network virtual service client disables a communication channel used by the network virtual service client and saves an operating state of the virtual network interface card. When the client environment is restored, the network virtual service client provides instructions to set the device power state of the virtual network interface card to a full power state. The network virtual service client reactivates the communication channel used by the network virtual service client and restores the operating state of the virtual network interface card.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] A virtual machine executing in a host computing environment can be suspended (e.g., hibernated or shut down) upon request. When a virtual machine is suspended, the operating state of the virtual network interface card is cleared for the virtual machine's virtual network interface card. When the virtual machine is resumed, the virtual machine requests configuration settings and other information from various components associated with the virtual machine to allow the virtual network interface card to recreate the cleared operating state. Such a request is a destructive operation.

[0002] It is with respect to these and other general considerations that the aspects disclosed herein are presented. Likewise, although relatively specific problems may be discussed, it should be understood that the examples should not be limited to solving specific problems identified in the background or elsewhere in this disclosure. Summary of the invention

[0003] Examples of the present disclosure describe systems and methods for hibernating and resuming a client environment without interruption using a network virtual service client. In an example, when the client environment is in hibernation, the network virtual service client provides instructions to a virtual network interface card to set a device power state of the virtual network interface card to a low power state. The network virtual service client disables a communication channel between the network virtual service client and the network virtual service provider. The network virtual service client also saves an operating state of the virtual network interface card in a memory. When the client environment is resumed, the network virtual service client provides instructions to the virtual network interface card to set the device power state of the virtual network interface card to a full power state. The network virtual service client re-enables the communication channel between the network virtual service client and the network virtual service provider. The network virtual service client restores the operating state of the virtual network interface card from the memory.

[0004] The present disclosure is provided to introduce a series of concepts in a simplified form, which will be further described in the following detailed description. The present disclosure is not intended to identify the key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additional aspects, features, and / or advantages of the examples will be partially set forth in the following description, and will be partially apparent from the description, or can be learned through the practice of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Examples are described with reference to the following figures.

[0006] Figure 1 An example computing environment for non-disruptively hibernating and resuming a client environment using a network virtual service client is shown.

[0007] Figure 2 An example method for non-disruptively hibernating a client environment using a network virtual service client is shown.

[0008] Figure 3 An example method for non-disruptively restoring a client environment using a network virtual service client is shown.

[0009] Figure 4 is a block diagram illustrating example physical components of a computing device for practicing aspects of the present disclosure.

[0010] Figure 5 is a simplified block diagram of an example distributed computing system for practicing aspects of the present disclosure. DETAILED DESCRIPTION

[0011] A host operating system (OS) can host and execute one or more client environments, such as virtual machines (VMs) or containers. When a client environment is executing, the client environment consumes resources (e.g., processing, network, storage) of the host OS. When a client environment is dormant (e.g., enters a sleep mode or similar low-power mode), the client environment stops consuming resources of the host OS or consumes significantly fewer resources of the host OS.

[0012] When the client environment is dormant, the virtual network interface card (VNIC) utilized by the client environment clears the operating state of the VNIC. The operating state includes receiver scaling (RSS) configuration data, transmission control protocol / Internet protocol (TCP / IP) and other network stack upper layer protocol unloading or configuration, and / or other configuration settings associated with the client environment. As used herein, RSS is a network driver technology that enables efficient distribution of network reception processing across multiple central processing units (CPUs) in a multi-processor system. In addition to clearing the operating state of the VNIC, the communication channel (e.g., VM bus channel) between the client environment and the components (e.g., host OS, hypervisor, network virtual service provider) that manage the client environment is also removed.

[0013] Previously, when a client environment was restored, the client environment needed to request configuration settings and other information from various components associated with the client environment to allow the VNIC to recreate the cleared operational state. As an example, the client environment requested configuration settings from the network stack of the client environment to enable the VNIC to reconfigure the offloaded protocol functions for the various upper layer protocols of the network stack. Such requests are disruptive to the network stack and applications that may be affected by the request. Additionally, the communication channels between the client environment and the components that manage the client environment must be recreated, which takes time and consumes resources.

[0014] The present disclosure provides a solution that can use a network virtual service client to sleep and resume a client environment without interruption. In an embodiment of the present disclosure, a host OS includes a virtual management OS, which includes a network virtual service provider (NVSP) and a network driver interface (NDI) ("host NDI"). NVSP is a component that processes network requests from a client environment, such as a software driver. Host NDI supports interface connections with upper layer protocols (such as filter drivers, intermediate drivers, and protocol drivers). The host OS also includes a client environment, which includes a network virtual service client (NVSC) and a VNIC. NVSC is a component that exposes a virtualized view of a physical network adapter of the host OS and sends network requests between a client environment and NVSP, such as a software driver. NVSC notifies the NDI ("client NDI") implemented by the client environment of the ability to perform power management for the VNIC. The VNIC represents the network interface configuration of the client environment and provides a connection between the client environment and the physical network.

[0015] When the client environment is in hibernation, the client NDI provides instructions to the NVSC to set the device power state of the VNIC to a low (or lower) power state. In an example, the instructions are in the form of an object (e.g., an information element) or an object identifier (OID) of an object. When the client environment is in hibernation, the client NDI prevents additional instructions from being sent to the VNIC. When setting the device power state of the VNIC to a low power state, the NVSC disables the communication channel between the NVSC and the NVSP, and saves the operating state of the VNIC to a persistent memory location of the host OS.

[0016] When the client environment is restored, the client NDI provides instructions to the NVSC to set the device power state of the VNIC to a full power state (or a power state that enables the VNIC to resume functionality). In response to restoring the client environment, the client NDI stops blocking instructions from being sent to the VNIC. When setting the device power state of the VNIC to a full power state, the NVSC re-enables and realigns the communication channels that were disabled during the hibernation of the client environment. The NVSC then restores the operating state of the VNIC from the memory of the NVSC, thereby enabling the client environment to be hibernated and resumed efficiently and without interruption, because the upper layer protocols of the client environment do not need to know that the low-level NVSC has hibernated or resumed the VNIC.

[0017] Therefore, the present disclosure provides multiple technical advantages and improvements over previous solutions for hibernating and resuming client environments. These technical advantages and improvements include: storing the operating state of the VNIC in a persistent memory location during hibernation of the client environment, restoring the operating state of the VNIC from the persistent memory location when the client environment is resumed, and restoring the operating state of the VNIC without recreating the communication channel between the NVSC and the NVSP or requesting configuration settings from upper layer protocols or applications of the client environment, etc. These technical advantages and improvements result in less interference with systems and components related to the VNIC and communicating with the VNIC, faster wake-up (e.g., resume from hibernation) time of the VNIC, and making the wake-up of the VNIC and / or the client environment more reliable.

[0018] Figure 1 A computing environment for hibernating and resuming a client environment without interruption using NVSC is shown. The example computing environment 100 presented is a combination of interdependent components that interact with each other to form an integrated whole. The components of the computing environment 100 can be hardware components or software components (e.g., application programming interfaces (APIs), modules, runtime libraries) implemented on and / or executed by hardware components of the computing environment 100. In one example, the components of the computing environment 100 are distributed across multiple computing devices or computing systems.

[0019] exist Figure 1 In the embodiment of the present invention, computing environment 100 includes management OS 102, client environments 104 and 106, communication bus 108, and physical network adapter 110. The size and structure of computing environment 100 can vary and can include more than one Figure 1 In an example, computing environment 100 is implemented by a host computing device as part of a virtualized computing environment. Examples of host computing devices include personal computers (PCs), server devices, mobile devices (e.g., smartphones, tablet computers, notebook computers, personal digital assistants (PDAs)), wearable devices (e.g., smart watches, smart glasses, fitness trackers, smart clothing, airborne devices, head-mounted displays), game consoles or devices, and Internet of Things (IoT) devices.

[0020] The management OS 102 can directly access the physical memory and devices of the host computing device and manage machine-level functions such as device drivers, power management, and device addition and removal. The management OS 102 creates and starts the client environments 104 and 106 and manages the state of the client environments 104 and 106. The management OS 102 also processes requests sent to and from the client environments 104 and 106 (e.g., network requests and device access requests).

[0021] Management OS 102 includes NVSP 112 and host NDI 114. NVSP 112 provides services to support network access for client environments 104 and 106. NVSP 112 communicates over communication bus 108 to process requests from client environments 104 and 106. Host NDI 114 manages the NIC implemented by the host OS of the host computing device and sends and receives data through the NIC. Managing the NIC includes providing power management instructions, device security instructions, and other types of instructions and device configuration options to the NIC.

[0022] Client environments 104 and 106 are emulations (e.g., virtualizations) of physical computing devices and / or OSs, and use software to provide the functionality of physical computing devices. Examples of client environments 104 and 106 include VMs, containers, and other virtual OSs and environments. In an example, client environments 104 and 106 cannot directly access the physical memory and devices of the host computing device. Instead, client environments 104 and 106 request access to the physical memory and devices of the host computing device through management OS 102.

[0023] The client environment 104 includes an NVSC 116, a VNIC 118, and a client NDI 119. The NVSC 116 exposes a virtualized view of the physical network adapter 110 to the client environment 104 and sends requests between the client environment 104 and the NVSP 112 through the communication bus 108. In an example, the NVSC 116 announces to the client NDI 119 the ability to perform power management of the VNIC 118. This announcement by the NVSC 116 enables the client NDI 119 to send instructions to the VNIC 118, such as device power conversion instructions. The NVSC 116 tracks and saves the operating state of the VNIC 118 in response to various events, such as power management events of the VNIC 118. The operating state of the VNIC 118 is stored by the NVSC 116 in a persistent memory location. During these events, the NVSC 116 also manages the communication between the client environment 104 and the NVSP 112. As a specific example, the NVSC 116 disables the communication channel 124 of the communication bus 108. Disabling a communication channel does not remove the communication channel or render the communication channel permanently inoperable. Rather, disabling a communication channel temporarily deactivates the communication channel.

[0024] The VNIC 118 is a virtualized view of the physical network adapter 110. The VNIC 118 enables the client environment 104 to send data to / from the physical network through the physical network adapter 110. In an example, the VNIC 118 is configured according to the RSS configuration data of the client environment 104. The RSS configuration data specifies to the VNIC 118 how the data packets received by the VNIC 118 will be distributed between the CPUs of the client environment 104. The VNIC 118 also implements protocol functions that are offloaded from upper layer protocols. In a specific example, the processing of address resolution protocol (ARP) requests and robust security network (RSN) handshakes are offloaded to the VNIC 118. The VNIC 118 includes multiple power states that affect the functions of the VNIC 118. In one example, the VNIC 118 includes a full power state, an intermediate power state, and a low power state. In the full power state, all functions of the VNIC 118 are available. In the intermediate power state, a subset of the functions of the VNIC 118 are available (for example, event logging functions are available, but data transmission functions are not available). In the low power state, all functionality of VNIC 118 is unavailable.

[0025] The client NDI 119 manages VNIC(s) (such as VNIC 118) implemented by the client environment 104 and sends and receives data through the VNIC(s). Managing the VNICs includes providing power management instructions, device security instructions, and other types of instructions and device configuration options to the VNICs. Managing the VNICs also includes preventing instructions from being sent to the VNICs during or in response to certain events. As a specific example, when the client environment 104 is in hibernation or shut down, the client NDI 119 prevents instructions from being sent to the VNIC 118. The client NDI 119 interfaces with upper layer protocols (e.g., filter drivers, intermediate drivers, protocol drivers) through a software library that includes functionality that encapsulates various OS functions of the host computing device.

[0026] The client environment 106 includes an NVSC 120, a VNIC 122, and a client NDI 123. The NVSC 120 exposes a virtualized view of the physical network adapter 110 to the client environment 106, and sends requests between the client environment 106 and the NVSP 112 over the communication bus 108. As discussed with respect to the NVSC 116 and the VNIC 118, the NVSC 120 advertises to the client NDI 123 the ability to perform power management of the VNIC 122, and manages the operational state of the VNIC 122. In some implementations, the VNIC 122 is similar in function and configuration to the VNIC 118. In some implementations, the client NDI 123 is similar in function and configuration to the client NDI 119.

[0027] Communication bus 108 is a virtual communication mechanism for sending requests and other data between NVSP 112 and client environments 104 and 106. Communication bus 108 includes communication channels 124 and 126. Figure 1 12, communication channel ("channel") 124 is used to send requests between NVSC 116 and NVSP 112, and channel 126 is used to send requests between NVSC 120 and NVSP 112. However, in alternative embodiments, channels 124 and 126 are configured differently. In one example, channel 124 sends requests between NVSC 120 and NVSP 112, and channel 126 sends requests between NVSC 116 and NVSP 112. In another example, channel 124 sends data between NVSC 116 and NVSC 120, and channel 126 sends data between NVSC 116 and NVSP 112 and between NVSC 120 and NVSP 112. NVSC 116 or NVSC 120 may collectively or individually disable channels 124 and / or 126 in response to certain events, such as hibernation or shutdown of client environment 104, client environment 106, VNIC 118, and / or VNIC 122.

[0028] Physical network adapter 110 is a hardware component of a host computing device that connects the host computing device to a physical network. Physical network adapter 110 enables client environments 104 and 106 to communicate with a physical network external to the host computing device.

[0029] Having described devices and environments in which aspects of the present disclosure may be employed, methods for performing these aspects will now be described. In an example, methods 200 and 300 may be performed by a device such as Figure 1 However, methods 200 and 300 are not limited to this example.

[0030] Figure 2A method for hibernating a client environment without interruption using NVSC is shown. Method 200 begins at operation 202, where an NVSC implemented in a client environment (such as NVSC 116 and 120) announces the ability to provide power management of a NIC implemented in a client environment (such as VNIC 118 and 122). NVSC announces the power management capability to a driver interface mechanism (such as client NDI 119 and 123) implemented by a management system (such as management OS 102). NVSC and management system are implemented in a virtual environment hosted by a host computing device. In one example, NVSC announces the power management capability by sending a notification message to the driver interface mechanism. The notification message includes an identifier of the NIC (e.g., VNIC 118 or 122) and a list of power management events that NVSC can manage. The notification message is sent periodically (e.g., once a day or a week) or in response to a detected event (e.g., starting or restoring a client environment, software update, adding or removing a component). In another example, the NVSC advertises power management capabilities by setting a configuration option (eg, a flag, parameter value, software version number) of the NVSC that is accessible or queried by the driver interface mechanism.

[0031] In some examples, in response to the notification identifying the power management capability, the driver interface mechanism sends a confirmation message to the NVSC indicating that the NVSC will be used to provide power management for the NIC. Based on the confirmation message, the NVSC configures the NIC to receive device power state instructions from the driver interface mechanism. In other examples, the NIC has been preconfigured to receive device power state instructions from the driver interface mechanism. In this way, the NVSC does not need to configure the NIC to receive device power state instructions from the driver interface mechanism.

[0032] At operation 204, the NVSC receives an instruction to set the power state of the NIC to a low (or lower) power state. The instruction is provided by the driver interface mechanism, and in some examples, the instruction is in the form of an OID of an object managed by the driver interface mechanism. For example, the instruction is a SET_POWEROID corresponding to an object for setting the power state of the VNIC. In an example, the instruction is provided to the NVSC in response to a power event (e.g., sleep, shutdown, maintenance mode) of a client environment (such as client environments 104 and 106) associated with the VNIC.

[0033] At operation 206, the NVSC sets the power state of the VNIC to a low power state according to the received instruction. Setting the power state of the VNIC includes updating the first power state value to the second power state value, or assigning the power state value to a previously empty or non-existent value. The power state of the VNIC is represented using a numerical value, a text label (e.g., low, medium, high, sleep, hibernation), or any other indication method (e.g., color or image). In one example, the power state of the VNIC is represented as a numerical value in the range of 0 to 3, where 0 indicates full power (e.g., full functionality available), 1 indicates a high power sleep state (e.g., a subset of functionality available), 2 indicates a medium power sleep state (e.g., a subset of functionality available, and the power used is less than state 1), and 3 indicates a lower power sleep state (e.g., no functionality or only a subset of functionality available, and the power used is less than state 2). When the VNIC is set to a low power state, the driver interface mechanism prevents additional instructions from being sent to the VNIC.

[0034] At operation 208, NVSC disables the communication channel for communicating between the VNIC and the management system. In an example, the communication channel is used to send requests and other data between the management system and the client environment associated with the VNIC. The communication channel used by the client environment associated with the VNIC to communicate with other client environments in the virtual environment may also be disabled. Disabling the communication channel includes temporarily suppressing the data transmission of the communication channel or temporarily disabling the ability of the communication channel to receive requests or other data transmissions. Disabling the communication channel does not remove or destroy the communication channel. In some examples, the client environment associated with the VNIC ("first client environment") shares the virtual environment with the client environment ("second client environment") of the VNIC that has not received an instruction to change the power state. For example, the first client environment is in hibernation, and the second client environment is not in hibernation. In such an example, the communication channel (s) of the first client environment is disabled, and the communication channel (s) of the second client environment is not disabled.

[0035] At operation 210, NVSC saves the operating state of VNIC in a persistent memory location. Saving the operating state of VNIC includes saving RSS configuration data of VNIC, protocol functions unloaded from upper layer protocols to VNIC, and any other configuration settings previously configured in the upper layer protocols provided to VNIC. In one example, RSS configuration data is stored in VNIC as a table (or similar data structure), and specifies the alignment of the communication channel between NVSC and the management system. For example, alignment specifies a specific communication channel (or a specific communication channel group), such as channel 124 and / or 126, which will be used to send a request or other data transmission between the NVSP (such as NVSP 112) implemented by the client environment and the management system. In some examples, RSS configuration data also specifies that a specific transmission queue of VNIC will receive a data packet of a specific type. NVSC saves the operating state of VNIC in a persistent memory so that when the client environment is in hibernation, the operating state of VNIC will not be lost. As an example, NVSC stores the operating state as a binary large object (blob) of a memory object in a hard disk drive of a host computing device.

[0036] Figure 3 Methods for using NVSC to non-disruptively restore a client environment are shown. In some examples, Figure 3 Operation in Figure 2 As a specific example, operation 210 of method 200 may continue to Figure 3 Method 300 begins at operation 302, where an NVSC implemented in a client environment (such as NVSC 116 and 120) receives an instruction to set a power state of a VNIC implemented in the client environment (such as VNIC 118 and 122) to a high (or higher) power state. The instruction is provided by a driver interface mechanism implemented by the client environment (such as client NDI 119 and 123). The NVSC and management system are implemented in a virtual environment hosted by a host computing device. In an example, the instruction is provided to the NVSC in response to a power event (e.g., recovery, startup, exit maintenance mode) of a client environment (such as client environment 104 and 106) associated with the VNIC.

[0037] At operation 304, the NVSC sets the power state of the VNIC to a high (or higher) power state according to the received instruction. Figure 2As discussed in operation 206 of , setting the power state of the VNIC includes updating the first power state value to the second power state value, or assigning the power state value to a previously null or none value. When the VNIC is set to a (higher) power state, the driver interface mechanism that prevents instructions from being sent to the VNIC when the VNIC is in a low (or lower) power state stops preventing instructions from being sent to the VNIC.

[0038] At operation 306, the NVSC re-enables a previously disabled communication channel for communicating between the VNIC and the management system. A communication channel for a client environment associated with the VNIC to communicate with other client environments in the virtual environment may also be re-enabled. Re-enabling a communication channel includes stopping inhibiting data transmission of the communication channel or re-activating the ability of the communication channel to receive requests or other data transmissions.

[0039] At operation 308, the NVSC realigns the re-enabled communication channels. Realigning the communication channels includes allocating specific communication channels (or groups of communication channels), such as channels 124 and / or 126, to send requests or other data transmissions between the client environment and the management system. In some examples, realigning the communication channels also includes allocating specific transmission queues of the VNIC to receive specific types of data packets (e.g., raw Internet Protocol (IP) packets, Internet Control Message Protocol (ICMP) packets, User Datagram Protocol (UDP) packets, Transmission Control Protocol (TCP) packets).

[0040] At operation 310, the NVSC restores the operational state of the NIC. Restoring the operational state of the VNIC includes retrieving the operational state from a persistent memory location of the host computing device. In an example, the operational state includes RSS configuration data for the VNIC, protocol functions offloaded from upper layer protocols to the VNIC, and any other previously configured configuration settings in the upper layer protocols that have been provided to the VNIC. In one example, the protocol functions offloaded from the upper layer protocols to the VNIC include lower power protocol offloads, such as IP version 4 (IPv4) ARP, IP version (IPv6) neighbor solicitation (NS), and Institute of Electrical and Electronics Engineers (IEEE) technical standard 802.11RSN 4-way and 2-way handshakes. When the operational state of the VNIC is restored, the client environment associated with the VNIC is once again able to communicate with a physical network external to the host computing device. Thus, Figure 2 and Figure 3 The operation provides users with efficient and seamless hibernation and resumption of client environments in a manner that does not disrupt the client environment's network stack and applications.

[0041] Figures 4 to 5 and the associated descriptions provide a discussion of various operating environments in which aspects of the present disclosure may be practiced. Figures 4 to 5 The devices and systems shown and discussed are for purposes of example and explanation, and it is appreciated that a wide variety of computing device configurations may be used to practice the various aspects of the present disclosure described herein.

[0042] Figure 4 4 is a block diagram illustrating the physical components (e.g., hardware) of a computing device 400, which can be used to practice aspects of the present disclosure. The computing device components described below may be applicable to the computing devices and systems described above. In a basic configuration, the computing device 400 includes a processing system 402 and a system memory 404, the processing system 402 including at least one processing unit. Depending on the configuration and type of the computing device, the system memory 404 may include volatile storage (e.g., random access memory), non-volatile storage (e.g., read-only memory), flash memory, or any combination of such memories.

[0043] System memory 404 includes operating system 405 and one or more program modules 406 suitable for running software applications 420, such as one or more components supported by the system described herein. For example, operating system 405 may be suitable for controlling the operation of computing device 400.

[0044] Furthermore, embodiments of the present disclosure may be practiced in conjunction with a graphics library, other operating systems, or any other application, and are not limited to any particular application or system. Figure 4 408. Computing device 400 may have additional features or functionality. For example, computing device 400 may also include additional data storage devices (removable and / or non-removable), such as magnetic disks, optical disks, or tapes. Such additional storage devices may be used to store data. Figure 4 4 is shown by a removable storage device 407 and a non-removable storage device 410.

[0045] As described above, a number of program modules and data files may be stored in system memory 404. Program modules 406 (e.g., applications 420) may perform processes including these aspects when executed on processing system 402 as described herein. Other program modules that may be used in accordance with aspects of the present disclosure include email and contact applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-assisted applications, and the like.

[0046] In addition, embodiments of the present disclosure may be practiced on circuits including discrete electronic components, packaged or integrated electronic chips containing logic gates, circuits utilizing microprocessors, or single chips containing electronic components or microprocessors. For example, embodiments of the present disclosure may be practiced via a system on a chip (SOC) wherein Figure 4 Each or many of the components shown in can be integrated onto a single integrated circuit. Such a SOC device may include one or more processing units, a graphics unit, a communication unit, a system virtualization unit, and various application functions, all of which are integrated (or "burned") on a chip substrate as a single integrated circuit. When operated by a SOC, the functions described herein regarding the ability of a client to switch protocols can be operated by dedicated logic integrated with other components of the computing device 400 on a single integrated circuit (chip). Other technologies capable of performing logical operations (such as AND, OR, and NOT) may also be used to practice embodiments of the present disclosure, including mechanisms, optics, fluids, and quantum technologies. In addition, embodiments of the present disclosure may be practiced within a general-purpose computer or in any other circuit or system.

[0047] The computing device 400 may also have one or more input devices 412, such as a keyboard, a mouse, a pen, a sound or voice input device, a touch or slide input device, etc. It may also include (multiple) output devices 414, such as a display, a speaker, a printer, etc. The above-mentioned devices are examples, and other devices may be used. The computing device 400 may include one or more communication connections 416 that allow communication with other computing devices 450. Examples of suitable communication connections 416 include radio frequency (RF) transmitters, receivers, and / or transceiver circuit systems; universal serial bus (USB), parallel, and / or serial ports.

[0048] The term computer-readable medium used herein includes computer storage media. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storing information (such as computer-readable instructions, data structures, or program modules). System memory 404, removable storage device 407, and non-removable storage device 410 are all examples of computer storage media (e.g., memory storage devices). Computer storage media may include random access memory (RAM), read-only memory (ROM), electrically erasable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, or any other products that can be used to store information and can be accessed by computing device 400. Any such computer storage media may be part of computing device 400. Computer storage media do not include carrier waves or other propagated or modulated data signals.

[0049] Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" describes a signal that has one or more characteristics set or changed in a manner that encodes information in the signal. By way of example, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.

[0050] Figure 5 One aspect of the architecture of a system as described above for processing data received at a computing system from a remote source, such as a personal computer 504, a tablet computing device 506, or a mobile computing device 508, is shown. The content displayed at the server device 502 may be stored in different communication channels or other storage types. For example, a directory service 522, a web portal 524, a mailbox service 526, an instant messaging store 528, or a social networking site 530 may be used to store various documents.

[0051] Clients communicating with server device 502 may employ input evaluation service 520, and / or server device 502 may employ input evaluation service 520. Server device 502 may provide data to and from client computing devices, such as personal computers 504, tablet computing devices 506, and / or mobile computing devices 508 (e.g., smartphones), over network 515. As an example, the computer system described above may be embodied in personal computers 504, tablet computing devices 506, and / or mobile computing devices 508 (e.g., smartphones). In addition to receiving graphics data that may be used for pre-processing at a graphics originating system or post-processing at a receiving computing system, any of these embodiments of the computing device may obtain content from storage 516.

[0052] It will be appreciated from this disclosure that one example of the technology discussed herein relates to a system comprising: a processor; and a memory coupled to the processor, the memory comprising computer executable instructions that, when executed by the processor, perform operations. The operations include: receiving an instruction by a network virtual service client (NVSC) implemented in a client environment to set a power state of a network interface card (NIC) to a lower power state, wherein the NIC is implemented in the client environment; setting the power state of the NIC to a lower power state based on the instruction; disabling a communication channel between the NIC and a management operating system (OS) managing the client environment; and saving an operational state of the NIC in a persistent memory location.

[0053] In another example, the technology discussed herein relates to a system comprising: a processor; and a memory coupled to the processor, the memory comprising computer executable instructions that, when executed by the processor, perform operations. The operations include: receiving an instruction by a network virtual service client (NVSC) implemented in a client environment to set a power state of a network interface card (NIC) to a higher power state, wherein the NIC is implemented in the client environment; setting the power state of the NIC to a higher power state based on the instruction; enabling a communication channel between the NIC and a management operating system (OS) managing the client environment; aligning the communication channel between the NIC and the management OS; and restoring an operating state of the NIC from a persistent memory location.

[0054] In another example, the technology discussed herein relates to a method comprising: receiving, by a network virtual service client (NVSC) of a client environment, an instruction to set a power state of a network interface card (NIC) to a lower power state, wherein the instruction is provided by a virtual management component that manages the client environment; setting, by the NVSC, the power state of the NIC to the lower power state based on the instruction; disabling, by the NVSC, a communication channel between the NIC and the virtual management component; and saving an operating state of the NIC in a persistent memory location.

[0055] For example, the above text has described various aspects of the present disclosure with reference to the block diagram and / or the operation diagram of the method, system, and computer program product according to various aspects of the present disclosure. The function / action noted in the box may not occur in the order shown in any flow chart. For example, depending on the function / action involved, the two blocks shown in succession may actually be performed substantially simultaneously, or sometimes these blocks may be performed in the reverse order.

[0056] The description and illustration of one or more aspects provided in this application are not intended to limit or restrict the scope of the disclosure claimed in any way. The aspects, examples, and details provided in this application are considered to be sufficient to convey ownership and enable others to make and use the best mode of the disclosure claimed. The disclosure claimed should not be interpreted as being limited to any aspect, example, or detail provided in this application. Whether combined or displayed and described individually, various features (structures and methods) are intended to be selectively included or omitted to produce an embodiment with a specific feature set. Having been provided with the description and illustration of this application, a technician in the field can envision changes, modifications, and alternative aspects that fall within the spirit of the broader aspects of the overall inventive concept embodied in this application, and these changes, modifications, or alternative aspects do not depart from the broader scope of the disclosure claimed.

Claims

1. A system comprising: Processing systems; as well as a memory coupled to the processing system, the memory comprising computer executable instructions that, when executed by the processing system, perform operations comprising: receiving, by a network virtual service client (NVSC) implemented in a client environment, an instruction to set a power state of a network interface card (NIC) to a lower power state, wherein the NIC is implemented in the client environment; setting the power state of the NIC to the lower power state based on the instruction; disabling a communication channel between the NIC and a management operating system (OS) managing the client environment; and An operational state of the NIC is saved in a persistent memory location. 2 . The system of claim 1 , wherein the client environment and the management OS are implemented in a virtual environment hosted by a host computing device.

3. The system of claim 1, wherein the operations further comprise: A capability to provide power management for the NIC is advertised by the NVSC to a driver interface implemented by the client environment.

4. The system of claim 3, wherein the capability advertised to provide power management comprises at least one of: transmitting a notification message to the driver interface; or Setting configuration options of the NVSC accessible by the driver interface.

5. The system of claim 1, wherein the instructions are provided by the management OS in response to hibernation of the client environment. 6 . The system of claim 1 , wherein the management OS prevents additional instructions from being sent to the NIC when the power state of the NIC is set to the lower power state.

7. The system of claim 1, wherein the lower power state prevents the NIC from transmitting data.

8. The system of claim 1 , wherein disabling the communication channel comprises at least one of: temporarily suppressing data transmission on the communication channel; or Temporarily disables the communication channel's ability to receive data transmissions.

9. The system of claim 1, wherein the operating state of the NIC comprises at least one of the following: Receive Side Scaling (RSS) configuration data of the NIC; or The protocol functions from the upper layer protocols are offloaded to the NIC.

10. The system of claim 9, wherein the RSS configuration data specifies an alignment of the communication channels.

11. The system of claim 10, wherein the RSS configuration data further specifies that a particular transmit queue of the NIC is to receive a particular type of data packet.

12. A system comprising: Processing systems; as well as a memory coupled to the processing unit, the memory comprising computer executable instructions that, when executed by the processing system, perform operations comprising: receiving, by a network virtual service client (NVSC) implemented in a client environment, an instruction to set a power state of a network interface card (NIC) to a higher power state, wherein the NIC is implemented in the client environment; setting the power state of the NIC to the higher power state based on the instruction; enabling a communication channel between the NIC and a management operating system (OS) managing the client environment; aligning the communication channel between the NIC and the management OS; and The operational state of the NIC is restored from a persistent memory location.

13. The system of claim 12, wherein the instructions are provided by the management OS in response to resuming the client environment from hibernation.

14. The system of claim 12, wherein setting the power state of the NIC to the higher power state causes the management OS to allow instructions to the NIC.

15. A method comprising: receiving, by a network virtual services client (NVSC) of a client environment, an instruction to set a power state of a network interface card (NIC) to a lower power state, wherein the instruction is provided by a virtual management component managing the client environment; setting, by the NVSC, the power state of the NIC to the lower power state based on the instruction; disabling, by the NVSC, a communication channel between the NIC and the virtual management component; and An operational state of the NIC is saved in a persistent memory location.