EP2832051B1 - Method, device, and system for delaying packets during a network-triggered wake of a computing device - Google Patents
Method, device, and system for delaying packets during a network-triggered wake of a computing device Download PDFInfo
- Publication number
- EP2832051B1 EP2832051B1 EP12873215.3A EP12873215A EP2832051B1 EP 2832051 B1 EP2832051 B1 EP 2832051B1 EP 12873215 A EP12873215 A EP 12873215A EP 2832051 B1 EP2832051 B1 EP 2832051B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- packet
- computing device
- power
- host computing
- managed state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3209—Monitoring remote activity, e.g. over telephone lines or network connections
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/12—Arrangements for remote connection or disconnection of substations or of equipment thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W52/00—Power management, e.g. Transmission Power Control [TPC] or power classes
- H04W52/02—Power saving arrangements
- H04W52/0209—Power saving arrangements in terminal devices
- H04W52/0225—Power saving arrangements in terminal devices using monitoring of external events, e.g. the presence of a signal
- H04W52/0229—Power saving arrangements in terminal devices using monitoring of external events, e.g. the presence of a signal where the received signal is a wanted signal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Definitions
- Modern computing devices have become increasingly reliant on network-based content and services to provide an enhanced user experience.
- host computing devices that provide network-based content and services need to be available to answer requests received over a network.
- host computing devices are often configured to operate in an always-on and always-connected manner.
- many network-based content and service providers are utilizing a variety of energy-saving, power-managed states that are typically built into host computing devices such as, for example, low-power sleep or hibernate states.
- providers may configure host computing devices to remotely wake up upon receiving one or more specially-identified packets, subsequently referred to as packets or wake packets, over the network from a requesting device.
- the requesting device expects a reliable connection to be formed with the host computing device shortly after sending a packet to initiate a connection.
- it often takes some amount of time for one or more components of the host computing device to reach an operational state after receiving an initial packet that triggers a wake-up. This is especially true in complex host computing devices having a number of interdependent components.
- the initial packet is often lost and the requesting computing device is typically required to resend the packet at increasing time intervals, which in turn, increases the overall time needed to establish a connection.
- US2010257391A1 discloses an apparatus and method of interfacing physical layer (PHY) control with media access control (MAC) is disclosed.
- One method includes signaling to the PHY control to operate in a low-power mode when the MAC is detected to be transmitting idle patterns.
- the MAC transitioning from transmitting the idle patterns to transmitting data can be detected.
- the PHY control is signaled to transition to a wake up mode.
- Data from the MAC is buffered while the PHY control is in the wake up mode.
- the buffered data is provided to the PHY control after the PHY control has completed the wake up mode.
- US2011066868A1 discloses a computing system including a controller configured to undergo a variably delayed wakeup transition.
- the controller is configured to transition a processing module from an idle state to an active state in response to successive assertions of a wakeup interrupt command.
- the system includes a variable delay module configured to vary delay lengths between assertion and execution of each of the successive wakeup interrupt commands during the wakeup transition to substantially cause power supply components to vibrate in a non-periodic manner.
- US7392279B1 discloses a time-based buffering system which buffers data based upon how long the data should be held in order to comply with a traffic shaping policy.
- the data's source or destination need not be considered in determining where to buffer the data.
- the time-based buffering system includes a collection of time-based queues, each of which has a different time to dequeue.
- the system controlling traffic shaping determines how long a particular piece of data should be buffered (a "traffic shaping delay") until it can be put on the network. Then, based upon that length of time, the system chooses one of the time-based of queues in which to buffer the data. That chosen queue has a dequeuing time that matches the traffic shaping delay. After the chosen queue dequeues its contents (at the specified time), it assumes a new dequeing time and is free to buffer new data that must be delayed by a time matching the new dequeuing time.
- US8077607B1 discloses a system for a dynamic response to traffic bursts in a computer network wherein a node receives traffic sent from one or more sources toward one or more destinations (e.g., Multipoint-to-Point, MP2P traffic).
- the node may detect a burst of received traffic based on one or more characteristics of the burst traffic, and, in response, may dynamically apply traffic shaping to the burst traffic.
- the traffic shaping is adapted to forward burst traffic received below a configurable threshold at a configurable pace and to drop burst traffic received above the configurable threshold.
- the node may also store the burst traffic dropped by traffic shaping, and forwards the stored burst traffic toward its destination after a configurable delay.
- references in the specification to "one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
- Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof.
- Embodiments of the invention implemented in a computer system may include one or more bus-based interconnects between components and/or one or more point-to-point interconnects between components.
- Embodiments of the invention may also be implemented as instructions carried by or stored on a transitory or non-transitory machine-readable medium, which may be read and executed by one or more processors.
- a machine-readable medium may be embodied as any device, mechanism, or physical structure for storing or transmitting information in a form readable by a machine (e.g., a computing device).
- a machine-readable medium may be embodied as read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; mini- or micro-SD cards, memory sticks, electrical signals, and others.
- schematic elements used to represent instruction blocks may be implemented using any suitable form of machine-readable instruction, such as software or firmware applications, programs, functions, modules, routines, processes, procedures, plug-ins, applets, widgets, code fragments and/or others, and that each such instruction may be implemented using any suitable programming language, library, application programming interface (API), and/or other software development tools.
- API application programming interface
- some embodiments may be implemented using Java, C++, and/or other programming languages.
- schematic elements used to represent data or information may be implemented using any suitable electronic arrangement or structure, such as a register, data store, table, record, array, index, hash, map, tree, list, graph, file (of any file type), folder, directory, database, and/or others.
- connecting elements such as solid or dashed lines or arrows
- the absence of any such connecting elements is not meant to imply that no connection, relationship or association can exist.
- some connections, relationships or associations between elements may not be shown in the drawings so as not to obscure the disclosure.
- a single connecting element may be used to represent multiple connections, relationships or associations between elements.
- a connecting element represents a communication of signals, data or instructions
- such element may represent one or multiple signal paths (e.g., a bus), as may be needed, to effect the communication.
- a system 100 for delaying incoming packets during a network-triggered wake of a computing device in a low-power state includes a host computing device 102, a remote computing device 130, and a communications network 140.
- the host computing device 102 may receive a packet transmitted by the remote computing device 130 over the communications network 140 to initiate and/or maintain a connection.
- the received packet may trigger initiation of a wake process to transition the host computing device 102, or one or more components of the host computing device 102, from a low-power state to an operational power state.
- the received packet may represent both a wake packet and a packet to initiate and/or maintain a connection.
- the host computing device 102 may delay delivery of the packet to a destined component while the host computing device 102 achieves a fully operational power state. For example, in some embodiments, the host computing device 102 may delay delivery of the received packet to one or more components (e.g., firmware, hardware, software, operating systems, applications. etc.) while the host computing device 102, or the one or more components of the host computing device 102 achieve a fully operational power state. Once an operational power state has been reached by the host computing device and/or the one or more components of the host computing device (e.g., firmware, hardware, software, operating systems, applications, services, etc.), the host computing device 102 may release, inject, or replay the delayed packet for further processing.
- the host computing device 102 may release, inject, or replay the delayed packet for further processing.
- the overall time to connect may be reduced and/or minimized because the host computing device 102 may not be required to wait for a network stack of the remote computing device 130 to resend the initial packet, which otherwise would have been lost.
- connection errors can be reduced and the reliability and/or stability of an incoming connection after a network-triggered wake may be improved.
- the host computing device 102 may hold and/or buffer the packet for a reference delay time before releasing the packet for further processing. Additionally or alternatively, in some embodiments, the host computing device 102 may buffer and/or save the packet until being notified that one or more components of the host computing device 102 has reached a fully operational power state and, therefore, is available to further process the packet. Upon receiving such a notification, the host computing device 102 may replay and/or inject the packet for further processing by the one or more available components.
- the initial packet received from the remote computing device 130 may comprise a packet for initiating a new connection and/or maintaining an existing connection with the host computing device and/or one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.) of the host computing device 102.
- the received packet may, additionally or alternatively, trigger execution of a wake process on the host computing device 102 to transition one or more components from a low-power state to an operational power state or otherwise ready state.
- the host computing device 102 may be embodied as any type of computing device for processing data and communicating with remote devices.
- the host computing device 102 may be embodied as a computing tablet/reader, a laptop, a mobile internet device (MID), a handheld computer, a smart phone, a personal digital assistant, an electronic book reader, or other computing device for storing and processing data and/or communicating, storing, maintaining, and transferring data over a network.
- the host computing device 102 includes a processor 104, an I/O subsystem 110, a memory 108, a data storage 116, communication circuitry 114, and one or more peripheral devices 118.
- the host computing device 102 may include other components, sub-components, and devices commonly found in a computing device, which are not illustrated in FIG. 1 for clarity of the description.
- the host computing device 102 may operate in a number of different power-managed states.
- one or more components of the host computing device 102 may operate in a sleep state (e.g., a low-power state).
- components operating in a low-power state are typically inaccessible (e.g., unavailable) to process data from a remote computing device 130 or from other components of the host computing device 102.
- one or more components of the host computing device 102 may operate in a "powered-on" and fully operational power state.
- the host computing device 102 may include other power-managed states.
- the host computing device 102 may additionally or alternatively include any number of other power-managed states (e.g., standby, hibernate, power off, etc.).
- the host computing device 102 and/or the one or more components of the host computing device 102 may operate in any number of ready states (e.g., available, unavailable, limited availability, etc.).
- the processor 104 of the host computing device 102 may be embodied as any type of processor capable of executing software/firmware, such as a microprocessor, digital signal processor, microcontroller, or the like.
- the processor 104 is illustratively embodied as a single core processor having a processor core 106. However, in other embodiments, the processor 104 may be embodied as a multi-core processor having multiple processor cores 106. Additionally, the host computing device 102 may include additional processors 104 having one or more processor cores 106.
- the I/O subsystem 110 of the host computing device 102 may be embodied as circuitry and/or components to facilitate input/output operations with the processor 104 and/or other components of the host computing device 102.
- the I/O subsystem 110 may be embodied as a memory controller hub (MCH or "northbridge"), an input/output controller hub (ICH or "southbridge”), and a firmware device.
- the firmware device of the I/O subsystem 110 may be embodied as a memory device for storing Basic Input/Output System (BIOS) data and/or instructions and/or other information (e.g., a BIOS driver used during booting of the host computing device 102).
- BIOS Basic Input/Output System
- the I/O subsystem 110 may be embodied as a platform controller hub (PCH).
- the memory controller hub (MCH) may be incorporated in or otherwise associated with the processor 104, and the processor 104 may communicate directly with the memory 108 (as shown by the hashed line in FIG. 1 ).
- the I/O subsystem 110 may form a portion of a system-on-a-chip (SoC) and be incorporated, along with the processor 104 and other components of the host computing device 102, on a single integrated circuit chip.
- SoC system-on-a-chip
- the I/O subsystem 110 may include a Trusted Execution Environment (TEE) engine 112, which may be embodied as an embedded microprocessor such as a security co-processor, that operates independently of the processor 104 to provide a secure and isolated environment that cannot be accessed by the processor 104 or other components of the host computing device 102.
- TEE engine 112 may, in some embodiments, function in an operational power state while the processor 104 and other components of the host computing device 102 are in a low-power state (e.g., sleep, hibernate, etc.).
- the TEE engine 112 may facilitate receiving incoming packets, triggering initiation of a wake procedure for the processor 104 or other components of the host computing device 102 in response to receiving the one or more incoming packets, and/or delaying and then releasing or replaying the packets while the host computing device 102, or one or more components thereof, are waking up from the low-power state and transitioning to an operational power state. In doing so, it appears to the remote computing device 130 that the host computing device 102, or one or more components or services of the host computing device 102, is fully available and operational even though the host computing device 102 is operating in a low-power state.
- the processor 104 is communicatively coupled to the I/O subsystem 110 via a number of signal paths.
- These signal paths may be embodied as any type of signal paths capable of facilitating communication between the components of the host computing device 102.
- the signal paths may be embodied as any number of wires, cables, light guides, printed circuit board traces, via, bus, intervening devices, point-to-point interconnects, and/or the like.
- the memory 108 of the host computing device 102 may be embodied as, or otherwise include, one or more memory devices or data storage locations including, for example, dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate synchronous dynamic random access memory device (DDR SDRAM), mask read-only memory (ROM) devices, erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM) devices, flash memory devices, and/or other volatile and/or non-volatile memory devices.
- the memory 108 is communicatively coupled to the I/O subsystem 110 via a number of signal paths. Although only a single memory device 108 is illustrated in FIG. 1 , the host computing device 102 may include additional memory devices in other embodiments.
- Various data and software may be stored in the memory device 108. For example, one or more operating systems (OS), applications, programs, libraries, and drivers that make up the software stack executed by the processor 104 may reside in memory 108 during execution.
- OS
- the data storage 116 may be embodied as any type of device or devices configured for the short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices.
- the data storage 116 may be used to temporarily store one or more incoming packets and/or information associated with the one or more incoming packets while the host computing device 102, or one or more components thereof, are transitioning from a low-power state to an operational power state after a network-triggered wake. Additionally or alternatively, the data storage 116 may be used to temporarily store a current power state for one or more components of the host computing device 102.
- the communication circuitry 114 of the host computing device 102 may be embodied as any number of devices and circuitry for enabling communications between the host computing device 102 and the remote computing device 130 over the network 140.
- the communication circuitry 114 may be embodied as a network interface controller (NIC) in some embodiments.
- the network 140 may be embodied as any number of various wired and/or wireless communication networks.
- the network 140 may be embodied as or otherwise include a local area network (LAN), a wide area network (WAN), or a publicly-accessible, global network such as the Internet.
- the network 140 may include any number of additional devices to facilitate communication between the host computing device 102 and the remote computing device 130.
- the host computing device 102 and the remote computing device 130 may use any suitable communication protocol to communicate with each other over the network 140 depending on, for example, the particular type of network(s) 140.
- the peripheral devices 118 of the host computing device 102 may include any number of additional input/output devices, interface devices, and/or other peripheral devices.
- the peripheral devices 118 may include a display for displaying content to a user, a keyboard, mouse, or other input/output peripheral device.
- the peripheral devices 118 are communicatively coupled to the I/O subsystem 110 via a number of signal paths thereby allowing the I/O subsystem 110 and/or processor 104 to receive inputs from and send outputs to the peripheral devices 118.
- the remote computing device 130 may be embodied as any type of computing device capable of performing the functions described herein.
- the remote computing device 130 may include various hardware and software components (e.g., a processor, memory, and communication circuitry) typically found in a computing device for communicating, storing, maintaining, and transferring data over a network.
- the illustrative remote computing device 130 transmits a packet to the host computing device 102 over the network 140 to remotely trigger the initiation of a wake procedure by one or more components of the host computing device.
- the packet comprises a specially formatted network message packet (e.g., a "magic packet"), which is sent to the host computing device 102 to trigger one or more components of the host computing device 102 to turn on or wake up (e.g., transition from a low-power state to an operational power state).
- the remote computing device 130 may transmit a wake packet of a specific type (e.g., a TCP SYN packet) to the host computing device 102 to trigger one or more components to wake up. It should be understood that the remote computing device 130 may transmit other types of packets capable of waking up one or more components of the host computing device 102.
- the remote computing device 130 may transmit wake packets targeting a specific port or range of ports being monitored by the host computing device 102, wake packets comprising specific patterns identifiable by the host computing device 102, and/or any other packet or message suitable for use in triggering the host computing device 102 to transition from a low-power state to an operational power state.
- an environment 200 of the host computing device 102 includes a communication module 202, a packet filter/wake trigger module 204, a power state determination module 208, a packet delay module 220, a timer module 222, a packet capture/packet buffer module 230, and a packet injection/packet replay module 232.
- the illustrative environment 200 may not always necessarily include all of the modules illustrated in FIG. 2 . Rather, in some embodiments, the illustrative environment 200 may instead include some portion or combination of the modules illustrated in FIG. 2 .
- the illustrative environment 200 may include the communication module 202, the packet filter/wake trigger module 204, the power state determination module 208, the packet delay module 220, and the timer module 222.
- the illustrative environment 200 may instead include the communication module 202, the packet filter/wake trigger module 204, the power state determination module 208, the packet capture/packet buffer module 230, and the packet injection/packet replay module 232.
- the environment 200, and/or any of the modules included therein may be implemented in hardware, firmware, software, or any combination thereof.
- the host computing device 102 may receive a packet from the remote computing device 130 over the network 140.
- a wake process may be triggered on the host computing device 102 to transition one or more components from a low-power state to an operational power state.
- the host computing device 102 may delay delivery of the packet to one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.) of the host computing device 102 while achieving a fully operational power state.
- the communication module 202 may facilitate communications with the remote computing device 130 over the network 140. Additionally, the communication module 202 of the host computing device 102 and the remote computing device 130 may use any suitable communication protocol to communicate with each other over the network 140 depending on, for example, the particular type of network(s) 140.
- the communication module 202 may be communicatively coupled with the packet filter/wake trigger module 204 to facilitate triggering one or more components of the host computing device 102 to transition from a low-power operating state to an operational (e.g. "powered-on,” functional, available, ready, etc.) power state.
- the packet filter/wake trigger module 204 may receive the incoming packet from the communication module 202. Upon receipt of the packet, the packet filter/wake trigger module 204 may parse or otherwise examine the contents of the packet to determine whether to trigger execution of a wake procedure for one or more components of the host computing device 102.
- the packet filter/wake trigger module 204 may, in some embodiments, determine that the incoming packet is of a specific type (e.g., a TCP SYN packet) being monitored or destined to a specific port (e.g., TCP 5900, TCP 3389, etc.) on the host computing device 102. Additionally or alternatively, the packet filter/wake trigger module 204 may also determine whether the incoming packet, or the contents thereof, matches one or more filters. In such embodiments, the filters comprise one or more configurable rules, which define one or more patterns, bit masks, offsets, destination ports, packet types, and/or any other information indicative of a packet that should trigger a wake. Upon determining that the incoming packet matches one or more of the filters and, therefore, embodies a wake packet, the packet filter/wake trigger module 204 may trigger and/or initiate a wake-up process on the host computing device 102.
- a specific type e.g., a TCP SYN packet
- a specific port
- the host computing device 102 may hold the received packet that triggered the wake process for a reference delay time before releasing the packet for further processing.
- the packet filter/wake trigger module 204 may be communicatively coupled with the packet delay module 220.
- the packet delay module 220 may delay delivery of an incoming packet to other components of the host computing device 102 for a reference delay time.
- the packet delay module 220 may hold and/or buffer the packet for a reference amount of time.
- the packet delay module 220 may hold the packet for an amount of time configured to be less than the transmission timeout for the remote computing device 130.
- the packet delay module 220 may release the packet for further processing by one or more other components of the host computing device 102.
- the packet delay module 220 may be communicatively coupled with the timer module 222 to facilitate holding and/or buffering the incoming packet for the reference amount of time.
- the timer module 222 may keep track of an amount of time that has passed since the communication module 202 received the incoming packet from the remote computing device 130. To do so, the timer module 222 may utilize any number of timers, clock signals, counters, algorithms, or any other component of the host computing device 102 suitable for determining the passage of time.
- the timer module 222 may determine an amount of time that has passed (e.g., counting up) since the occurrence of a particular event such as, for example, the receipt of the packet from the remote computing device 130. In other embodiments, the timer module 222 may determine an amount of time remaining (e.g., counting down) until the occurrence of an event such as, for example, the expiration of a reference delay timer.
- the packet delay module 220 may also be communicatively coupled with the power state determination module 208 to facilitate delaying and releasing the packet. In such embodiments, the packet delay module 220 may delay delivery of an incoming packet to other components of the host computing device 102 until notification has been received from the power state determination module 208.
- the power state determination module 208 monitors the power state of one or more components of the host computing device 102. In doing so, the power state determination module 208 may determine that one or more components of the host computing device 102 has successfully transitioned from a low-power state (e.g., a sleep state) to an operational power state (e.g., a state available to process network requests).
- a low-power state e.g., a sleep state
- an operational power state e.g., a state available to process network requests.
- the power state determination module 208 may also determine that one or more components of the host computing device 102 has transitioned from an operational power state to a low-power state. To do so, the power state determination module 208 may monitor one or more system firmware, system hardware, and/or software components of the host computing device 102 for transitions in power states. For example, the power state determination module 208 may monitor one or more of Basic Input/Output System (BIOS) information, Advanced Configuration and Power Interface (ACPI) information, or any component suitable for determining power states of the host computing device 102.
- BIOS Basic Input/Output System
- ACPI Advanced Configuration and Power Interface
- the power state determination module 208 may generate a message indicative of such a transition. For example, the power state determination module 208 may transmit a message, signal, or otherwise to notify the packet delay module 220 that one or more components of the host computing device 102 has successfully transitioned to an operational power state and, as a result, is available to process the delayed packet.
- the power state determination module 208 may also monitor any number of ready states (e.g., available, unavailable, limited availability, etc.) of the host computing device 102 and/or the one or more components of the host computing device 102 (e.g., firmware, hardware, software, operating systems, applications, services, etc.).
- ready states e.g., available, unavailable, limited availability, etc.
- components of the host computing device 102 e.g., firmware, hardware, software, operating systems, applications, services, etc.
- the packet delay module 220 may release the delayed packed upon receipt of that notification. Additionally or alternatively, it should be understood that in other embodiments, the packet delay module 220 may automatically release a delayed packet in the event that a notification has not been received from the power state determination module 208 within a reference amount of time. In such embodiments, the packet delay module 220 may automatically release the delayed packet if a notification has not been received from the power state determination module 208 within an amount of time configured to be less than the transmission timeout for the remote computing device 130.
- the packet delay module 220 may automatically release the delayed packet if a notification from the power state determination module 208 has not been received within 18 seconds.
- OS operating system
- any suitable reference delay time or transmission timeout may instead be used based on, for example, the configuration of the host computing device 102 and/or the remote computing device 130.
- the host computing device 102 in some embodiments may buffer an incoming packet to delay processing until one or more components of the host computing device 102 has transitioned to an operational power state and, therefore, is available to process network requests. It should be understood that although only one incoming packet is described in the illustrative embodiment below, any number of incoming packets may be buffered. Once one or more components of the host computing device 102 is available to process network requests, the host computing device 102 may inject and/or replay the buffered packet to the available component(s). It should be appreciated that in such embodiments, the time to connect may be reduced and/or minimized since the host computing device 102 is not required to wait for the remote computing device 130 to resend the packet, which otherwise would have been lost during execution of a wake process.
- the communication module 202 and the packet filter/wake trigger module 204 may function in a manner similar to that described above.
- the packet filter/wake trigger module 204 may, additionally or alternatively, be communicatively coupled with the packet capture/packet buffer module 230.
- the packet capture/packet buffer module 230 may receive the incoming packet from the packet filter/wake trigger module 204 and thereafter buffer or otherwise store such packet.
- the packet capture/packet buffer module 230 may buffer or otherwise store the incoming packet in the data storage 116 or the memory 108 of the host computing device 102.
- the packet capture/packet buffer module 230 may buffer and/or store the incoming packet in any suitable data storage and/or memory device (e.g., volatile and/or non-volatile memory devices) of the host computing device 102, including data storage and/or memory embedded within other components of the host computing device 102.
- the packet capture/packet buffer module 230 may buffer and/or store the incoming packet within a data storage and/or memory device embedded within the communication circuitry 114 or within the Trusted Execution Environment engine 112.
- the packet injection/packet replay module 232 may be communicatively coupled with the packet capture/packet buffer module 230 and the power state determination module 208. Similar to the packet delay module 220, the packet injection/packet replay module 232 may receive notification (e.g., a message, signal, etc.) from the power state determination module 208 that one or more components of the host computing device 102 has successfully transitioned from a low-power state (e.g., a sleep state) to an operational power state (e.g., a state available to process network requests).
- a low-power state e.g., a sleep state
- an operational power state e.g., a state available to process network requests.
- the packet injection/packet replay module 232 may receive or otherwise obtain the buffered and/or stored packet from the packet capture/packet buffer module 230. Subsequently, the packet injection/packet replay module 232 may inject and/or replay the packet to the one or more available components of the host computing device 102 for further processing.
- a method 300 for delaying and releasing an incoming packet that may be executed by the host computing device 102 during a network-triggered wake begins with block 302.
- the host computing device 102 determines whether a new packet has been received from the remote computing device 130 over the network 140.
- the host computing device 102 may determine that a new packet has been received from the remote computing device 130 over the network 140 based on communications received by the communication circuitry 114 and/or the communication module 202 as discussed above.
- the new packet received from the remote computing device 130 may correspond to a packet for initiating a new connection and/or maintaining an existing connection with the host computing device 102. If the host computing device 102 determines that a new packet has been received from the remote computing device 130 over the network 140, the method 300 advances to block 304.
- the host computing device 102 determines whether the newly received packet from the remote computing device 130 corresponds to a wake packet. To determine whether the newly received packet corresponds to a wake packet, the host computing device 102 may determine that the packet is of a recognized type, targets a specific port or range of ports on the host computing device 102, and/or the contents of the packet match a specific pattern. As discussed above, the host computing device 102 may utilize one or more rule-based filters to facilitate determining whether the newly received packet, or the contents thereof, are indicative of a wake packet. In such embodiments, the newly received packet may represent both a wake packet and a packet to initiate and/or maintain a connection.
- the method 300 advances to block 306. If, however, the host computing device 102 determines that the newly received packet does not correspond to a recognizable wake packet, the method 300 loops back to block 302 to wait for the receipt of a new packet.
- the host computing device 102 initiates execution of a wake-up process.
- a wake-up process As discussed above, during execution of the wake-up process, one or more components of the host computing device 102 may transition from a low-power state (e.g., a sleep power state, a hibernate power state, etc.) to an operational power state (e.g., a "powered-on", a ready, and/or a fully operational power state).
- a low-power state e.g., a sleep power state, a hibernate power state, etc.
- an operational power state e.g., a "powered-on", a ready, and/or a fully operational power state.
- the host computing device 102 delays delivery of the packet while one or more components achieves a fully operational power state or a ready state. To do so, the host computing device 102 may hold the packet for a time equal to a configurable reference delay time. After delaying delivery of the packet for the configurable reference delay time, the method 300 advances to block 314 in which the host computing device 102 releases the delayed packet to one or more components for further processing.
- the host computing device 102 in some embodiments may utilize any number of timers, clock signals, counters, algorithms, or any other component of the host computing device 102 suitable for determining the passage of time.
- the method 300 advances to block 310, wherein the host computing device 102 starts a timer upon receiving the packet from the remote computing device 130. In doing so, the host computing device 102 determines how much time has passed since the packet was received and the method 300 advances to block 312.
- the host computing device 102 may determine that the amount of time passed is equal to the configurable reference delay time. In response to determining that the amount of time passed matches the amount of time configured for the reference delay time, the method 300 advances to block 314 in which the host computing device 102 releases the delayed packet for further processing. It should be appreciated that in such embodiments, the overall time to connect may be reduced and/or minimized as the host computing device 102 is not required to wait for the remote computing device 130 to resend the initial packet, which otherwise would have been lost.
- a network interface controller (NIC) 402 of the host computing device 102 may receive a incoming packet 430 from the remote computing device 130.
- the NIC 402 may also receive incoming packets 432, 434, which may correspond to retry packets attempted by the remote computing device 130.
- the incoming packets 430, 432, 434 may correspond to a specific type of packet (e.g., a TCP SYN packet) for initiating a new connection and/or maintaining an existing connection.
- receipt of the initial incoming packet may trigger a wake-up process to be initiated for one or more components of the host computing device 102.
- the NIC 402 may forward the packet 430 to the packet delay module 220 in data transmission 436.
- the packet delay module 220 may hold and/or buffer the packet for a reference amount of time 438.
- the packet delay module 220 may hold the packet for an amount of time configured to be less than the transmission timeout for the remote computing device 130. Additionally or alternatively, the packet delay module 220 may hold the packet until a notification is received indicating that one or more components of the host computing device is ready to process the packet further.
- the packet delay module 220 releases the delayed packet for further processing by one or more components of the host computing device 102 in data transmission 440.
- the packet delay module 220 may release the delayed packet to a network application 404 executing on the host computing device 102 in data flow 440. It should be understood, however, that the packet delay module 220 may instead release the delayed packet to other destinations and/or components executing on the host computing device 102.
- the packet delay module 220 may release the delayed packet to an OS, a driver, and/or any suitable component or application executing on the host computing device 102.
- a method 500 for buffering and injecting and/or replaying an incoming packet to introduce delay that may be executed by the host computing device 102 during a network-triggered wake begins with block 502.
- the host computing device 102 determines whether a new packet has been received from the remote computing device 130 over the network 140.
- the host computing device 102 may determine that a new packet has been received from the remote computing device 130 over the network 140 based on communications received by the communication circuitry 114 and/or the communication module 202 as discussed above. If the host computing device 102 determines that a new packet has been received from the remote computing device 130 over the network 140, the method 500 advances to block 504.
- the host computing device 102 determines whether the newly received packet from the remote computing device 130 corresponds to a wake packet. To determine whether the newly received packet corresponds to a wake packet, the host computing device may determine that the packet is of a recognized type, targets a specific port or range of ports on the host computing device 102, and/or the contents of the packet match a specific pattern. As discussed above, the host computing device 102 may utilize one or more rule-based filters to facilitate determining whether the newly received packet, or the contents thereof, are indicative of a wake packet. In response to determining that the newly received packet corresponds to a recognizable wake packet, the method 500 advances to block 506.
- the newly received packet may represent both a wake packet and a packet to initiate and/or maintain a connection. If, however, the host computing device 102 determines that the newly received packet does not correspond to a recognizable wake packet, the method 500 loops back to block 502 to wait for a new packet to be received.
- the host computing device 102 initiates execution of a wake-up process.
- a wake-up process As discussed above, during execution of the wake-up process, one or more components of the host computing device 102 transitions from a low-power state (e.g., a sleep power state, a hibernate power state, etc.) to an operational power state (e.g., a "powered-on,” a ready, and/or fully operational power state).
- a low-power state e.g., a sleep power state, a hibernate power state, etc.
- an operational power state e.g., a "powered-on,” a ready, and/or fully operational power state.
- the host computing device 102 delays delivery of the packet while one or more components achieves a fully operational power state. To do so, the host computing device 102 may hold or otherwise delay delivery of the packet until being notified that one or more components are available to process the delayed packet. In doing so, the host computing device 102 may improve connection reliability and responsiveness with the remote computing device 130 during all or a portion of the execution of the wake-up process. In response to holding the packet, the method 500 advances to block 516.
- the host computing device 102 determines whether one or more components have successfully transitioned from a low-power state (e.g., a sleep state) to an operational power state (e.g., a state ready and/or available to process network requests).
- a low-power state e.g., a sleep state
- an operational power state e.g., a state ready and/or available to process network requests.
- the host computing device 102 may monitor one or more system firmware, system hardware, and/or software components (e.g., BIOS, ACPI, etc.) to detect transitions in power states.
- the host computing device 102 may monitor ACPI information for one or more components to detect power state transitions.
- the host computing device 102 may monitor other power-managed states in addition to the sleep and operational (e.g., "powered-on”) power states.
- the host computing device 102 may, additionally or alternatively, monitor components for transitions to/from a hibernate power state, a "powered-off' or otherwise powered-down power state, or any other power state capable of being monitored by the host computing device 102. It should be understood, however, that in some embodiments, the host computing device 102 may also monitor any number of ready states (e.g., available, unavailable, limited availability, etc.) of one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.).
- ready states e.g., available, unavailable, limited availability, etc.
- components e.g., firmware, hardware, software, operating systems, applications, services, etc.
- the host computing device 102 determines that one or more components has transitioned from a low-power state to an operational power state, the host computing device 102 generates a notification (e.g., a message, signal, etc.) indicating which components are available to process the delayed packet further. In doing so, the method 500 advances to block 518 in which the host computing device 102 injects and/or replays the delayed packet to the one or more available components. If, however, the host computing device 102 determines that no components are available to further process the delayed packet, the method 500 loops back to block 516 to wait for one or more components to transition from a low-power state to an operational power state.
- a notification e.g., a message, signal, etc.
- the host computing device 102 may buffer and/or store an incoming packet to facilitate delaying delivery of the packet to one or more components. In doing so, the host computing device 102 may improve connection reliability and responsiveness with the remote computing device 130 during all or a portion of the execution of the wake-up process. For example, in block 510, the host computing device 102 may buffer or otherwise store the incoming packet in the data storage 116 or the memory 108 of the host computing device 102.
- host computing device 102 may buffer and/or store the incoming packet in any suitable data storage and/or memory device (e.g., volatile and/or non-volatile memory devices) of the host computing device 102, including data storage and/or memory embedded within other components of the host computing device 102.
- the host computing device 102 may buffer and/or store the incoming packet within a data storage and/or memory device embedded within the communication circuitry 114 or within the Trusted Execution Environment engine 112.
- the method 500 advances to block 512.
- the host computing device 102 may reset or otherwise reinitialize the communication circuitry 114 after initiating execution of a wake-up process.
- the reset may comprise a hard reset or a soft reset of the communication circuitry 114.
- the host computing device 102 restores the packet buffered or otherwise stored in the data storage 116 or the memory 108 to the communication circuitry 114. Once the buffered packet has been restored to the communication circuitry 114, the method 500 advances to blocks 516 and 518 as described above.
- a simplified flow diagram of at least one embodiment of a method 600 for buffering and injecting and/or replaying an incoming packet to introduce delay that may be executed by the host computing device 102 during a network-triggered wake is shown.
- the host computing device 102 may improve connection reliability and responsiveness with the remote computing device 130 during all or a portion of the execution of a wake-up process.
- a network interface controller (NIC) 602 of the host computing device 102 may receive a incoming packet 630 from the remote computing device 130.
- the NIC 602 may also receive additional incoming packets 636, 644, which may correspond to retried packet attempts by the remote computing device 130.
- the incoming packets 630, 636, 644 may correspond to a specific type of packet (e.g., a SYN packet) for initiating a new connection and/or maintaining an existing connection.
- receipt of the initial packet 630 may trigger a wake process to be initiated for one or more components of the host computing device 102 in data flow 632. Thereafter, the NIC 602 may buffer the initial packet 630 in the data storage 116 and/or the memory 108 of the host computing device 102 in data flow 634. As discussed above, it should be understood that the NIC 602 may buffer the initial packet 630 and/or any one of the retry packets 636, 644 in any suitable data storage and/or memory device (e.g., volatile and/or non-volatile memory devices) of the host computing device 102, including those embedded within other components. For example, the NIC 602 may temporarily buffer the initial packet 630 within a data storage and/or memory device embedded within the communication circuitry 114 or within the Trusted Execution Environment engine 112.
- the NIC 602 may temporarily buffer the initial packet 630 within a data storage and/or memory device embedded within the communication circuitry 114 or within the Trusted Execution Environment engine 112.
- an operating system (OS) 610 executing on the host computing device 102 may send one or more messages and/or commands to a NIC driver 604 associated with the NIC 602 in data transmission 638.
- the NIC driver 604 may store or otherwise save the temporarily buffered packet 630 in the data storage 116 and/or the memory 108. It should be understood that the same data storage 116 and/or the memory 108 used to temporarily buffer the initial packet 630 may also be used by the NIC driver 604 to save the initial packet 630.
- the NIC driver 604 may send a command or otherwise instruct the NIC 602 to reset or otherwise reinitialized in data communication 642. As discussed above, the NIC 602 may perform either hard reset or a soft reset. After being reset or otherwise reinitialized, the NIC driver 604 may restore the initial packet 630 stored in the data storage 116 and/or the memory 108.
- the NIC driver 604 may wait for notification that the OS 610 is ready and available to receive network traffic. As such, once the OS 610 is ready to further process the initial packet 630, the OS 610 notifies the NIC driver 604 that it is ready to receive network traffic in data transmission 648.
- the NIC driver 604 may inject and/or replay the initial packet 630 to a network filter 608 for further processing in data transmission 650.
- the NIC driver 604 injects and/or replays the initial packet 630 to the network filter 608, it should be understood that the NIC driver 604 may instead inject and/or replay the initial packet 630 to the OS 610 and/or other components of the host computing device 102.
- the NIC driver 604 injects and/or replays the initial packet 630 in the illustrative embodiment
- one or more other components e.g., firmware, hardware, software, operating systems, applications, services, etc.
- one or more firmware and/or hardware components of the NIC 602 may inject or replay the initial packet 630.
- a network filter of an OS stack, a component of the OS, and/or any suitable component in the network path may inject or replay the initial packet 630.
- the NIC 602 may generate and transmit an acknowledgement to the remote computing device 130 at data transmission 652.
- the acknowledgment transmitted to the remote computing device 130 comprises a message acknowledging receipt of the initial packet 630. It should be appreciated that in such embodiments the overall time to connect may be reduced and/or minimized since the host computing device 102 is not required to wait for the remote computing device 130 to resend the initial packet 630, which otherwise would have been lost during execution of the wake process.
- a method 700 for enabling and disabling the delay of an incoming packet that may be executed by the host computing device 102 begins with block 702.
- the host computing device 102 monitors the power state of one or more components. In doing so, the host computing device 102 may determine that one or more components has successfully transitioned from one power state to another power state. For example, the host computing device 102 may determine that one or more components has transitioned from a low-power state (e.g., a sleep state, hibernate state, powered-off state, etc.) to an operational power state (e.g., a state ready and/or available to process network requests).
- a low-power state e.g., a sleep state, hibernate state, powered-off state, etc.
- an operational power state e.g., a state ready and/or available to process network requests.
- the host computing device 102 may also determine that one or more components has transitioned from an operational power state to a low-power state or any other power-managed state suitable for use with the host computing device 102. To do so, the host computing device 102 may monitor one or more device firmware, device hardware, and/or software components for transitions in power states. For example, the host computing device 102 may monitor Basic Input/Output System (BIOS) information, Advanced Configuration and Power Interface (ACPI) information, or any component suitable for determining power states of the host computing device 102.
- BIOS Basic Input/Output System
- ACPI Advanced Configuration and Power Interface
- the host computing device 102 may also monitor any number of ready states (e.g., available, unavailable, limited availability, etc.) of one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.).
- ready states e.g., available, unavailable, limited availability, etc.
- components e.g., firmware, hardware, software, operating systems, applications, services, etc.
- the host computing device 102 may, in some embodiments, store data indicative of a previous power state for each of the one or more components in the data storage 116 and/or the memory 108. It should be understood that the data indicative of the previous power state for each of the components may be stored in a database, a table, or any other format suitable for storing a power state for one or more components of the host computing device 102. In such embodiments, the host computing device 102 may compare the previous power state with a current power state for each of the one or more components. If the previous power state of a component is different than the current power state, the host computing device 102 may determine that the power state of that component has transitioned.
- the host computing device 102 may continuously monitor the one or more firmware, hardware, and/or software components for transitions in power states and/or operational states. In other embodiments, the host computing device 102 may monitor the one or more firmware, hardware, and/or software components for transitions in power states and/or operational states at configurable, predefined time intervals. Additionally or alternatively, the host computing device 102 may receive a notification from one or more of the firmware, hardware, and/or software components that a power state and/or an operational state transition has occurred. Of course, it should be understood, however, that the host computing device 102 may monitor for transitions in power state and/or operational state at any suitable interval.
- the method 700 advances to block 704. However, if the host computing device 102 at block 702 determines that no components of the host computing device 102 have transitioned power states and/or operational states, the method 700 loops back to block 702 to continue monitoring for power state and/or operational state transitions. It should be understood that, in some embodiments, the power state and/or operational state of specific components may be monitored by the host computing device 102.
- the host computing device 102 may determine that the power state of a first component has transitioned from a low-power state to an operational power state; however, the power state of a second component, which may be required for further processing of an incoming packet of a particular type, has not transitioned power states. As a result, the host computing device 102 may continue to monitor for a power state transition by the second component.
- the host computing device 102 determines whether the one or more components have transitioned to a low-power state (e.g., a sleep state, a hibernate state, a powered-off state, etc.). To do so, the host computing device 102 may obtain current power state and/or operational state information for the one or more components from the one or more firmware, hardware, and/or software components of the host computing device 102. If at block 704, the host computing device 102 determines that the one or more components have not transitioned to a low-power state, the method 700 advances to block 708.
- a low-power state e.g., a sleep state, a hibernate state, a powered-off state, etc.
- the host computing device 102 determines whether the one or more components have instead transitioned to an operational power state (e.g., a state available to process network requests). As discussed above, the host computing device 102 may obtain current power state and/or operational state information for the one or more components from the one or more firmware, hardware, and/or software components of the host computing device 102. If at block 708, the host computing device 102 determines that the one or more components have instead transitioned to an operational power state, the method 700 advances to block 710. If, however, the host computing device 102 determines that the one or more components have not transitioned to an operational power state, the method 700 loops back to block 702 to continue monitoring for power state transitions.
- an operational power state e.g., a state available to process network requests.
- the host computing device 102 disarms a wake trigger for remotely waking one or more components.
- the host computing device 102 may disarm or otherwise disable one or more filters and/or rules used to determine whether incoming packets comprise a wake packet. In doing so, the host computing device 102 may not examine incoming packets using the one or more filters and/or rules.
- the method 700 advances to block 706 in which the host computing device 102 arms or otherwise enables one or more filters/and or rules used to determine whether incoming packets comprise a wake packet. In doing so, the host computing device 102 may examine incoming packets using the one or more filters and/or rules.
- An embodiment of the devices, systems, and methods disclosed herein are provided below.
- An embodiment of the devices, systems, and methods may include any one or more, and any combination of, the examples described below.
- a computing device for delaying delivery of an incoming packet may include a communication module, a wake trigger module, and a packet delay module.
- the communication module may receive a packet from a remote computing device over a network.
- the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state in response to the packet received from the remote computing device.
- the packet delay module may delay delivery of the packet during the transition from the low-power power-managed state to the operational power-managed state.
- the computing device may further include a timer module.
- the timer module may determine an amount of time passed since receipt of the packet.
- the packet delay module may delay delivery of the packet for a reference amount of time. Additionally, in an example, the packet delay module may further release the packet after passage of the reference amount of time.
- the reference amount of time may include an amount of time less than a transmission timeout of the remote computing device.
- the computing device may further include a power state determination module.
- the power state determination module may further determine one or more current power-managed states.
- the power state determination module may further generate a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state.
- the packet delay module may further receive the notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state and release the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern.
- the wake trigger module may further apply one or more filters to the packet received from the remote computing device and determine whether the packet matches one of a reference type, a reference destination port, or a reference pattern. Additionally, in an example, the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- a computing device for delaying delivery of an incoming packet may include a communication module, a communication module, and a packet buffer module.
- the communication module may receive a packet from a remote computing device over a network.
- the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state in response to the packet received from the remote computing device.
- the packet buffer module may buffer the packet during the transition from the low-power power-managed state to the operational power-managed state.
- the computing device my further include a power state determination module.
- the power state determination module may determine one or more current power-managed states.
- the power state determination module may further generate a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state.
- the computing device may further include a packet injection module.
- the packet injection module may obtain the packet from the packet buffer module and inject the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- the computing device may further include a packet replay module.
- the packet replay module may obtain the packet from the packet buffer module and replay the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern.
- the wake trigger module may further apply one or more filters to the packet received from the remote computing device and determine whether the packet matches one of a reference type, a reference destination port, or a reference pattern. Additionally, in an example, the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- a method for delaying delivery of an incoming packet may include receiving, by a host computing device, a packet from a remote computing device over a network. In an example, the method may further include initiating, by the host computing device, a transition from a low-power power-managed state to an operational power-managed state in response to receiving the packet from the remote computing device. In an example, the method may further include delaying, by the host computing device, delivery of the packet during the transition from the low-power power-managed state to the operational power-managed state.
- the method may further include determining, by the host computing device, an amount of time passed since receiving the packet from the remote computing device.
- delaying delivery of the packet may include delaying delivery of the packet for a reference amount of time.
- the method may include releasing, by the host computing device, the packet after passage of the reference amount of time.
- the reference amount of time may include an amount of time less than a transmission timeout of the remote computing device.
- the method may further include determining, by the host computing device, one or more current power-managed states. Additionally, in an example, the method may further include generating, by the host computing device, a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state. In an example, the method may include releasing, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern.
- the method may further include applying, by the host computing device, one or more filters to the packet received from the remote computing device and determining whether the packet matches one of a reference type, a reference destination port, or a reference pattern.
- initiating a transition from a low-power power-managed state to an operational power-managed state may include initiating a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- a method for delaying delivery of an incoming packet may include receiving, by a host computing device, a packet from a remote computing device over a network. In an example, the method may further include initiating, by the host computing device, a transition from a low-power power-managed state to an operational power-managed state in response to receiving the packet from the remote computing device. In an example, the method may further include buffering, by the host computing device, the packet during the transition from the low-power power-managed state to the operational power-managed state.
- the method may include determining, by the host computing device, one or more current power-managed states.
- the method may further include generating, by the host computing device, a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state.
- the method may further include injecting, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- the method may further include replaying, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern.
- the method may include applying, by the host computing device, one or more filters to the packet received from the remote computing device and determining whether the packet matches one of a reference type, a reference destination port, or a reference pattern.
- initiating a transition from a low-power power-managed state to an operational power-managed state may include initiating a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Communication Control (AREA)
- Small-Scale Networks (AREA)
Description
- Modern computing devices have become increasingly reliant on network-based content and services to provide an enhanced user experience. As a result, host computing devices that provide network-based content and services need to be available to answer requests received over a network. In order to provide such availability, host computing devices are often configured to operate in an always-on and always-connected manner. However, due to raising energy prices and an increasing number of "green initiatives," many network-based content and service providers are utilizing a variety of energy-saving, power-managed states that are typically built into host computing devices such as, for example, low-power sleep or hibernate states.
- To increase the availability of network-based content and services, providers may configure host computing devices to remotely wake up upon receiving one or more specially-identified packets, subsequently referred to as packets or wake packets, over the network from a requesting device. Typically, the requesting device expects a reliable connection to be formed with the host computing device shortly after sending a packet to initiate a connection. Unfortunately, it often takes some amount of time for one or more components of the host computing device to reach an operational state after receiving an initial packet that triggers a wake-up. This is especially true in complex host computing devices having a number of interdependent components. As a result, the initial packet is often lost and the requesting computing device is typically required to resend the packet at increasing time intervals, which in turn, increases the overall time needed to establish a connection.
-
US2010257391A1 discloses an apparatus and method of interfacing physical layer (PHY) control with media access control (MAC) is disclosed. One method includes signaling to the PHY control to operate in a low-power mode when the MAC is detected to be transmitting idle patterns. The MAC transitioning from transmitting the idle patterns to transmitting data can be detected. When the transition is detected, the PHY control is signaled to transition to a wake up mode. Data from the MAC is buffered while the PHY control is in the wake up mode. The buffered data is provided to the PHY control after the PHY control has completed the wake up mode. -
US2011066868A1 discloses a computing system including a controller configured to undergo a variably delayed wakeup transition. The controller is configured to transition a processing module from an idle state to an active state in response to successive assertions of a wakeup interrupt command. The system includes a variable delay module configured to vary delay lengths between assertion and execution of each of the successive wakeup interrupt commands during the wakeup transition to substantially cause power supply components to vibrate in a non-periodic manner. -
US7392279B1 discloses a time-based buffering system which buffers data based upon how long the data should be held in order to comply with a traffic shaping policy. The data's source or destination need not be considered in determining where to buffer the data. The time-based buffering system includes a collection of time-based queues, each of which has a different time to dequeue. The system controlling traffic shaping determines how long a particular piece of data should be buffered (a "traffic shaping delay") until it can be put on the network. Then, based upon that length of time, the system chooses one of the time-based of queues in which to buffer the data. That chosen queue has a dequeuing time that matches the traffic shaping delay. After the chosen queue dequeues its contents (at the specified time), it assumes a new dequeing time and is free to buffer new data that must be delayed by a time matching the new dequeuing time. -
US8077607B1 discloses a system for a dynamic response to traffic bursts in a computer network wherein a node receives traffic sent from one or more sources toward one or more destinations (e.g., Multipoint-to-Point, MP2P traffic). The node may detect a burst of received traffic based on one or more characteristics of the burst traffic, and, in response, may dynamically apply traffic shaping to the burst traffic. The traffic shaping is adapted to forward burst traffic received below a configurable threshold at a configurable pace and to drop burst traffic received above the configurable threshold. In addition, the node may also store the burst traffic dropped by traffic shaping, and forwards the stored burst traffic toward its destination after a configurable delay. - The present invention is defined by the features of the independent claims. Preferred beneficial embodiments thereof are defined by the sub-features of the dependent claims.
- The invention described herein is illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.
-
FIG. 1 is a simplified block diagram of at least one embodiment of a system for delaying incoming packets during a network-triggered wake of a computing device; -
FIG. 2 is a simplified block diagram of at least one embodiment of an environment of a host computing device of the system ofFIG. 1 ; -
FIG. 3 is a simplified flow diagram of at least one embodiment of a method for delaying and releasing an incoming packet that may be executed by the host computing device ofFIGS. 1 and2 during a network-triggered wake; -
FIG. 4 is a simplified activity flow diagram of at least one embodiment of the method ofFIG. 3 for delaying and releasing an incoming packet; -
FIG. 5 is a simplified flow diagram of at least one embodiment of a method for buffering and injecting or replaying an incoming packet to introduce a delay that may be executed by the host computing device ofFIGS. 1 and2 during a network-triggered wake; -
FIG. 6 is a simplified activity flow diagram of at least one embodiment of the method ofFIG. 5 for buffering and injecting or replaying an incoming packet; and -
FIG. 7 is a simplified flow diagram of at least one embodiment of a method for enabling and disabling the delay of incoming packets by the system ofFIG. 1 . - While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific exemplary embodiments thereof have been shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.
- In the following description, numerous specific details such as logic implementations, opcodes, means to specify operands, resource partitioning/sharing/ duplication implementations, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the present disclosure. It will be appreciated, however, by one skilled in the art that embodiments of the disclosure may be practiced without such specific details. In other instances, control structures, gate level circuits and full software instruction sequences have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate functionality without undue experimentation.
- References in the specification to "one embodiment," "an embodiment," "an example embodiment," etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
- Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention implemented in a computer system may include one or more bus-based interconnects between components and/or one or more point-to-point interconnects between components. Embodiments of the invention may also be implemented as instructions carried by or stored on a transitory or non-transitory machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may be embodied as any device, mechanism, or physical structure for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a machine-readable medium may be embodied as read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; mini- or micro-SD cards, memory sticks, electrical signals, and others.
- In the drawings, specific arrangements or orderings of schematic elements, such as those representing devices, modules, instruction blocks and data elements, may be shown for ease of description. However, it should be understood by those skilled in the art that the specific ordering or arrangement of the schematic elements in the drawings is not meant to imply that a particular order or sequence of processing, or separation of processes, is required. Further, the inclusion of a schematic element in a drawing is not meant to imply that such element is required in all embodiments or that the features represented by such element may not be included in or combined with other elements in some embodiments.
- In general, schematic elements used to represent instruction blocks may be implemented using any suitable form of machine-readable instruction, such as software or firmware applications, programs, functions, modules, routines, processes, procedures, plug-ins, applets, widgets, code fragments and/or others, and that each such instruction may be implemented using any suitable programming language, library, application programming interface (API), and/or other software development tools. For example, some embodiments may be implemented using Java, C++, and/or other programming languages. Similarly, schematic elements used to represent data or information may be implemented using any suitable electronic arrangement or structure, such as a register, data store, table, record, array, index, hash, map, tree, list, graph, file (of any file type), folder, directory, database, and/or others.
- Further, in the drawings, where connecting elements, such as solid or dashed lines or arrows, are used to illustrate a connection, relationship or association between or among two or more other schematic elements, the absence of any such connecting elements is not meant to imply that no connection, relationship or association can exist. In other words, some connections, relationships or associations between elements may not be shown in the drawings so as not to obscure the disclosure. In addition, for ease of illustration, a single connecting element may be used to represent multiple connections, relationships or associations between elements. For example, where a connecting element represents a communication of signals, data or instructions, it should be understood by those skilled in the art that such element may represent one or multiple signal paths (e.g., a bus), as may be needed, to effect the communication.
- Referring now to
FIG. 1 , asystem 100 for delaying incoming packets during a network-triggered wake of a computing device in a low-power state includes ahost computing device 102, aremote computing device 130, and acommunications network 140. Thehost computing device 102 may receive a packet transmitted by theremote computing device 130 over thecommunications network 140 to initiate and/or maintain a connection. In some embodiments, the received packet may trigger initiation of a wake process to transition thehost computing device 102, or one or more components of thehost computing device 102, from a low-power state to an operational power state. In such embodiments, the received packet may represent both a wake packet and a packet to initiate and/or maintain a connection. During performance of the wake process, thehost computing device 102 may delay delivery of the packet to a destined component while thehost computing device 102 achieves a fully operational power state. For example, in some embodiments, thehost computing device 102 may delay delivery of the received packet to one or more components (e.g., firmware, hardware, software, operating systems, applications. etc.) while thehost computing device 102, or the one or more components of thehost computing device 102 achieve a fully operational power state. Once an operational power state has been reached by the host computing device and/or the one or more components of the host computing device (e.g., firmware, hardware, software, operating systems, applications, services, etc.), thehost computing device 102 may release, inject, or replay the delayed packet for further processing. In this way, the overall time to connect may can reduced and/or minimized because thehost computing device 102 may not be required to wait for a network stack of theremote computing device 130 to resend the initial packet, which otherwise would have been lost. As a result, connection errors can be reduced and the reliability and/or stability of an incoming connection after a network-triggered wake may be improved. - As discussed in more detail below, the
host computing device 102 may hold and/or buffer the packet for a reference delay time before releasing the packet for further processing. Additionally or alternatively, in some embodiments, thehost computing device 102 may buffer and/or save the packet until being notified that one or more components of thehost computing device 102 has reached a fully operational power state and, therefore, is available to further process the packet. Upon receiving such a notification, thehost computing device 102 may replay and/or inject the packet for further processing by the one or more available components. It should be understood that in some embodiments, the initial packet received from theremote computing device 130 may comprise a packet for initiating a new connection and/or maintaining an existing connection with the host computing device and/or one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.) of thehost computing device 102. However, the received packet may, additionally or alternatively, trigger execution of a wake process on thehost computing device 102 to transition one or more components from a low-power state to an operational power state or otherwise ready state. - The
host computing device 102 may be embodied as any type of computing device for processing data and communicating with remote devices. For example, thehost computing device 102 may be embodied as a computing tablet/reader, a laptop, a mobile internet device (MID), a handheld computer, a smart phone, a personal digital assistant, an electronic book reader, or other computing device for storing and processing data and/or communicating, storing, maintaining, and transferring data over a network. In the illustrative embodiment ofFIG. 1 , thehost computing device 102 includes aprocessor 104, an I/O subsystem 110, amemory 108, adata storage 116,communication circuitry 114, and one or moreperipheral devices 118. In some embodiments, several of the foregoing components may be incorporated on a motherboard of thehost computing device 102, while other components may be communicatively coupled to the motherboard via, for example, a peripheral port. Furthermore, it should be appreciated that thehost computing device 102 may include other components, sub-components, and devices commonly found in a computing device, which are not illustrated inFIG. 1 for clarity of the description. - The
host computing device 102, or one or more components of thehost computing device 102, may operate in a number of different power-managed states. For example, one or more components of thehost computing device 102 may operate in a sleep state (e.g., a low-power state). In such embodiments, components operating in a low-power state are typically inaccessible (e.g., unavailable) to process data from aremote computing device 130 or from other components of thehost computing device 102. Additionally or alternatively, in other embodiments, one or more components of thehost computing device 102 may operate in a "powered-on" and fully operational power state. Components operating in this power state are typically accessible (e.g., available) to process data from theremote computing device 130 or from other components of thehost computing device 102. It should be understood that although thehost computing device 102 is described as including low-power and operational power states in the illustrative embodiment, thehost computing device 102 may include other power-managed states. For example, thehost computing device 102 may additionally or alternatively include any number of other power-managed states (e.g., standby, hibernate, power off, etc.). Additionally, in some embodiments, thehost computing device 102 and/or the one or more components of thehost computing device 102 may operate in any number of ready states (e.g., available, unavailable, limited availability, etc.). - The
processor 104 of thehost computing device 102 may be embodied as any type of processor capable of executing software/firmware, such as a microprocessor, digital signal processor, microcontroller, or the like. Theprocessor 104 is illustratively embodied as a single core processor having aprocessor core 106. However, in other embodiments, theprocessor 104 may be embodied as a multi-core processor havingmultiple processor cores 106. Additionally, thehost computing device 102 may includeadditional processors 104 having one ormore processor cores 106. - The I/
O subsystem 110 of thehost computing device 102 may be embodied as circuitry and/or components to facilitate input/output operations with theprocessor 104 and/or other components of thehost computing device 102. In some embodiments, the I/O subsystem 110 may be embodied as a memory controller hub (MCH or "northbridge"), an input/output controller hub (ICH or "southbridge"), and a firmware device. In such embodiments, the firmware device of the I/O subsystem 110 may be embodied as a memory device for storing Basic Input/Output System (BIOS) data and/or instructions and/or other information (e.g., a BIOS driver used during booting of the host computing device 102). However, in other embodiments, I/O subsystems having other configurations may be used. For example, in some embodiments, the I/O subsystem 110 may be embodied as a platform controller hub (PCH). In such embodiments, the memory controller hub (MCH) may be incorporated in or otherwise associated with theprocessor 104, and theprocessor 104 may communicate directly with the memory 108 (as shown by the hashed line inFIG. 1 ). Additionally, in other embodiments, the I/O subsystem 110 may form a portion of a system-on-a-chip (SoC) and be incorporated, along with theprocessor 104 and other components of thehost computing device 102, on a single integrated circuit chip. - In some embodiments, the I/
O subsystem 110 may include a Trusted Execution Environment (TEE)engine 112, which may be embodied as an embedded microprocessor such as a security co-processor, that operates independently of theprocessor 104 to provide a secure and isolated environment that cannot be accessed by theprocessor 104 or other components of thehost computing device 102. TheTEE engine 112 may, in some embodiments, function in an operational power state while theprocessor 104 and other components of thehost computing device 102 are in a low-power state (e.g., sleep, hibernate, etc.). In such embodiments, theTEE engine 112 may facilitate receiving incoming packets, triggering initiation of a wake procedure for theprocessor 104 or other components of thehost computing device 102 in response to receiving the one or more incoming packets, and/or delaying and then releasing or replaying the packets while thehost computing device 102, or one or more components thereof, are waking up from the low-power state and transitioning to an operational power state. In doing so, it appears to theremote computing device 130 that thehost computing device 102, or one or more components or services of thehost computing device 102, is fully available and operational even though thehost computing device 102 is operating in a low-power state. - The
processor 104 is communicatively coupled to the I/O subsystem 110 via a number of signal paths. These signal paths (and other signal paths illustrated inFIG. 1 ) may be embodied as any type of signal paths capable of facilitating communication between the components of thehost computing device 102. For example, the signal paths may be embodied as any number of wires, cables, light guides, printed circuit board traces, via, bus, intervening devices, point-to-point interconnects, and/or the like. - The
memory 108 of thehost computing device 102 may be embodied as, or otherwise include, one or more memory devices or data storage locations including, for example, dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate synchronous dynamic random access memory device (DDR SDRAM), mask read-only memory (ROM) devices, erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM) devices, flash memory devices, and/or other volatile and/or non-volatile memory devices. Thememory 108 is communicatively coupled to the I/O subsystem 110 via a number of signal paths. Although only asingle memory device 108 is illustrated inFIG. 1 , thehost computing device 102 may include additional memory devices in other embodiments. Various data and software may be stored in thememory device 108. For example, one or more operating systems (OS), applications, programs, libraries, and drivers that make up the software stack executed by theprocessor 104 may reside inmemory 108 during execution. - The
data storage 116 may be embodied as any type of device or devices configured for the short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. In some embodiments, thedata storage 116 may be used to temporarily store one or more incoming packets and/or information associated with the one or more incoming packets while thehost computing device 102, or one or more components thereof, are transitioning from a low-power state to an operational power state after a network-triggered wake. Additionally or alternatively, thedata storage 116 may be used to temporarily store a current power state for one or more components of thehost computing device 102. - The
communication circuitry 114 of thehost computing device 102 may be embodied as any number of devices and circuitry for enabling communications between thehost computing device 102 and theremote computing device 130 over thenetwork 140. For example, thecommunication circuitry 114 may be embodied as a network interface controller (NIC) in some embodiments. Thenetwork 140 may be embodied as any number of various wired and/or wireless communication networks. For example, thenetwork 140 may be embodied as or otherwise include a local area network (LAN), a wide area network (WAN), or a publicly-accessible, global network such as the Internet. Additionally, thenetwork 140 may include any number of additional devices to facilitate communication between thehost computing device 102 and theremote computing device 130. Thehost computing device 102 and theremote computing device 130 may use any suitable communication protocol to communicate with each other over thenetwork 140 depending on, for example, the particular type of network(s) 140. - The
peripheral devices 118 of thehost computing device 102 may include any number of additional input/output devices, interface devices, and/or other peripheral devices. For example, theperipheral devices 118 may include a display for displaying content to a user, a keyboard, mouse, or other input/output peripheral device. Theperipheral devices 118 are communicatively coupled to the I/O subsystem 110 via a number of signal paths thereby allowing the I/O subsystem 110 and/orprocessor 104 to receive inputs from and send outputs to theperipheral devices 118. - The
remote computing device 130 may be embodied as any type of computing device capable of performing the functions described herein. As such, theremote computing device 130 may include various hardware and software components (e.g., a processor, memory, and communication circuitry) typically found in a computing device for communicating, storing, maintaining, and transferring data over a network. The illustrativeremote computing device 130 transmits a packet to thehost computing device 102 over thenetwork 140 to remotely trigger the initiation of a wake procedure by one or more components of the host computing device. In some embodiments, the packet comprises a specially formatted network message packet (e.g., a "magic packet"), which is sent to thehost computing device 102 to trigger one or more components of thehost computing device 102 to turn on or wake up (e.g., transition from a low-power state to an operational power state). Additionally or alternatively, theremote computing device 130 may transmit a wake packet of a specific type (e.g., a TCP SYN packet) to thehost computing device 102 to trigger one or more components to wake up. It should be understood that theremote computing device 130 may transmit other types of packets capable of waking up one or more components of thehost computing device 102. For example, theremote computing device 130 may transmit wake packets targeting a specific port or range of ports being monitored by thehost computing device 102, wake packets comprising specific patterns identifiable by thehost computing device 102, and/or any other packet or message suitable for use in triggering thehost computing device 102 to transition from a low-power state to an operational power state. - Referring now to
FIG. 2 , one embodiment of anenvironment 200 of thehost computing device 102 includes acommunication module 202, a packet filter/wake trigger module 204, a powerstate determination module 208, apacket delay module 220, atimer module 222, a packet capture/packet buffer module 230, and a packet injection/packet replay module 232. It should be understood that theillustrative environment 200 may not always necessarily include all of the modules illustrated inFIG. 2 . Rather, in some embodiments, theillustrative environment 200 may instead include some portion or combination of the modules illustrated inFIG. 2 . For example, in one embodiment, theillustrative environment 200 may include thecommunication module 202, the packet filter/wake trigger module 204, the powerstate determination module 208, thepacket delay module 220, and thetimer module 222. In other embodiments, theillustrative environment 200 may instead include thecommunication module 202, the packet filter/wake trigger module 204, the powerstate determination module 208, the packet capture/packet buffer module 230, and the packet injection/packet replay module 232. Additionally, it should be understood that theenvironment 200, and/or any of the modules included therein, may be implemented in hardware, firmware, software, or any combination thereof. - As discussed above, in some embodiments, the
host computing device 102 may receive a packet from theremote computing device 130 over thenetwork 140. Of course, it should be understood that although only one incoming packet is described in the illustrative embodiment below, any number of incoming packets may be sent by theremote computing device 130 and received by thehost computing device 102. Upon receiving the incoming packet, a wake process may be triggered on thehost computing device 102 to transition one or more components from a low-power state to an operational power state. In such embodiments, thehost computing device 102 may delay delivery of the packet to one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.) of thehost computing device 102 while achieving a fully operational power state. To do so, thecommunication module 202 may facilitate communications with theremote computing device 130 over thenetwork 140. Additionally, thecommunication module 202 of thehost computing device 102 and theremote computing device 130 may use any suitable communication protocol to communicate with each other over thenetwork 140 depending on, for example, the particular type of network(s) 140. - The
communication module 202 may be communicatively coupled with the packet filter/wake trigger module 204 to facilitate triggering one or more components of thehost computing device 102 to transition from a low-power operating state to an operational (e.g. "powered-on," functional, available, ready, etc.) power state. In use, the packet filter/wake trigger module 204 may receive the incoming packet from thecommunication module 202. Upon receipt of the packet, the packet filter/wake trigger module 204 may parse or otherwise examine the contents of the packet to determine whether to trigger execution of a wake procedure for one or more components of thehost computing device 102. To do so, the packet filter/wake trigger module 204 may, in some embodiments, determine that the incoming packet is of a specific type (e.g., a TCP SYN packet) being monitored or destined to a specific port (e.g., TCP 5900, TCP 3389, etc.) on thehost computing device 102. Additionally or alternatively, the packet filter/wake trigger module 204 may also determine whether the incoming packet, or the contents thereof, matches one or more filters. In such embodiments, the filters comprise one or more configurable rules, which define one or more patterns, bit masks, offsets, destination ports, packet types, and/or any other information indicative of a packet that should trigger a wake. Upon determining that the incoming packet matches one or more of the filters and, therefore, embodies a wake packet, the packet filter/wake trigger module 204 may trigger and/or initiate a wake-up process on thehost computing device 102. - As discussed above, in some embodiments, the
host computing device 102 may hold the received packet that triggered the wake process for a reference delay time before releasing the packet for further processing. To facilitate delaying the packet, the packet filter/wake trigger module 204 may be communicatively coupled with thepacket delay module 220. Thepacket delay module 220 may delay delivery of an incoming packet to other components of thehost computing device 102 for a reference delay time. In such embodiments, after receiving the incoming packet from the packet filter/wake trigger module 204, thepacket delay module 220 may hold and/or buffer the packet for a reference amount of time. For example, thepacket delay module 220 may hold the packet for an amount of time configured to be less than the transmission timeout for theremote computing device 130. In response to delaying the packet for the configured amount of time, thepacket delay module 220 may release the packet for further processing by one or more other components of thehost computing device 102. - The
packet delay module 220 may be communicatively coupled with thetimer module 222 to facilitate holding and/or buffering the incoming packet for the reference amount of time. Thetimer module 222 may keep track of an amount of time that has passed since thecommunication module 202 received the incoming packet from theremote computing device 130. To do so, thetimer module 222 may utilize any number of timers, clock signals, counters, algorithms, or any other component of thehost computing device 102 suitable for determining the passage of time. In some embodiments, thetimer module 222 may determine an amount of time that has passed (e.g., counting up) since the occurrence of a particular event such as, for example, the receipt of the packet from theremote computing device 130. In other embodiments, thetimer module 222 may determine an amount of time remaining (e.g., counting down) until the occurrence of an event such as, for example, the expiration of a reference delay timer. - In some embodiments, the
packet delay module 220 may also be communicatively coupled with the powerstate determination module 208 to facilitate delaying and releasing the packet. In such embodiments, thepacket delay module 220 may delay delivery of an incoming packet to other components of thehost computing device 102 until notification has been received from the powerstate determination module 208. In use, the powerstate determination module 208 monitors the power state of one or more components of thehost computing device 102. In doing so, the powerstate determination module 208 may determine that one or more components of thehost computing device 102 has successfully transitioned from a low-power state (e.g., a sleep state) to an operational power state (e.g., a state available to process network requests). Of course, it should be understood that the powerstate determination module 208 may also determine that one or more components of thehost computing device 102 has transitioned from an operational power state to a low-power state. To do so, the powerstate determination module 208 may monitor one or more system firmware, system hardware, and/or software components of thehost computing device 102 for transitions in power states. For example, the powerstate determination module 208 may monitor one or more of Basic Input/Output System (BIOS) information, Advanced Configuration and Power Interface (ACPI) information, or any component suitable for determining power states of thehost computing device 102. In response to determining that one or more components has successfully transitioned power states (e.g., from a low-power state to an operational power state), the powerstate determination module 208 may generate a message indicative of such a transition. For example, the powerstate determination module 208 may transmit a message, signal, or otherwise to notify thepacket delay module 220 that one or more components of thehost computing device 102 has successfully transitioned to an operational power state and, as a result, is available to process the delayed packet. It should be understood, however, that in some embodiments, the powerstate determination module 208 may also monitor any number of ready states (e.g., available, unavailable, limited availability, etc.) of thehost computing device 102 and/or the one or more components of the host computing device 102 (e.g., firmware, hardware, software, operating systems, applications, services, etc.). - In embodiments wherein notification is received from the power
state determination module 208 that one or more components of thehost computing device 102 is available, thepacket delay module 220 may release the delayed packed upon receipt of that notification. Additionally or alternatively, it should be understood that in other embodiments, thepacket delay module 220 may automatically release a delayed packet in the event that a notification has not been received from the powerstate determination module 208 within a reference amount of time. In such embodiments, thepacket delay module 220 may automatically release the delayed packet if a notification has not been received from the powerstate determination module 208 within an amount of time configured to be less than the transmission timeout for theremote computing device 130. For example, in order to beat a 21-second transmission timeout associated with an operating system (OS) of theremote computing device 130, thepacket delay module 220 may automatically release the delayed packet if a notification from the powerstate determination module 208 has not been received within 18 seconds. Of course it should be understood that any suitable reference delay time or transmission timeout may instead be used based on, for example, the configuration of thehost computing device 102 and/or theremote computing device 130. - Additionally or alternatively, the
host computing device 102 in some embodiments may buffer an incoming packet to delay processing until one or more components of thehost computing device 102 has transitioned to an operational power state and, therefore, is available to process network requests. It should be understood that although only one incoming packet is described in the illustrative embodiment below, any number of incoming packets may be buffered. Once one or more components of thehost computing device 102 is available to process network requests, thehost computing device 102 may inject and/or replay the buffered packet to the available component(s). It should be appreciated that in such embodiments, the time to connect may be reduced and/or minimized since thehost computing device 102 is not required to wait for theremote computing device 130 to resend the packet, which otherwise would have been lost during execution of a wake process. - In embodiments wherein the
host computing device 102 buffers and then replays and/or injects the received packet (e.g., incoming packet), thecommunication module 202 and the packet filter/wake trigger module 204 may function in a manner similar to that described above. However, to facilitate buffering the received packet, the packet filter/wake trigger module 204 may, additionally or alternatively, be communicatively coupled with the packet capture/packet buffer module 230. In such embodiments, the packet capture/packet buffer module 230 may receive the incoming packet from the packet filter/wake trigger module 204 and thereafter buffer or otherwise store such packet. To do so, the packet capture/packet buffer module 230 may buffer or otherwise store the incoming packet in thedata storage 116 or thememory 108 of thehost computing device 102. Of course, it should be understood that the packet capture/packet buffer module 230 may buffer and/or store the incoming packet in any suitable data storage and/or memory device (e.g., volatile and/or non-volatile memory devices) of thehost computing device 102, including data storage and/or memory embedded within other components of thehost computing device 102. For example, the packet capture/packet buffer module 230 may buffer and/or store the incoming packet within a data storage and/or memory device embedded within thecommunication circuitry 114 or within the TrustedExecution Environment engine 112. - To facilitate injecting or replaying the buffered and/or stored received packets, the packet injection/
packet replay module 232 may be communicatively coupled with the packet capture/packet buffer module 230 and the powerstate determination module 208. Similar to thepacket delay module 220, the packet injection/packet replay module 232 may receive notification (e.g., a message, signal, etc.) from the powerstate determination module 208 that one or more components of thehost computing device 102 has successfully transitioned from a low-power state (e.g., a sleep state) to an operational power state (e.g., a state available to process network requests). Upon receiving notification from the powerstate determination module 208 that one or more components of thehost computing device 102 is available, the packet injection/packet replay module 232 may receive or otherwise obtain the buffered and/or stored packet from the packet capture/packet buffer module 230. Subsequently, the packet injection/packet replay module 232 may inject and/or replay the packet to the one or more available components of thehost computing device 102 for further processing. - Referring now to
FIG. 3 , amethod 300 for delaying and releasing an incoming packet that may be executed by thehost computing device 102 during a network-triggered wake begins withblock 302. Inblock 302, thehost computing device 102 determines whether a new packet has been received from theremote computing device 130 over thenetwork 140. Thehost computing device 102 may determine that a new packet has been received from theremote computing device 130 over thenetwork 140 based on communications received by thecommunication circuitry 114 and/or thecommunication module 202 as discussed above. As discussed above, the new packet received from theremote computing device 130 may correspond to a packet for initiating a new connection and/or maintaining an existing connection with thehost computing device 102. If thehost computing device 102 determines that a new packet has been received from theremote computing device 130 over thenetwork 140, themethod 300 advances to block 304. - In
block 304, thehost computing device 102 determines whether the newly received packet from theremote computing device 130 corresponds to a wake packet. To determine whether the newly received packet corresponds to a wake packet, thehost computing device 102 may determine that the packet is of a recognized type, targets a specific port or range of ports on thehost computing device 102, and/or the contents of the packet match a specific pattern. As discussed above, thehost computing device 102 may utilize one or more rule-based filters to facilitate determining whether the newly received packet, or the contents thereof, are indicative of a wake packet. In such embodiments, the newly received packet may represent both a wake packet and a packet to initiate and/or maintain a connection. In response to determining that the newly received packet corresponds to a recognizable wake packet, themethod 300 advances to block 306. If, however, thehost computing device 102 determines that the newly received packet does not correspond to a recognizable wake packet, themethod 300 loops back to block 302 to wait for the receipt of a new packet. - In
block 306, thehost computing device 102 initiates execution of a wake-up process. As discussed above, during execution of the wake-up process, one or more components of thehost computing device 102 may transition from a low-power state (e.g., a sleep power state, a hibernate power state, etc.) to an operational power state (e.g., a "powered-on", a ready, and/or a fully operational power state). Upon initiating execution of the wake-up process for one or more components of thehost computing device 102, themethod 300 advances to block 308. - In
block 308, thehost computing device 102 delays delivery of the packet while one or more components achieves a fully operational power state or a ready state. To do so, thehost computing device 102 may hold the packet for a time equal to a configurable reference delay time. After delaying delivery of the packet for the configurable reference delay time, themethod 300 advances to block 314 in which thehost computing device 102 releases the delayed packet to one or more components for further processing. - Additionally or alternatively, to facilitate delaying delivery of the packet in
block 308, thehost computing device 102 in some embodiments may utilize any number of timers, clock signals, counters, algorithms, or any other component of thehost computing device 102 suitable for determining the passage of time. In such embodiments, themethod 300 advances to block 310, wherein thehost computing device 102 starts a timer upon receiving the packet from theremote computing device 130. In doing so, thehost computing device 102 determines how much time has passed since the packet was received and themethod 300 advances to block 312. - In
block 312, thehost computing device 102 may determine that the amount of time passed is equal to the configurable reference delay time. In response to determining that the amount of time passed matches the amount of time configured for the reference delay time, themethod 300 advances to block 314 in which thehost computing device 102 releases the delayed packet for further processing. It should be appreciated that in such embodiments, the overall time to connect may be reduced and/or minimized as thehost computing device 102 is not required to wait for theremote computing device 130 to resend the initial packet, which otherwise would have been lost. - Referring now to
FIG. 4 , a simplified flow diagram of at least one embodiment of amethod 400 for delaying and releasing an incoming packet that may be executed by thehost computing device 102 during a network-triggered wake is shown. In operation, a network interface controller (NIC) 402 of thehost computing device 102 may receive aincoming packet 430 from theremote computing device 130. In some embodiments, theNIC 402 may also receive 432, 434, which may correspond to retry packets attempted by theincoming packets remote computing device 130. In illustrative embodiment, the 430, 432, 434 may correspond to a specific type of packet (e.g., a TCP SYN packet) for initiating a new connection and/or maintaining an existing connection.incoming packets - In some embodiments, receipt of the initial incoming packet may trigger a wake-up process to be initiated for one or more components of the
host computing device 102. Thereafter, theNIC 402 may forward thepacket 430 to thepacket delay module 220 indata transmission 436. Subsequently, thepacket delay module 220 may hold and/or buffer the packet for a reference amount oftime 438. For example, in some embodiments, thepacket delay module 220 may hold the packet for an amount of time configured to be less than the transmission timeout for theremote computing device 130. Additionally or alternatively, thepacket delay module 220 may hold the packet until a notification is received indicating that one or more components of the host computing device is ready to process the packet further. - In embodiments wherein the packet is held for a reference amount of time, the
packet delay module 220 releases the delayed packet for further processing by one or more components of thehost computing device 102 indata transmission 440. For example, in some embodiments, thepacket delay module 220 may release the delayed packet to a network application 404 executing on thehost computing device 102 indata flow 440. It should be understood, however, that thepacket delay module 220 may instead release the delayed packet to other destinations and/or components executing on thehost computing device 102. For example, in some embodiments, thepacket delay module 220 may release the delayed packet to an OS, a driver, and/or any suitable component or application executing on thehost computing device 102. - Referring now to
FIG. 5 , amethod 500 for buffering and injecting and/or replaying an incoming packet to introduce delay that may be executed by thehost computing device 102 during a network-triggered wake begins withblock 502. Inblock 502, thehost computing device 102 determines whether a new packet has been received from theremote computing device 130 over thenetwork 140. Thehost computing device 102 may determine that a new packet has been received from theremote computing device 130 over thenetwork 140 based on communications received by thecommunication circuitry 114 and/or thecommunication module 202 as discussed above. If thehost computing device 102 determines that a new packet has been received from theremote computing device 130 over thenetwork 140, themethod 500 advances to block 504. - In
block 504, thehost computing device 102 determines whether the newly received packet from theremote computing device 130 corresponds to a wake packet. To determine whether the newly received packet corresponds to a wake packet, the host computing device may determine that the packet is of a recognized type, targets a specific port or range of ports on thehost computing device 102, and/or the contents of the packet match a specific pattern. As discussed above, thehost computing device 102 may utilize one or more rule-based filters to facilitate determining whether the newly received packet, or the contents thereof, are indicative of a wake packet. In response to determining that the newly received packet corresponds to a recognizable wake packet, themethod 500 advances to block 506. In such embodiments, the newly received packet may represent both a wake packet and a packet to initiate and/or maintain a connection. If, however, thehost computing device 102 determines that the newly received packet does not correspond to a recognizable wake packet, themethod 500 loops back to block 502 to wait for a new packet to be received. - In
block 506, thehost computing device 102 initiates execution of a wake-up process. As discussed above, during execution of the wake-up process, one or more components of thehost computing device 102 transitions from a low-power state (e.g., a sleep power state, a hibernate power state, etc.) to an operational power state (e.g., a "powered-on," a ready, and/or fully operational power state). Upon initiating execution of the wake-up process for one or more components of thehost computing device 102, themethod 500 advances to block 508. - In
block 508, thehost computing device 102 delays delivery of the packet while one or more components achieves a fully operational power state. To do so, thehost computing device 102 may hold or otherwise delay delivery of the packet until being notified that one or more components are available to process the delayed packet. In doing so, thehost computing device 102 may improve connection reliability and responsiveness with theremote computing device 130 during all or a portion of the execution of the wake-up process. In response to holding the packet, themethod 500 advances to block 516. - In
block 516, thehost computing device 102 determines whether one or more components have successfully transitioned from a low-power state (e.g., a sleep state) to an operational power state (e.g., a state ready and/or available to process network requests). As discussed above, thehost computing device 102 may monitor one or more system firmware, system hardware, and/or software components (e.g., BIOS, ACPI, etc.) to detect transitions in power states. For example, in some embodiments, thehost computing device 102 may monitor ACPI information for one or more components to detect power state transitions. It should be understood that thehost computing device 102 may monitor other power-managed states in addition to the sleep and operational (e.g., "powered-on") power states. For example, thehost computing device 102 may, additionally or alternatively, monitor components for transitions to/from a hibernate power state, a "powered-off' or otherwise powered-down power state, or any other power state capable of being monitored by thehost computing device 102. It should be understood, however, that in some embodiments, thehost computing device 102 may also monitor any number of ready states (e.g., available, unavailable, limited availability, etc.) of one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.). - Referring back to block 516, in embodiments wherein the
host computing device 102 determines that one or more components has transitioned from a low-power state to an operational power state, thehost computing device 102 generates a notification (e.g., a message, signal, etc.) indicating which components are available to process the delayed packet further. In doing so, themethod 500 advances to block 518 in which thehost computing device 102 injects and/or replays the delayed packet to the one or more available components. If, however, thehost computing device 102 determines that no components are available to further process the delayed packet, themethod 500 loops back to block 516 to wait for one or more components to transition from a low-power state to an operational power state. - Referring back to block 508, the
host computing device 102 may buffer and/or store an incoming packet to facilitate delaying delivery of the packet to one or more components. In doing so, thehost computing device 102 may improve connection reliability and responsiveness with theremote computing device 130 during all or a portion of the execution of the wake-up process. For example, inblock 510, thehost computing device 102 may buffer or otherwise store the incoming packet in thedata storage 116 or thememory 108 of thehost computing device 102. As discussed above, it should be understood thathost computing device 102 may buffer and/or store the incoming packet in any suitable data storage and/or memory device (e.g., volatile and/or non-volatile memory devices) of thehost computing device 102, including data storage and/or memory embedded within other components of thehost computing device 102. For example, thehost computing device 102 may buffer and/or store the incoming packet within a data storage and/or memory device embedded within thecommunication circuitry 114 or within the TrustedExecution Environment engine 112. Upon buffering and/or storing the incoming packet in thedata storage 116 or thememory 108, themethod 500 advances to block 512. - In
block 512, thehost computing device 102 may reset or otherwise reinitialize thecommunication circuitry 114 after initiating execution of a wake-up process. In some embodiments, the reset may comprise a hard reset or a soft reset of thecommunication circuitry 114. After resetting or otherwise reinitializing thecommunication circuitry 114, themethod 500 advances to block 514. - In
block 514, thehost computing device 102 restores the packet buffered or otherwise stored in thedata storage 116 or thememory 108 to thecommunication circuitry 114. Once the buffered packet has been restored to thecommunication circuitry 114, themethod 500 advances to 516 and 518 as described above.blocks - Referring now to
FIG. 6 , a simplified flow diagram of at least one embodiment of amethod 600 for buffering and injecting and/or replaying an incoming packet to introduce delay that may be executed by thehost computing device 102 during a network-triggered wake is shown. In doing so, thehost computing device 102 may improve connection reliability and responsiveness with theremote computing device 130 during all or a portion of the execution of a wake-up process. In operation, a network interface controller (NIC) 602 of thehost computing device 102 may receive aincoming packet 630 from theremote computing device 130. In some embodiments, theNIC 602 may also receive additional 636, 644, which may correspond to retried packet attempts by theincoming packets remote computing device 130. In the illustrative embodiment, the 630, 636, 644 may correspond to a specific type of packet (e.g., a SYN packet) for initiating a new connection and/or maintaining an existing connection.incoming packets - As discussed above, receipt of the
initial packet 630 may trigger a wake process to be initiated for one or more components of thehost computing device 102 indata flow 632. Thereafter, theNIC 602 may buffer theinitial packet 630 in thedata storage 116 and/or thememory 108 of thehost computing device 102 indata flow 634. As discussed above, it should be understood that theNIC 602 may buffer theinitial packet 630 and/or any one of the retry 636, 644 in any suitable data storage and/or memory device (e.g., volatile and/or non-volatile memory devices) of thepackets host computing device 102, including those embedded within other components. For example, theNIC 602 may temporarily buffer theinitial packet 630 within a data storage and/or memory device embedded within thecommunication circuitry 114 or within the TrustedExecution Environment engine 112. - After buffering the
initial packet 630 in thedata storage 116 and/or thememory 108, an operating system (OS) 610 executing on thehost computing device 102 may send one or more messages and/or commands to aNIC driver 604 associated with theNIC 602 indata transmission 638. In some embodiments, theNIC driver 604 may store or otherwise save the temporarily bufferedpacket 630 in thedata storage 116 and/or thememory 108. It should be understood that thesame data storage 116 and/or thememory 108 used to temporarily buffer theinitial packet 630 may also be used by theNIC driver 604 to save theinitial packet 630. - In response to saving the
initial packet 630 in thedata storage 116 and/or thememory 108, theNIC driver 604 may send a command or otherwise instruct theNIC 602 to reset or otherwise reinitialized indata communication 642. As discussed above, theNIC 602 may perform either hard reset or a soft reset. After being reset or otherwise reinitialized, theNIC driver 604 may restore theinitial packet 630 stored in thedata storage 116 and/or thememory 108. - After restoring the
initial packet 630 from thedata storage 116 and/or thememory 108, theNIC driver 604 may wait for notification that theOS 610 is ready and available to receive network traffic. As such, once theOS 610 is ready to further process theinitial packet 630, theOS 610 notifies theNIC driver 604 that it is ready to receive network traffic indata transmission 648. - In some embodiments, upon receiving notification that the
OS 610 is ready for network traffic, theNIC driver 604 may inject and/or replay theinitial packet 630 to anetwork filter 608 for further processing indata transmission 650. Although theNIC driver 604 injects and/or replays theinitial packet 630 to thenetwork filter 608, it should be understood that theNIC driver 604 may instead inject and/or replay theinitial packet 630 to theOS 610 and/or other components of thehost computing device 102. Additionally or alternatively, although theNIC driver 604 injects and/or replays theinitial packet 630 in the illustrative embodiment, it should be appreciated that one or more other components (e.g., firmware, hardware, software, operating systems, applications, services, etc.) of thehost computing device 102 may inject and/or replay theinitial packet 630. For example, in some embodiments, one or more firmware and/or hardware components of theNIC 602, a network filter of an OS stack, a component of the OS, and/or any suitable component in the network path may inject or replay theinitial packet 630. - After the
NIC driver 604 injects and/or replays theinitial packet 630, theNIC 602 may generate and transmit an acknowledgement to theremote computing device 130 atdata transmission 652. In some embodiments, the acknowledgment transmitted to theremote computing device 130 comprises a message acknowledging receipt of theinitial packet 630. It should be appreciated that in such embodiments the overall time to connect may be reduced and/or minimized since thehost computing device 102 is not required to wait for theremote computing device 130 to resend theinitial packet 630, which otherwise would have been lost during execution of the wake process. - Referring now to
FIG. 7 , amethod 700 for enabling and disabling the delay of an incoming packet that may be executed by thehost computing device 102 begins withblock 702. Inblock 702, thehost computing device 102 monitors the power state of one or more components. In doing so, thehost computing device 102 may determine that one or more components has successfully transitioned from one power state to another power state. For example, thehost computing device 102 may determine that one or more components has transitioned from a low-power state (e.g., a sleep state, hibernate state, powered-off state, etc.) to an operational power state (e.g., a state ready and/or available to process network requests). Of course, thehost computing device 102 may also determine that one or more components has transitioned from an operational power state to a low-power state or any other power-managed state suitable for use with thehost computing device 102. To do so, thehost computing device 102 may monitor one or more device firmware, device hardware, and/or software components for transitions in power states. For example, thehost computing device 102 may monitor Basic Input/Output System (BIOS) information, Advanced Configuration and Power Interface (ACPI) information, or any component suitable for determining power states of thehost computing device 102. Additionally or alternatively, in some embodiments, thehost computing device 102 may also monitor any number of ready states (e.g., available, unavailable, limited availability, etc.) of one or more components (e.g., firmware, hardware, software, operating systems, applications, services, etc.). - To facilitate determining whether the power state of one or more components has transitioned, the
host computing device 102 may, in some embodiments, store data indicative of a previous power state for each of the one or more components in thedata storage 116 and/or thememory 108. It should be understood that the data indicative of the previous power state for each of the components may be stored in a database, a table, or any other format suitable for storing a power state for one or more components of thehost computing device 102. In such embodiments, thehost computing device 102 may compare the previous power state with a current power state for each of the one or more components. If the previous power state of a component is different than the current power state, thehost computing device 102 may determine that the power state of that component has transitioned. - In some embodiments, the
host computing device 102 may continuously monitor the one or more firmware, hardware, and/or software components for transitions in power states and/or operational states. In other embodiments, thehost computing device 102 may monitor the one or more firmware, hardware, and/or software components for transitions in power states and/or operational states at configurable, predefined time intervals. Additionally or alternatively, thehost computing device 102 may receive a notification from one or more of the firmware, hardware, and/or software components that a power state and/or an operational state transition has occurred. Of course, it should be understood, however, that thehost computing device 102 may monitor for transitions in power state and/or operational state at any suitable interval. - Returning back to block 702, if the
host computing device 102 determines that one or more components has transitioned power states and/or operational states, themethod 700 advances to block 704. However, if thehost computing device 102 atblock 702 determines that no components of thehost computing device 102 have transitioned power states and/or operational states, themethod 700 loops back to block 702 to continue monitoring for power state and/or operational state transitions. It should be understood that, in some embodiments, the power state and/or operational state of specific components may be monitored by thehost computing device 102. For example, thehost computing device 102 may determine that the power state of a first component has transitioned from a low-power state to an operational power state; however, the power state of a second component, which may be required for further processing of an incoming packet of a particular type, has not transitioned power states. As a result, thehost computing device 102 may continue to monitor for a power state transition by the second component. - In
block 704, after determining that one or more components have transitioned power states and/or operational states, thehost computing device 102 determines whether the one or more components have transitioned to a low-power state (e.g., a sleep state, a hibernate state, a powered-off state, etc.). To do so, thehost computing device 102 may obtain current power state and/or operational state information for the one or more components from the one or more firmware, hardware, and/or software components of thehost computing device 102. If atblock 704, thehost computing device 102 determines that the one or more components have not transitioned to a low-power state, themethod 700 advances to block 708. - In
block 708, thehost computing device 102 determines whether the one or more components have instead transitioned to an operational power state (e.g., a state available to process network requests). As discussed above, thehost computing device 102 may obtain current power state and/or operational state information for the one or more components from the one or more firmware, hardware, and/or software components of thehost computing device 102. If atblock 708, thehost computing device 102 determines that the one or more components have instead transitioned to an operational power state, themethod 700 advances to block 710. If, however, thehost computing device 102 determines that the one or more components have not transitioned to an operational power state, themethod 700 loops back to block 702 to continue monitoring for power state transitions. - In
block 710, thehost computing device 102 disarms a wake trigger for remotely waking one or more components. In some embodiments, thehost computing device 102 may disarm or otherwise disable one or more filters and/or rules used to determine whether incoming packets comprise a wake packet. In doing so, thehost computing device 102 may not examine incoming packets using the one or more filters and/or rules. - Returning back to block 704, if the
host computing device 102 determines that the one or more components have transitioned to a low-power state, themethod 700 advances to block 706 in which thehost computing device 102 arms or otherwise enables one or more filters/and or rules used to determine whether incoming packets comprise a wake packet. In doing so, thehost computing device 102 may examine incoming packets using the one or more filters and/or rules. - While the disclosure has been illustrated and described in detail in the drawings and foregoing description, such an illustration and description is to be considered as exemplary and not restrictive in character, it being understood that only illustrative embodiments have been shown and described and that all changes and modifications consistent with the disclosure and recited claims are desired to be protected.
- Illustrative examples of the devices, systems, and methods disclosed herein are provided below. An embodiment of the devices, systems, and methods may include any one or more, and any combination of, the examples described below.
- In one example, a computing device for delaying delivery of an incoming packet, the computing device may include a communication module, a wake trigger module, and a packet delay module. In an example, the communication module may receive a packet from a remote computing device over a network. In an example, the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state in response to the packet received from the remote computing device. In an example, the packet delay module may delay delivery of the packet during the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the computing device may further include a timer module. In an example, the timer module may determine an amount of time passed since receipt of the packet. In an example, the packet delay module may delay delivery of the packet for a reference amount of time. Additionally, in an example, the packet delay module may further release the packet after passage of the reference amount of time. In an example, the reference amount of time may include an amount of time less than a transmission timeout of the remote computing device.
- Additionally, in an example, the computing device may further include a power state determination module. In an example, the power state determination module may further determine one or more current power-managed states. In an example, the power state determination module may further generate a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the packet delay module may further receive the notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state and release the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern. In an example, the wake trigger module may further apply one or more filters to the packet received from the remote computing device and determine whether the packet matches one of a reference type, a reference destination port, or a reference pattern. Additionally, in an example, the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- In another example, a computing device for delaying delivery of an incoming packet may include a communication module, a communication module, and a packet buffer module. In an example, the communication module may receive a packet from a remote computing device over a network. In an example, the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state in response to the packet received from the remote computing device. In an example, the packet buffer module may buffer the packet during the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the computing device my further include a power state determination module. In an example, the power state determination module may determine one or more current power-managed states. In an example, the power state determination module may further generate a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state. In an example, the computing device may further include a packet injection module. In an example, the packet injection module may obtain the packet from the packet buffer module and inject the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state. In an example, the computing device may further include a packet replay module. In an example, the packet replay module may obtain the packet from the packet buffer module and replay the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern. In an example, the wake trigger module may further apply one or more filters to the packet received from the remote computing device and determine whether the packet matches one of a reference type, a reference destination port, or a reference pattern. Additionally, in an example, the wake trigger module may initiate a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- In another example, a method for delaying delivery of an incoming packet may include receiving, by a host computing device, a packet from a remote computing device over a network. In an example, the method may further include initiating, by the host computing device, a transition from a low-power power-managed state to an operational power-managed state in response to receiving the packet from the remote computing device. In an example, the method may further include delaying, by the host computing device, delivery of the packet during the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the method may further include determining, by the host computing device, an amount of time passed since receiving the packet from the remote computing device. In an example, delaying delivery of the packet may include delaying delivery of the packet for a reference amount of time. Additionally, in an example, the method may include releasing, by the host computing device, the packet after passage of the reference amount of time. In an example, the reference amount of time may include an amount of time less than a transmission timeout of the remote computing device.
- In an example, the method may further include determining, by the host computing device, one or more current power-managed states. Additionally, in an example, the method may further include generating, by the host computing device, a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state. In an example, the method may include releasing, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern. In an example, the method may further include applying, by the host computing device, one or more filters to the packet received from the remote computing device and determining whether the packet matches one of a reference type, a reference destination port, or a reference pattern. Additionally, in an example, initiating a transition from a low-power power-managed state to an operational power-managed state may include initiating a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- In another example, a method for delaying delivery of an incoming packet may include receiving, by a host computing device, a packet from a remote computing device over a network. In an example, the method may further include initiating, by the host computing device, a transition from a low-power power-managed state to an operational power-managed state in response to receiving the packet from the remote computing device. In an example, the method may further include buffering, by the host computing device, the packet during the transition from the low-power power-managed state to the operational power-managed state.
- Additionally, in an example, the method may include determining, by the host computing device, one or more current power-managed states. In an example, the method may further include generating, by the host computing device, a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state. Additionally, in an example, the method may further include injecting, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state. Additionally, in an example, the method may further include replaying, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- In an example, the packet may include one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern. Additionally, in an example, the method may include applying, by the host computing device, one or more filters to the packet received from the remote computing device and determining whether the packet matches one of a reference type, a reference destination port, or a reference pattern. Additionally, initiating a transition from a low-power power-managed state to an operational power-managed state may include initiating a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
Claims (13)
- A computing device (102) operable to delay delivery of an incoming packet, the computing device comprising:a communication module (202) operable to receive a packet from a remote computing device (130) over a network (140);a wake trigger module (204) operable to initiate a transition from a low-power power-managed state to an operational power-managed state in response to the packet received from the remote computing device; anda packet delay module (220) operable to delay delivery of the packet during the transition from the low-power power-managed state to the operational power-managed state characterized in that:the wake trigger module is further operable to apply one or more filters to the packet received from the remote computing device to determine whether the packet matches one of a reference type, a reference destination port, or a reference pattern; andwherein to initiate a transition from a low-power power-managed state to an operational power-managed state comprises to initiate a transition from a low-power power-managed state to an operational power-managed state as a function of a determination that the packet matches one of the reference type, the reference destination port, or the reference pattern.
- The computing device of claim 1, further comprising a timer module (222) operable to determine an amount of time passed since receipt of the packet, and
wherein the packet delay module is further operable to (i) delay delivery of the packet for a reference amount of time and (ii) release the packet after passage of the reference amount of time. - The computing device of claim 2, wherein the reference amount of time comprises an amount of time less than a transmission timeout of the remote computing device.
- The computing device of any of claims 1-3, further comprising a power state determination module (208) operable to (i) determine one or more current power-managed states and (ii) generate a notification indicative of completion of the transition from the low-power power-managed state to the operational power-managed state.
- The computing device of claim 4, wherein the packet delay module is further operable to (i) receive the notification indicative of completion of the transition from the low-power power-managed state to the operational power-managed state and (ii) release the packet in response to receiving the notification indicative of the completion of the transition from the low-power power-managed state to the operational power-managed state.
- The computing device of any of claims 1-3, wherein the packet comprises one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern.
- A method for delaying delivery of an incoming packet, the method comprising:receiving (302), by a host computing device, a packet from a remote computing device over a network;initiating (306), by the host computing device, a transition from a low-power power-managed state to an operational power-managed state in response to receiving the packet from the remote computing device; anddelaying (308), by the host computing device, delivery of the packet during the transition from the low-power power-managed state to the operational power-managed state; characterized by:applying, by the host computing device, one or more filters to the packet received from the remote computing device to determine whether the packet matches one of a reference type, a reference destination port, or a reference pattern; andwherein initiating a transition from a low-power power-managed state to an operational power-managed state comprises initiating a transition from a low-power power-managed state to an operational power-managed state as a function of the packet matching one of the reference type, the reference destination port, or the reference pattern.
- The method of claim 7, further comprising determining, by the host computing device, an amount of time passed since receiving the packet from the remote computing device; and
wherein delaying delivery of the packet comprises (i) delaying delivery of the packet for a reference amount of time and (ii) releasing (314) the packet after passage of the reference amount of time. - The method of claim 8, wherein the reference amount of time comprises an amount of time less than a transmission timeout of the remote computing device.
- The method of claim 7, further comprising:determining, by the host computing device, one or more current power-managed states; andgenerating, by the host computing device, a notification indicating completion of the transition from the low-power power-managed state to the operational power-managed state.
- The method of claim 10, further comprising releasing, by the host computing device, the packet in response to receiving the notification indicating the completion of the transition from the low-power power-managed state to the operational power-managed state.
- The method of claim 7, wherein the packet comprises one of a magic packet, a packet of a reference type, a packet destined to a reference port, or a packet formed from a reference pattern.
- One or more computer-implemented media comprising a plurality of instructions stored thereon that in response to being executed result in a computing device performing the method of any of claims 7-12.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2012/031744 WO2013147900A1 (en) | 2012-03-31 | 2012-03-31 | Method, device, and system for delaying packets during a network-triggered wake of a computing device |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| EP2832051A1 EP2832051A1 (en) | 2015-02-04 |
| EP2832051A4 EP2832051A4 (en) | 2016-01-20 |
| EP2832051B1 true EP2832051B1 (en) | 2019-01-23 |
Family
ID=49260953
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP12873215.3A Active EP2832051B1 (en) | 2012-03-31 | 2012-03-31 | Method, device, and system for delaying packets during a network-triggered wake of a computing device |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US9461927B2 (en) |
| EP (1) | EP2832051B1 (en) |
| JP (1) | JP6305976B2 (en) |
| CN (1) | CN104205755B (en) |
| WO (1) | WO2013147900A1 (en) |
Families Citing this family (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2013147900A1 (en) | 2012-03-31 | 2013-10-03 | Intel Corporation | Method, device, and system for delaying packets during a network-triggered wake of a computing device |
| JP2013225214A (en) * | 2012-04-20 | 2013-10-31 | Sharp Corp | Image forming apparatus |
| US9152207B2 (en) * | 2012-06-21 | 2015-10-06 | Freescale Semiconductor, Inc. | System for reducing dynamic power consumption of wakeup source |
| US9383812B2 (en) * | 2012-09-28 | 2016-07-05 | Intel Corporation | Method and apparatus for efficient store/restore of state information during a power state |
| US9432941B2 (en) * | 2013-07-05 | 2016-08-30 | Mediatek Inc. | Method for performing wake-up control with aid of wake-up packet, and associated apparatus |
| JP2017097583A (en) * | 2015-11-24 | 2017-06-01 | セイコーエプソン株式会社 | COMMUNICATION DEVICE, DISPLAY DEVICE, DISPLAY DEVICE CONTROL METHOD, AND PROGRAM |
| CN105955444A (en) * | 2016-04-25 | 2016-09-21 | 深圳市万普拉斯科技有限公司 | Aligned wakeup method and apparatus |
| US10324800B2 (en) * | 2017-01-19 | 2019-06-18 | Quanta Computer Inc. | System recovery using WoL |
| US10454835B2 (en) | 2017-01-20 | 2019-10-22 | Google Llc | Device and method for scalable traffic shaping with a time-indexed data structure |
| US20180212885A1 (en) * | 2017-01-20 | 2018-07-26 | Google Inc. | Device and method for scalable traffic shaping at a receiver with a time-indexed data structure |
| DE102017207858B3 (en) | 2017-05-10 | 2018-07-19 | Conti Temic Microelectronic Gmbh | Method for operating a control device as a bus subscriber to a bus network during a subnetwork operation of the bus network and control unit and motor vehicle |
| CN109388222A (en) * | 2017-08-04 | 2019-02-26 | 中兴通讯股份有限公司 | Power-saving processing method, device and mobile terminal and computer readable storage medium |
| US12142265B2 (en) * | 2019-06-01 | 2024-11-12 | Apple Inc. | Synchronization of remote context data |
| KR20230057354A (en) * | 2020-09-02 | 2023-04-28 | 퀄컴 인코포레이티드 | Power-Saving Techniques in Computing Devices Through Communication Bus Control |
Family Cites Families (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7392279B1 (en) | 1999-03-26 | 2008-06-24 | Cisco Technology, Inc. | Network traffic shaping using time-based queues |
| JP3882452B2 (en) * | 2000-03-10 | 2007-02-14 | 富士ゼロックス株式会社 | Receiving device and communication device |
| US20030226050A1 (en) * | 2000-12-18 | 2003-12-04 | Yik James Ching-Shau | Power saving for mac ethernet control logic |
| US20020137489A1 (en) | 2001-03-26 | 2002-09-26 | International Business Machines Corporation | Method and apparatus for emergency notification |
| US7574195B2 (en) | 2003-05-20 | 2009-08-11 | Qualcomm, Incorporated | Method and apparatus for communicating emergency information using wireless devices |
| US8018332B2 (en) | 2006-02-02 | 2011-09-13 | Procon, Inc. | Global emergency alert notification system |
| US7529958B2 (en) * | 2004-11-15 | 2009-05-05 | Charles Roth | Programmable power transition counter |
| JP2006259906A (en) | 2005-03-15 | 2006-09-28 | Ricoh Co Ltd | COMMUNICATION CONTROL DEVICE, COMMUNICATION CONTROL SYSTEM, POWER SAVE CONTROL METHOD, POWER SAVE CONTROL PROGRAM, AND RECORDING MEDIUM CONTAINING THE PROGRAM |
| US7603574B1 (en) * | 2006-12-14 | 2009-10-13 | Nvidia Corporation | Network interface speed adjustment to accommodate high system latency in power savings mode |
| US8077607B2 (en) | 2007-03-14 | 2011-12-13 | Cisco Technology, Inc. | Dynamic response to traffic bursts in a computer network |
| US7594047B2 (en) * | 2007-07-09 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Buffer circuit |
| US8010821B2 (en) | 2007-09-19 | 2011-08-30 | Intel Corporation | Systems and methods for wake on event in a network |
| US8068433B2 (en) * | 2007-11-26 | 2011-11-29 | Microsoft Corporation | Low power operation of networked devices |
| JP2009132050A (en) * | 2007-11-30 | 2009-06-18 | Ricoh Co Ltd | Image forming apparatus, image forming apparatus control method and program |
| US8677165B2 (en) | 2007-12-12 | 2014-03-18 | Hewlett-Packard Development Company, L.P. | Variably delayed wakeup transition |
| CN101610566B (en) * | 2008-06-19 | 2012-05-30 | 财团法人工业技术研究院 | System and method for dynamically adjusting sleep/wake schedule of wireless network device |
| JP2010098556A (en) * | 2008-10-17 | 2010-04-30 | Hitachi Ulsi Systems Co Ltd | Network standby processing device, network connection apparatus employing the same, and network system |
| KR101008473B1 (en) * | 2008-10-30 | 2011-01-14 | 삼성전기주식회사 | Zigbee device including sleep mode and active mode and wake-up method including sleep mode |
| US8321708B2 (en) | 2009-04-02 | 2012-11-27 | Aquantia Corp. | Interfacing media access control (MAC) with a low-power physical layer (PHY) control |
| US20110098016A1 (en) | 2009-10-28 | 2011-04-28 | Ford Motor Company | Method and system for emergency call placement |
| US8286011B2 (en) * | 2010-02-28 | 2012-10-09 | Freescale Semiconductor, Inc. | Method of waking processor from sleep mode |
| JP5577860B2 (en) * | 2010-06-04 | 2014-08-27 | 株式会社リコー | Information processing apparatus, information processing method, and information processing program |
| JP5740860B2 (en) * | 2010-07-15 | 2015-07-01 | コニカミノルタ株式会社 | Print data receiving apparatus, print data receiving method, and print data receiving program |
| US9110668B2 (en) * | 2012-01-31 | 2015-08-18 | Broadcom Corporation | Enhanced buffer-batch management for energy efficient networking based on a power mode of a network interface |
| WO2013147900A1 (en) | 2012-03-31 | 2013-10-03 | Intel Corporation | Method, device, and system for delaying packets during a network-triggered wake of a computing device |
| JP2014029634A (en) * | 2012-07-31 | 2014-02-13 | International Business Maschines Corporation | Packet buffering system and method |
-
2012
- 2012-03-31 WO PCT/US2012/031744 patent/WO2013147900A1/en not_active Ceased
- 2012-03-31 JP JP2015503176A patent/JP6305976B2/en active Active
- 2012-03-31 EP EP12873215.3A patent/EP2832051B1/en active Active
- 2012-03-31 US US13/976,031 patent/US9461927B2/en active Active
- 2012-03-31 CN CN201280071904.2A patent/CN104205755B/en active Active
Non-Patent Citations (1)
| Title |
|---|
| None * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN104205755A (en) | 2014-12-10 |
| US20140032955A1 (en) | 2014-01-30 |
| JP6305976B2 (en) | 2018-04-04 |
| US9461927B2 (en) | 2016-10-04 |
| CN104205755B (en) | 2018-07-03 |
| EP2832051A4 (en) | 2016-01-20 |
| WO2013147900A1 (en) | 2013-10-03 |
| EP2832051A1 (en) | 2015-02-04 |
| JP2015517254A (en) | 2015-06-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2832051B1 (en) | Method, device, and system for delaying packets during a network-triggered wake of a computing device | |
| US10845868B2 (en) | Methods and apparatus for running and booting an inter-processor communication link between independently operable processors | |
| CN102124454B (en) | Universal serial bus (usb) remote wakeup | |
| US20110317716A1 (en) | Method, system, and program for managing a speed at which data is transmitted between network adaptors | |
| KR20180121531A (en) | Adaptive Peripheral Component Interconnects for Optimal Performance and Power Savings | |
| US20100325463A1 (en) | Method and System for Optimized Power Management for a Network Device Supporting PCI-E and Energy Efficient Ethernet | |
| CN104704479B (en) | Method and apparatus for reducing the power consumption in embedded system | |
| US10841880B2 (en) | Apparatus and methods for wake-limiting with an inter-device communication link | |
| US20200150978A1 (en) | Technologies for optimizing resume time for media agnostic usb | |
| US9009444B1 (en) | System and method for LUN control management | |
| CN102375471B (en) | For controlling equipment and the method for processor clock frequency | |
| CN109982355B (en) | Method for saving and restoring network path, apparatus, terminal and storage medium thereof | |
| JP6154827B2 (en) | Wireless mobile device | |
| WO2013159464A1 (en) | Multiple core processor clock control device and control method | |
| WO2014206172A1 (en) | Switching between untrusted environment and trusted environment in mobile device | |
| CN110703897A (en) | Control method, device, chip and equipment | |
| CN110175450B (en) | An information processing method, device and equipment | |
| CN111049629B (en) | A search space detection method, terminal and network side equipment | |
| US10645166B2 (en) | Network interface card | |
| CN116601620B (en) | Message notification method and device | |
| US9639137B2 (en) | Control method and electronic device | |
| US11500440B2 (en) | Transferring network input/output (I/O) device control ownership between heterogeneous computing entities | |
| CN105764128A (en) | Power supply control method and device of mobile terminal | |
| KR20250085794A (en) | WiFi Packet Merging | |
| BR112017022004B1 (en) | METHOD FOR INTERACTION BETWEEN A TERMINAL AND A NETWORK DEVICE, AND TERMINAL |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20140916 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| AX | Request for extension of the european patent |
Extension state: BA ME |
|
| DAX | Request for extension of the european patent (deleted) | ||
| RA4 | Supplementary search report drawn up and despatched (corrected) |
Effective date: 20151221 |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: H04L 12/823 20130101AFI20151215BHEP Ipc: H04L 12/12 20060101ALI20151215BHEP Ipc: H04W 52/02 20090101ALI20151215BHEP Ipc: H04L 12/70 20130101ALI20151215BHEP |
|
| REG | Reference to a national code |
Ref country code: DE Ref legal event code: R079 Ref document number: 602012056360 Country of ref document: DE Free format text: PREVIOUS MAIN CLASS: H04L0012700000 Ipc: H04L0012823000 |
|
| GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: H04L 12/823 20130101AFI20180712BHEP Ipc: H04L 12/70 20130101ALI20180712BHEP Ipc: H04L 12/12 20060101ALI20180712BHEP Ipc: G06F 1/32 20060101ALI20180712BHEP Ipc: H04W 52/02 20090101ALI20180712BHEP |
|
| INTG | Intention to grant announced |
Effective date: 20180814 |
|
| GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
| GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
| AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
| REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
| REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 1092342 Country of ref document: AT Kind code of ref document: T Effective date: 20190215 |
|
| REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
| REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602012056360 Country of ref document: DE |
|
| REG | Reference to a national code |
Ref country code: SE Ref legal event code: TRGR |
|
| REG | Reference to a national code |
Ref country code: NL Ref legal event code: FP |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190423 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190523 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1092342 Country of ref document: AT Kind code of ref document: T Effective date: 20190123 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190423 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190523 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190424 |
|
| REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602012056360 Country of ref document: DE |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: AL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 |
|
| PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
| REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20190331 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| 26N | No opposition filed |
Effective date: 20191024 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20120331 |
|
| REG | Reference to a national code |
Ref country code: DE Ref legal event code: R079 Ref document number: 602012056360 Country of ref document: DE Free format text: PREVIOUS MAIN CLASS: H04L0012823000 Ipc: H04L0047320000 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190123 |
|
| PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: SE Payment date: 20230227 Year of fee payment: 12 |
|
| P01 | Opt-out of the competence of the unified patent court (upc) registered |
Effective date: 20230518 |
|
| REG | Reference to a national code |
Ref country code: SE Ref legal event code: EUG |
|
| PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: NL Payment date: 20241203 Year of fee payment: 14 |
|
| PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20241129 Year of fee payment: 14 |
|
| PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20250218 Year of fee payment: 14 |
|
| PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20250220 Year of fee payment: 14 |
|
| PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20240401 |