Source: https://patents.google.com/patent/US9939876B2/en
Timestamp: 2020-01-23 13:42:14
Document Index: 757873196

Matched Legal Cases: ['§ 120', 'in casu', 'Application No. 11871916', 'Application No. 11871952', 'Application No. 11872022', 'Application No. 201210328635', 'Application No. 201210328635', 'Application No. 201210328919', 'Application No. 201210328919', 'Application No. 201210328919', 'Application No. 201210328919', 'Application No. 201210329033', 'Application No. 201210329033', 'Application No. 11871916', 'Application No. 16186334', 'Application No. 11872022', 'Application No. 16186334']

US9939876B2 - Operating system management of network interface devices - Google Patents
Operating system management of network interface devices Download PDF
US9939876B2
US9939876B2 US14/879,307 US201514879307A US9939876B2 US 9939876 B2 US9939876 B2 US 9939876B2 US 201514879307 A US201514879307 A US 201514879307A US 9939876 B2 US9939876 B2 US 9939876B2
US14/879,307
US20160034018A1 (en
Srinivas Raghu Gatta
Kamalavasan Srinivasan
Andrew J. Ritz
Dmitry A. Anipko
2011-09-09 Priority to US13/229,364 priority Critical patent/US8806250B2/en
2014-06-25 Priority to US14/314,423 priority patent/US9170636B2/en
2015-10-09 Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
2015-10-09 Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: THALER, DAVID G., MALYSH, ALEXANDER, SRINIVASAN, KAMALAVASAN, ANIPKO, DMITRY A., GATTA, SRINIVAS RAGHU, RITZ, ANDREW J.
2015-10-09 Priority to US14/879,307 priority patent/US9939876B2/en
2015-10-09 Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
2016-02-04 Publication of US20160034018A1 publication Critical patent/US20160034018A1/en
2018-04-10 Publication of US9939876B2 publication Critical patent/US9939876B2/en
230000002618 waking Effects 0 claims description 12
Y02B60/126—
This application claims priority as a continuation under 35 U.S.C. § 120 to U.S. patent application Ser. No. 14/314,423, filed Jun. 25, 2014, which is a continuation of, and claims priority, to U.S. patent application Ser. No. 13/229,364, filed Sep. 9, 2011, the entire disclosure of which is hereby incorporated by reference.
Network connected applications typically involve an ability to maintain a long running connection in order to stay “up to date.” However, under conventional techniques this may come at the expense of keeping a network interface device (e.g., a network interface card) connected to ensure reachability, which may adversely affect resource usage of a computing device. For example, conventional techniques allowed applications and services of a computing device unfettered access to the network interface device. Hence, an operating system was typically not aware at any given point in time if the network interface device was being used by an application. This may prevent the device from going into a low power mode until an idle is detected, which may take thirty seconds and thus may cause a significant impact on a power supply, e.g., battery life.
Accordingly, techniques are described herein in which an operating system component called a network broker module may be utilized to coordinate use of the network interface devices of the computing device. For example, the network interface device may employ a wake pattern manager module to determine which applications of the computing device, if any, are to be woken in response to receipt of network traffic. The wake pattern manager module, for instance, may detect whether a pre-registered pattern is present in the network traffic, and if so, wake a corresponding application. In this way, the wake pattern manager module may allow applications that leverage network connects to entire a suspended state yet still provide an “always on/always connected” user experience. Further discussion of the wake pattern manager module may be found in relation to FIGS. 2-4.
In a further example, the network broker module may incorporate functionality of a keep alive manager module. The keep alive manager module may be used to “keep alive” network connections (e.g., notification channels) while applications are in a suspended state, and thus may lower resource usage associated with the applications. Further, the keep alive manager module may be used to allow the network interface device to enter a low power mode and “wake” to maintain the network connections and thus may lower resource usage associated with the network interface device, itself. A variety of other functionality may also be incorporated by the keep alive manage module, such as to dynamically determine a keep alive interval, further discussion of which may be found in relation to FIGS. 13-18.
The computing device 102 is further illustrated as including an operating system 116. The operating system 116 is configured to abstract underlying functionality of the computing device 102 to applications 118, 120 that are executable on the computing device 102. For example, the operating system 116 may abstract processing system 104, memory 106, power source 108 (e.g., battery or wired connection), and/or display device 110 functionality of the computing device 102 such that the applications 118, 120 may be written without knowing “how” this underlying functionality is implemented. The applications 118, 120, for instance, may provide data to the operating system 116 to be rendered and displayed by the display device 112 without understanding how this rendering may be performed.
Additionally, the network device manager module 126 may make the network interface device 112 unavailable to the applications 118, 120 for periods of time in this mode such that the applications 118, 120 do not unnecessarily wake the network interface device 112. In this way, the network device manager module 126 may “black hole” communications from applications 118, 120 to the network interface device. Further discussion of the network device manager module 126 may be found in relation to its corresponding section in the following discussion that begins in relation to FIGS. 5-12.
Generally, any of the functions described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), or a combination of these implementations. The terms “module,” “functionality,” and “logic” as used herein generally represent software, firmware, hardware, or a combination thereof. In the case of a software implementation, the module, functionality, or logic represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable memory devices. The features of the network broker techniques described below are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
In this example, however, the operating system 116 may employ the network broker module 122 to support an “always on/always connected” user experience. In this example, the experience is supported through use of the wake pattern manager module 124 which may be utilized to wake particular applications that are involved in network communication.
An application developer, for instance, may arrange a contract with the network broker module 122 of the operating system 116 to indicate certain events and a callback that is to be executed for each of these events. The network broker module 122 may then “plumb” a specific pattern of data received by the network interface device 112 via the network 114 as corresponding to one or more of the applications 118, 120 that registered for that traffic pattern 202.
The wake pattern manager module 124 may also support techniques to coalesce data for communication to the applications 118, 120, which may also be indicated by the traffic patterns 202. The wake pattern manager module 124, for instance, may receive data via a variety of different notification channels via the network 114 at the network interface device 112. Rather than communicate this data to the applications 118, 120 “right away,” the wake pattern manager module 124 may coalesce this data for communication to the applications 118, 120 at a defined interval.
For example, the network device manager module 126 may support “black holing” techniques to restrict access by the applications 118, 120 to the network interface device 112 while in a low power mode 506. This may be performed in a variety of ways, such as making the network interface device 112 unavailable, blocking communication of packets from the application 118, 120 to the network interface device 112, providing an error code back to the applications 118, 120 during the low power mode 506, indicating a dropped packet event, and so on. Therefore, the network device manager module 126 may limit an ability of the applications 118, 120 to wake the network interface device 112 from the low power mode 506 to the high power mode 504, thereby conserving resources of the computing device 102.
In an instance in which the network interface device 112 for Wi-Fi is in a high power mode, the network device manager module 126 may cause the network interface device 112 for the cellular network to enter a low power mode. Further, applications that attempt to interact with the cellular network may instead be routed to the Wi-Fi network. In this way, the network connection manager module 126 may prevent the applications 118, 120 from communicating with the “wrong” network interface device 112 and thereby conserve computing device 102 resources by not waking that device.
The network device manager module 126 may also be configured to maintain connectivity while in a low power mode. For example, the applications 118, 120 and/or services of the operating system 116 may desire to maintain Layer 2 connectivity to maintain a connection with an access point. This may involve periodically waking from the low power mode 506 at defined intervals to communicate with the access point. Likewise, Layer 3 connectivity may also be maintained using a similar techniques to maintain an IP address by communicating with a HTTP server, such as for an instance in which the server is configured to refresh the address at defined intervals. Further discussion of maintenance of network connectivity may be found in the “Keep Alive” section in the following discussion.
NID Active state may be implemented using a reference counter. When the counter reaches zero, the network device manager module 126 may transition the network interface device 112 to a low power state. When the counter is incremented from zero to one, the NDIS 602 may bring the network interface device 112 to a high power state, i.e., a “working” power state.
As illustrated, components of the operating system 116 may be used to increment and/or decrement the reference counter, e.g., by sending private IOCTLs to the NDIS 602, for a variety of purposes. In one or more implementations, a WCM 604 that is in communication with a power dependency coordinator (PDC) 606 is a sole component that is permitted to hold the NID Active reference for a “long” time, e.g. an entire duration of the Network Active period. Each of the other components is permitted to take NID Active reference for duration of a single operation, e.g., an IP address renewal.
FIG. 8 depicts an example implementation 800 showing a network interface device active transition. The implementation 800 includes the NDIS 602 of FIG. 6 as well as a power manager 702 and a miniport/bus 704 of FIG. 7. In the illustrated example, the NDIS 602 executes this power transition operation when the NID Active reference counter goes from zero to one. The NDIS 602 may request a device active state from the power manager 702 and wait for the “Power Required Callback.” From this callback, the NDIS 602 requests D0 IRP for the device. Upon D0 IRP completion, the NDIS 602 waits for an “Active Condition Callback” before communicating the updated power state to the miniport/Bus 704 driver.
A determination is made by an operating system that network traffic associated with one or more applications of the computing device has completed (block 1102). This determination may be made in a variety of ways. For example, the network device manager module 126 may monitor outbound and inbound traffic involving the applications 118, 120 and the network interface device 112. The network device manager module 126 may thus determine when replies have been provided to requests, e.g., callbacks have been completed. In this way, the network device manager module 126 may determine when each of the operations have been completed without waiting for a prescribed “idle” period.
The network interface device is made unavailable to one or more applications of a computing device by an operating system when the network interface device is in a low power mode (block 1204). The network device manager module 126, for instance, may enforce a network quite mode to reduce power consumption, such as in response to a determination that network traffic involved by the applications 118, 120 has completed. This quiet mode may have a defined amount of time, may be exited in response to an event, and so on. This unavailability may include use of the “black hole” techniques described earlier such that the applications 118, 120 are not permitted to “wake” the network interface device 112 during this time.
The network device manager module 126, for instance, may employ routing techniques to prevent inadvertent waking of a “wrong” network interface device 112. Continuing with the previous example, data received from the one or more applications that is specified for communication using the network interface device that is made unavailable is routed to the other network interface device (block 1208). This may be used, for instance, to route data intended by an application 118 for communication using a cellular network interface device that is inactive to be routed automatically to an active network interface device, such as a Wi-Fi device.
Application 118, for instance, may be configured to interact with a specific endpoint, such as a social network service. This application may therefore be coded with “knowledge” of the server timeout interval of that timeout such that the application 118 may be configured to maintain a notification channel with that endpoint, e.g., cause a communication to be sent to maintain state with the endpoint 1306. Therefore, in this example the keep alive manager module 128 may determine this interval from the application 118 itself. Other examples are also contemplated, such as to determine the server timeout interval of the endpoint 1306 a priori, may be based on monitored interaction between the computing device and the endpoint 1306 (e.g., by detecting failures and readjusting), and so forth.
For example, the keep alive manager module 128 may connect via the network 114 and corresponding intermediary devices 1308 with an endpoint that has a “known” or “known-to-be-long” server timeout interval, such as a test device made available for such a determination. The keep alive manager module 128 may then monitor a connection with this known endpoint to determine when the intermediary devices 1308 have “timed out” and therefore determine the network timeout interval of the intermediary devices 1308. This network timeout interval may be saved by the keep alive manager module 128 for use in calculating the keep alive interval 1302. For instance, this network timeout interval may be saved as specific for a particular network via which the network interface device 112 accesses the network 114.
Thus, a single network timeout value may be calculated and a minimum of these values (e.g., a baseline floor) to compute a coalesced time that describes when concurrent “keep alives” are sent. Thus, the network timeout interval may apply to the plurality of server connections.
Additionally, one or more implementations may address network connection being lost. Networks may be inconsistent such that connections may be lost from time to time. When that occurs, the persistent connection to a server may be severed. Thus, these implementations may employ an ability to automatically detect when the network is available again. For example, on a Wi-Fi network this may be done in hardware or firmware in an efficient manner via a “network list offload,” via an operating system itself, and so on. Thus, an operating system may notify this class of applications of the presence of the network via a callback routine, and these applications may then reestablish a connection, e.g., a long-lived connection to the push notification server. Therefore, a coalesced notification may be performed to allow the plurality of communication applications to reestablish connections, which may be used to optimize use of local computing resources as well as optimizing the use of the network interface device resource.
For instance, the keep alive manager module 128 may determine that application 118 is configured to initiate a “keep alive” communication at ten second intervals and application 120 is configured to initiate a “keep alive” communication at eight second intervals. Therefore, the keep alive manager module 128 may wake the network interface device 112 at eight second intervals for both applications 118, 120 to perform the communications. In this way, the keep alive manager module 128 may coalesce application 118, 120 initiated “keep alives” for notification channels to various endpoints 1306 to save power and other resources. Thus, the keep alive manager module 128 may base the keep alive interval 1302 on a variety of factors and may also adjust the keep alive interval 1302, further discussion of which may be found in relation to the following figure.
The system 1400 of FIG. 14 illustrates an example of adjusting a keep alive interval 1302 of FIG. 13. In this example, an initial calculated keep alive interval is set at an initialize stage as T=T(max) (block 1402). Reference points are then tried that are lower than the current T (block 1404). This may involve polling of W(min) with T(min) in which W represents the reconnect time between polling (block 1406). This may also involve aggressive tuning in which T is incremented by V and capped at T(max) (block 1408), where V represents an increment of the aggressive tuning. The system 1400 may also involve fine tuning in which the value is incremented by V/Y, wherein Y represents the 1/Y of aggressive increment. These values may be leveraged to determine a steady state in which T—detected value and T(LKG) is absolute time. In the diagram, Z represents a number of retries performed, which may be set to address network errors and X represents of number of successful keep alives (KAs). Further discussion of operation of the keep alive manager module 128 may be found in relation to the following procedures.
The keep alive interval may also be adjusted based on monitored usage of the keep alive interval by the operating system (block 1506). For example, the keep alive manager module 128 may determine that a notification channel has ceased to function due to reaching a network or service timeout interval. The keep alive manager module 128 may then adjust the keep alive interval 1302 “downward,” (e.g., lessen an amount of time defined by the interval) to an amount of time that is less than the observed amount of time in which the channel timed out. Naturally, other examples are also contemplated, such as to increase the keep alive interval 1302 as described in relation to FIG. 14.
FIGS. 17 and 18 depict systems 1700, 1800 showing implementation examples of the network connectivity broker 122 of FIG. 1. As previously described in relation to FIG. 1, support of a system state called “connected standby” in system-on-chip based devices may provide an opportunity for enabling an “Always On, Always Connected” (AOAC) user experience. For example, an application may be suspended when not “in focus,” e.g., not in foreground. As a result, a network 114 and network interface devices 112 may enter a “network quiet mode” (netqm). In this mode, the operating system 116 may prevent outgoing packets from the device, while ensuring that L2 connectivity and L3 identity are maintained. An indication from a component referred to as a power dependency coordinator (PDC) to exit the quite mode. Upon completion of tasks that involve network 114 connects, the network broker module 122 may cause the network interface device 112 to again enter a network quiet mode and remain in this state until PDC indicates an exit event.
An overview of a system 1700 that incorporates this design is shown in FIG. 17. The figure shows a chat application (e.g., configured for chat via the network 114) that includes a lightweight chat stub 1704, which is configured to handle connections and other bookkeeping for the chat application 1702. The chap application 1702 also includes a relatively “heavyweight” chat UI 1706 portion of the application 1702 is separated from the lightweight connection stub represented by the chat stub 1704. This is one of a variety of techniques that may be used to vector functionality of the application 1702.
The network connectivity broker (NCB) 1710 (which may or may not correspond to the network broker module 122 of FIG. 1) may employ a variety of functionality, which is represented as a wake pattern manager 1712 and a keep alive manger 1714. The wake pattern manager (WPM) 1712 is configured to ensure that the application 1702 can “re-hydrate” upon a network event, e.g., wake upon a detection of a specific pattern.
The keep alive manager 1714 is configured to ensure that a notification channel is a maintained for the application 1702, e.g., for reachability from a cloud service for incoming push notifications. For example, the application 1702 may register a work item with the BI 1802 of FIG. 18 thereby indicating to the operating system 116 that the application 1702 is interested in keep alive activity. The operating system 116 may then determine an appropriate coalesced keep alive interval to wake applications 1702 that have registered a callback to indicate that outbound packet activity is permitted for a pre-defined amount of time, e.g., for a few seconds. The BI 1802 may “sandbox” work items in terms of CPU and memory resources. This allows the application 1702 to perform a periodic “keep alive” to a respective endpoint (e.g., service “in the cloud”) to maintain reachability. This may also be used to limit an ability of the applications from inefficient use of resources due to an overabundance of “keep alives.”
The operating system, in conjunction with a notification service (e.g., a Windows Notification Service) may be used determine a dynamic keep alive interval as previously described. The dynamic keep alive interval, for instance, may be implemented as an “exponential back-off” which doubles an amount of time defined by the interval starting conservatively at four minute interval and incrementing to a value that the connection is still maintained. The notification service may use a test connection for this purpose to determine the dynamic interval. In one or more implementations, the keep alive manager 1714 does not distinguish between the application state or the system to be in connected standby or Active/ON, although other implementations are also contemplated.
The wake pattern manager 1712 is representative of functionality to plumb an appropriate wake pattern for a network interface device, such as a network interface card (NIC) 1716. The wake pattern manager 1712 may cause the NIC 1716 to go into a “Wake on LAN” mode upon network quiet mode entry. The NIC 1716, for instance, may transition to a D3 mode in which the NIC 1716 is configured to accept and deliver an incoming packet if it matches a set of wake patterns. If so, the may cause the NIC 1716 to transition to an active state. Wake patterns may be derived from a variety of sources, such as “<SrcAddr, DstAddr, SrcPort, DstPort, TransportProtocol>” for each wake-enabled connection. In one or more implementations, the NIC 1716 passes the incoming packet that caused the wake up to the protocol stack (as opposed to discarding/dropping it) since the loss of such a packet may impact the real-time responsiveness for applications that support features such as VoIP.
A Runtime API surface may also be exposed to applications that are configured to make use of the keep alive and remote wake functionality provided by the operating system 116. This library may be used to allow applications to perform a variety of functions, including:
Indicate creation of notification channels (e.g., BeginSetup);
Indicate the setup completion of notification channels (e.g., EndSetup);
Set desired keep alive interval in minutes (e.g., ServerKeepAliveIntervalTime);
Register Background Task handlers for keep alive events and remote wake events; and
Indicate to the system that the keep alive interval was not sufficient (e.g., DecreaseKeepAlivelnterval).
Similarly, actual BI 1802 API access may be hidden inside the NCB registrar 1804 as illustrated. This allows the keep alive manager 1714 to be isolated from architectural changes. The NCB registrar 1804 may call the BI 1802 APIs to create “keep alive” and “wake” events. The other part of the NCB registrar 1804 may involve communicating with a WPM 1808.
The keep alive manager 1714 may be configured to request a keep alive interval estimate from a keep alive provider. A timer (that may be coalesced) may be created using a “SetThreadPoolTimer” API. The time may be set as the minimum of T_WNS and T_APP—the keep alive interval requested by the application.
A model for identifying notification channels may be based on a “Start/Done” model which delineates a process-wide time span during which each established TCP connection by a process (except loopback) is treated as a notification channel by NCB. A Start/Done time span, however, has a single set of parameters, collectively referred as one “NCContext”, which apply to each of the connections created during that span. It should be noted that a one-to-one relationship between an NCContext and a TCP connection is typically encountered. However, the Start/Done model does not guarantee this relationship, hence this design may operate under an assumption that there can be multiple TCP connections that correspond to a single NCContext span. This span may be identified by a tuple that includes a process ID, an opaque NCContext ID created and used by the registrar, an optional opaque notification channel ID (passed to BI during event signaling, hence meaningful to the app), and an optional remote-wake brokered event.
As described previously, the wake pattern manager (WPM) 1808 (which may be implemented in a TCP module in tcpip.sys) may be configured to keep track of NCContexts. TCP may keep a table of processes and the associated NCContext(s) set by the NCB service 1806. In one or more implementations, there is either one or zero “active” NCContext for a given process and there can be one or more “inherited” NCContexts for a given process. TCP may be configured to allow a single system account under which NCB service runs to set/clear NCContexts.
In one or more implementations, an NCContext has one reference count for being “active” and one reference count for each inheriting connection. That is, the NCContext can be deleted when it is neither active nor was inherited by connections.
When a connection inherits an NCContext, WPM 1808 may plumb down a wake pattern made up from a connection's 4-tuple down to the network interface device via NSI 1814 methods for wake-pattern plumbing if the NIC supports wake patterns. WPM 1808 may keep track of whether a wake pattern was not successfully plumbed for a given connection for each active NCContext. Before the active NCContext is cleared by the NCB service during the “Done” call, NCB service 1806 may issue an NSI get for that NCContext to query this wake pattern plumbing status and return the information to the application (e.g., whether the system failed to plumb a wake pattern for a connection associated with that NCContext).
WPM 1808 may also keep a timer for tracking the remaining valid lifetimes for IPv6 addresses formed by using an IPv6 subnet prefix advertised by a router. Since router advertisements may be dropped by the NICs in a wake-able low-power state, the IPv6 prefix timeout may be refreshed via explicit router solicitation before the timeout happens, otherwise L3 identity may not be preserved reliably in some instances. The WPM 1808 may use the NDIS API to take a “NIC active reference” on the network interface on which router solicitation may take place in order to ensure that the NIC “stays up” (e.g., does not go into D3 due to not having any NIC-active reference held by anyone in the system).
The computing device 102 may also be implemented as the mobile 1904 class of device that includes mobile devices, such as a mobile phone, portable music player, portable gaming device, a tablet computer, a multi-screen computer, and so on. The computing device 102 may also be implemented as the television 1906 class of device that includes devices having or connected to generally larger screens in casual viewing environments. These devices include televisions, set-top boxes, gaming consoles, and so on. The techniques described herein may be supported by these various configurations of the computing device 102 and are not limited to the specific examples the techniques described herein. This is illustrated through use inclusion of the network broker module 122, wake pattern manager module 124, network device manager module 126, and keep alive manager module 128 on the computing device 102. All or part of this functionality may also be distributed “over the cloud” as described below.
determining, by a network broker module operating on the computing device while the computing device is in a mode to reduce power consumption, that a network traffic pattern associated with an application of the computing device has been received; and
responsive to the determination, waking the application while the computing device remains in the mode to reduce power consumption.
12. A method as described in claim 11, the application being placed in a suspended state in response to:
focus being moved to another application;
minimizing a user interface of the application;
movement of the user interface of the application from a foreground; or
navigation away from the user interface of the application.
computer-readable storage media having instructions stored thereon that, responsive to execution by the processor, implement a network broker module on the computing device while the computing device is in a mode to reduce power consumption, the network broker module configured to:
determine that a network traffic pattern associated with an application of the computing device has been received; and
responsive to the determination, wake the application while the computing device remains in the mode to reduce power consumption.
computer-readable storage media having instructions stored thereon that, responsive to execution by a processor, implement a network broker module on the computing device while the computing device is in a mode to reduce power consumption, the network broker module configured to:
US14/879,307 2011-09-09 2015-10-09 Operating system management of network interface devices Active US9939876B2 (en)
US13/229,364 US8806250B2 (en) 2011-09-09 2011-09-09 Operating system management of network interface devices
US14/314,423 US9170636B2 (en) 2011-09-09 2014-06-25 Operating system management of network interface devices
US14/879,307 US9939876B2 (en) 2011-09-09 2015-10-09 Operating system management of network interface devices
US14/314,423 Continuation US9170636B2 (en) 2011-09-09 2014-06-25 Operating system management of network interface devices
US20160034018A1 US20160034018A1 (en) 2016-02-04
US9939876B2 true US9939876B2 (en) 2018-04-10
ID=47830937
US13/229,364 Active 2032-09-26 US8806250B2 (en) 2011-09-09 2011-09-09 Operating system management of network interface devices
US14/314,423 Active US9170636B2 (en) 2011-09-09 2014-06-25 Operating system management of network interface devices
US14/879,307 Active US9939876B2 (en) 2011-09-09 2015-10-09 Operating system management of network interface devices
US (3) US8806250B2 (en)
EP (1) EP2754000A4 (en)
CN (1) CN103051468B (en)
WO (1) WO2013036259A1 (en)
US8739249B1 (en) * 2012-03-08 2014-05-27 Google Inc. Push notifications for web applications and browser extensions
US9288269B2 (en) * 2012-05-30 2016-03-15 Marvell World Trade Ltd. Network presence offload
US9756089B2 (en) * 2012-08-28 2017-09-05 Facebook, Inc. Maintain persistent connections between servers and mobile clients
US9152206B2 (en) 2013-01-24 2015-10-06 Qualcomm Incorporated System and method for reducing power consumption
KR20150146182A (en) * 2014-06-23 2015-12-31 삼성전자주식회사 Broadcast signal receiving apparatus, information appliance device and controlling method thereof
US10298694B1 (en) * 2014-07-01 2019-05-21 Juniper Networks, Inc. Flow timeout control within a network
CN105722192A (en) * 2014-12-03 2016-06-29 联想(北京)有限公司 Network connection method, electronic device and system
US9742818B2 (en) * 2014-12-10 2017-08-22 Oracle International Corporation Pushing events to web pages used for interaction with applications
CN106302571A (en) 2015-05-14 2017-01-04 微软技术许可有限责任公司 Server is connected and safeguards and cache
CN105050115A (en) * 2015-06-29 2015-11-11 小米科技有限责任公司 Method and device for waking up MCU
EP0767558A1 (en) 1995-09-10 1997-04-09 International Business Machines Corporation System and method for detecting a network failure
JP2000235433A (en) 1999-02-16 2000-08-29 Toshiba Corp Portable telephone communication controller
EP1308827A2 (en) 2001-11-06 2003-05-07 SAMSUNG ELECTRONICS Co. Ltd. Portable computer apparatus with power saving for wireless communication module
US20030128676A1 (en) 2002-01-09 2003-07-10 Lg Electronics Inc. Method of keeping-alive session and packet control function for the same
WO2004017605A2 (en) 2002-08-15 2004-02-26 Digi International Inc. Method and apparatus for a client connection manager
KR20040070096A (en) 2003-01-31 2004-08-06 마이크로소프트 코포레이션 Method and apparatus for managing power in network interface modules
EP1463249A2 (en) 2003-03-27 2004-09-29 Microsoft Corporation Message delivery with configurable assurance and features between two endpoints
JP2004362020A (en) 2003-06-02 2004-12-24 Fujitsu Ltd Terminal device with selection function of communication media in consideration of traffic pattern
US20050050197A1 (en) 2003-08-29 2005-03-03 International Business Machines Corporation Apparatus and method to select a captain from a plurality of control nodes
JP2006033026A (en) 2004-07-12 2006-02-02 Matsushita Electric Ind Co Ltd Method for receiving multimedia information and program for realizing it, multimedia receiver
JP2006157673A (en) 2004-11-30 2006-06-15 Kyocera Corp Portable telephone terminal, key notification method and computer program thereof
US20060162682A1 (en) 2003-12-25 2006-07-27 Denso Corporation Solenoid spool valve
US20060184813A1 (en) 2002-01-03 2006-08-17 Broadcom Corporation, A California Corporation Wake on LAN power management
US20060242328A1 (en) 2005-03-29 2006-10-26 Microsoft Corporation Power management for WLAN
US20070013816A1 (en) 2003-06-27 2007-01-18 Koninklijke Philips Electronics N.V. Receiver and method for reducing power comsumption in low-power mode
US20070082714A1 (en) 2005-10-07 2007-04-12 Robert Beach System and method for power conservation in a wireless device
US20070140159A1 (en) 2005-12-15 2007-06-21 Nokia Corporation Power-efficient address mapping scheme
US20070140193A1 (en) 2005-12-21 2007-06-21 Nokia Corporation Managing connections in a wireless communications network
US20070140263A1 (en) 2005-12-07 2007-06-21 Hitachi, Ltd. Virtual machine system and method of network communication between virtual machines
US7236781B2 (en) 2004-06-02 2007-06-26 Nokia Corporation Method for roaming between networks
JP2007183797A (en) 2006-01-06 2007-07-19 Canon Inc Application device and power state return method
US20070214256A1 (en) 2006-03-09 2007-09-13 Castaneda Frank J System and method for IP address discovery in rapidly changing network environment
US20070291658A1 (en) 2006-06-20 2007-12-20 General Instrument Corporation Method and apparatus for enabling a network device to remotely access a remote device via a network
US20080039032A1 (en) 2006-06-30 2008-02-14 Nokia Corporation Traffic monitoring
JP2008046940A (en) 2006-08-18 2008-02-28 Hitachi Ltd Information processing apparatus
US20080059582A1 (en) 2006-09-06 2008-03-06 Nokia Corporation Mobile network optimized method for keeping an application IP connection always on
US20080162666A1 (en) 2006-09-15 2008-07-03 Sony Corporation Information processing device, download method, download interruption method, download resuming method, and program
US20080162682A1 (en) 2006-12-29 2008-07-03 Lakshmi Ramachandran Maintaining network connectivity while operating in low power mode
US20080163370A1 (en) 2006-12-28 2008-07-03 Maynard William P Hardware-based detection and containment of an infected host computing device
US20080205288A1 (en) 2007-02-28 2008-08-28 Microsoft Corporation Concurrent connection testing for computation of NAT timeout period
US20090044109A1 (en) 2003-08-19 2009-02-12 Dunstan Robert A Method, apparatus and system for enabling a new data processing device operating state
US20090125739A1 (en) 2007-11-12 2009-05-14 Shohichi Satoh Apparatus, method, and computer program product for processing information
CN101449597A (en) 2006-05-19 2009-06-03 卢森特技术有限公司 Mobile-initiated location measurement
US20090154474A1 (en) 2007-11-20 2009-06-18 Panasonic Corporation Server apparatus
CN101465879A (en) 2007-12-21 2009-06-24 音乐会技术公司 System and method for identifying transient friends
US7568040B2 (en) 2006-02-24 2009-07-28 Cisco Technology, Inc. Techniques for establishing subscriber sessions on an access network using DHCP
US20090205038A1 (en) 2008-02-08 2009-08-13 Microsoft Corporation Enabling Wake on LAN Behind NATs and Firewalls
US20090210519A1 (en) 2008-02-18 2009-08-20 Microsoft Corporation Efficient and transparent remote wakeup
US20090279463A1 (en) 2008-05-08 2009-11-12 Harris Corporation, Corporation Of The State Of Delaware Mobile ad hoc network with isosynchronous communications and related methods
US20090309707A1 (en) 2008-06-12 2009-12-17 Xerox Corporation Automatic optimization of hfsi warning thresholds based on actual service interval statistics
US20090323570A1 (en) 2008-06-25 2009-12-31 Boris Ginzburg Techniques for management of shared resources in wireless multi-communication devices
US20100039971A1 (en) 2008-08-15 2010-02-18 Hong Kong Applied Science and Technology Research Institute, Co. Power Management Method and Communication System
US20100046523A1 (en) 2008-08-21 2010-02-25 Joji Thomas Mekkattuparamban Wide area network optimization proxy routing protocol
US20100058082A1 (en) 2008-08-27 2010-03-04 Lenovo (Singapore) Ple., Ltd. Maintaining network link during suspend state
US20100069127A1 (en) 2008-09-15 2010-03-18 Hugo Fiennes Electronic devices for receiving pushed data
US20100070652A1 (en) 2008-09-17 2010-03-18 Christian Maciocco Synchronization of multiple incoming network communication streams
US20100074108A1 (en) 2008-09-25 2010-03-25 Alcatel-Lucent Virtual partitioned policy space
JP2010520668A (en) 2007-02-28 2010-06-10 マイクロソフト コーポレーション A mechanism to keep clients associated with a network address translation system out of band
US20100159948A1 (en) 2008-12-19 2010-06-24 Taproot Systems, Inc. Adaptive Networking For Power Savings
US20100161842A1 (en) 2008-12-16 2010-06-24 Lenovo (Beijing) Limited Mobile terminal and switching method for controlling data transmission interface thereof
US20100165897A1 (en) 2008-12-30 2010-07-01 Kapil Sood Reduced Power State Network Processing
US7778623B2 (en) 2006-02-27 2010-08-17 Kabushiki Kaisha Toshiba Communication system and server apparatus and terminal apparatus
US20100265844A1 (en) 2006-05-15 2010-10-21 Research In Motion Limited Adjustment of Background Scanning Interval Based on Network Usage
US20100278101A1 (en) 2009-04-30 2010-11-04 Henrik Bengtsson Method and system of maintaining a connection in a network communication system
US20110069613A1 (en) 2009-09-21 2011-03-24 Cisco Technology, Inc. Energy efficient scaling of network appliance service performance
JP2011065653A (en) 2004-09-09 2011-03-31 Avaya Inc Method and system for network traffic security
US20110122818A1 (en) 2009-11-23 2011-05-26 Research In Motion Limited Method and apparatus for state/mode transitioning
US20110151944A1 (en) 2009-12-22 2011-06-23 Motorola, Inc. Methods and apparatus for conserving energy used by a mobile device
JP2011150610A (en) 2010-01-23 2011-08-04 Lenovo Singapore Pte Ltd Computer reducing power consumption while maintaining specific function
US20110213992A1 (en) 2010-02-28 2011-09-01 Freescale Semiconductor, Inc. Method of waking processor from sleep mode
US20120005501A1 (en) 2011-07-01 2012-01-05 Christian Maciocco System and Method for Maintaining Connectivity to Remote Application Servers
US20120108225A1 (en) 2010-11-01 2012-05-03 Michael Luna Mobile traffic categorization and policy for network use optimization while preserving user experience
US20120117401A1 (en) 2012-01-14 2012-05-10 Sameh Gobriel Maintaining connectivity during low power operation
US20120213118A1 (en) 2011-02-18 2012-08-23 Lindsay Steven B Method and system for network interface controller (nic) address resolution protocol (arp) batching
US20120311141A1 (en) 2007-08-23 2012-12-06 Cisco Technology, Inc. Dynamic Power Usage Management Based on Historical Traffic Pattern Data for Network Devices
US20120331087A1 (en) 2010-11-01 2012-12-27 Michael Luna Timing of keep-alive messages used in a system for mobile network resource conservation and optimization
US20130007487A1 (en) 2011-06-30 2013-01-03 Al Chakra Software-centric power management
US20130019042A1 (en) 2011-07-13 2013-01-17 Microsoft Corporation Mechanism to save system power using packet filtering by network interface
US20130067059A1 (en) 2011-09-09 2013-03-14 Srinivas Raghu Gatta Keep Alive Management
US20130067260A1 (en) 2011-09-09 2013-03-14 Srinivas Raghu Gatta Operating System Management of Network Interface Devices
US20130067060A1 (en) 2011-09-09 2013-03-14 David G. Thaler Wake Pattern Management
US20130094551A1 (en) 2011-10-14 2013-04-18 Curtis Ling Method and System for a Low-Power Client in a Wide Area Network
US20130198544A1 (en) 2012-01-30 2013-08-01 Samsung Electronics Co., Ltd. Power control system and related method of operation
US20130229967A1 (en) 2010-11-15 2013-09-05 Zte Corporation Method and system for network handover
US20140022973A1 (en) 2008-07-11 2014-01-23 Marvell World Trade Ltd. Power save mode for access points
US20140089702A1 (en) 2012-09-26 2014-03-27 Ajay G. Gupta Energy-efficient content update
US9155038B2 (en) 2010-12-21 2015-10-06 Samsung Electronics Co., Ltd. Mobile network control apparatus and energy saving method
2011-09-09 US US13/229,364 patent/US8806250B2/en active Active
2011-10-11 WO PCT/US2011/055706 patent/WO2013036259A1/en active Application Filing
2011-10-11 EP EP11871916.0A patent/EP2754000A4/en not_active Ceased
2012-09-07 CN CN201210328919.4A patent/CN103051468B/en active IP Right Grant
2014-06-25 US US14/314,423 patent/US9170636B2/en active Active
2015-10-09 US US14/879,307 patent/US9939876B2/en active Active
CN1519680A (en) 2003-01-31 2004-08-11 微软公司 Method and device for managing power source of network interface module
US20100185773A1 (en) 2004-02-25 2010-07-22 Research In Motion Limited Electronic device and base station for maintaining a network connection
JP2006164252A (en) 2004-12-08 2006-06-22 Microsoft Corp Verification and maintenance of connection in reliable messaging for web service environment
US7756155B2 (en) 2005-02-17 2010-07-13 International Business Machines Corporation Autonomic adjustment of connection keep-alives
JP2007158870A (en) 2005-12-07 2007-06-21 Hitachi Ltd Virtual computer system and network communication method thereof
US20150312159A1 (en) 2011-07-13 2015-10-29 Microsoft Technology Licensing, Llc Mechanism to save system power using packet filtering by network interface
US20160330098A1 (en) 2011-09-09 2016-11-10 Microsoft Technology Licensing, Llc Keep alive management
US20160226727A1 (en) 2011-09-09 2016-08-04 Microsoft Technology Licensing, Llc Wake pattern management
US20140310546A1 (en) 2011-09-09 2014-10-16 Microsoft Corporation Operating System Management of Network Interface Devices
US20150052373A1 (en) 2011-09-09 2015-02-19 Microsoft Corporation Keep Alive Management
US20150215185A1 (en) 2011-09-09 2015-07-30 Microsoft Technology Licensing, Llc Wake Pattern Management
US8307234B2 (en) 2012-01-14 2012-11-06 Intel Corporation Maintaining connectivity during low power operation
"Corrected Notice of Allowance", U.S. Appl. No. 14/314,423, Sep. 29, 2015, 2 pages.
"Extended European Search Report", EP Application No. 11871916.0, Jun. 11, 2015, 8 pages.
"Extended European Search Report", EP Application No. 11871952.5, Mar. 30, 2015, 7 pages.
"Extended European Search Report", EP Application No. 11872022.6, Jul. 27, 2015, 8 pages.
"Final Office Action", U.S. Appl. No. 13/182,195, Mar. 28, 2014, 14 pages.
"Final Office Action", U.S. Appl. No. 13/764,663, Jun. 11, 2015, 31 pages.
"Final Office Action", U.S. Appl. No. 14/579,367, Feb. 24, 2016, 12 pages.
"Foreign Office Action", CN Application No. 201210328635.5, Jun. 17, 2015, 11 Pages.
"Foreign Office Action", CN Application No. 201210328635.5, Oct. 10, 2014, 14 pages.
"Foreign Office Action", CN Application No. 201210328919.4, Jan. 27, 2015, 13 pages.
"Foreign Office Action", CN Application No. 201210328919.4, Mar. 28, 2016, 5 pages.
"Foreign Office Action", CN Application No. 201210328919.4, Oct. 24, 2016, 7 pages.
"Foreign Office Action", CN Application No. 201210328919.4, Sep. 29, 2015, 8 pages.
"Foreign Office Action", CN Application No. 201210329033.1, Aug. 26, 2015, 10 pages.
"Foreign Office Action", CN Application No. 201210329033.1, Dec. 12, 2014, 11 pages.
"Foreign Office Action", EP Application No. 11871916.0, Dec. 20, 2016, 8 pages.
"Foreign Office Action", EP Application No. 16186334.5, Jan. 11, 2017, 9 pages.
"Google Cloud Messaging: Overview", Retrieved at: https://developers.google.com/cloud-messaging/gcm-on Jun. 15, 2017, Nov. 23, 2016, 5 pages.
"Inetd-Wikipedia, the free encyclopedia", Retrieved at: http://en.wikipedia.org/wiki/Inetd, on May 21, 2015, 3 pages.
"International Search Report and Written Opinion", Application No. PCT/US2011/055655, Sep. 27, 2012, 9 pages.
"International Search Report and Written Opinion", Application No. PCT/US2011/055702, Sep. 28, 2012, 9 pages.
"International Search Report and Written Opinion", Application No. PCT/US2011/055706, Sep. 27, 2012, 10 pages.
"Non-Final Office Action", U.S. Appl. No. 11/007,372, Dec. 8, 2009, 13 pages.
"Non-Final Office Action", U.S. Appl. No. 11/007,372, Mar. 18, 2009, 13 pages.
"Non-Final Office Action", U.S. Appl. No. 11/007,372, May 13, 2010, 18 pages.
"Non-Final Office Action", U.S. Appl. No. 12/480,560, Mar. 19, 2012, 14 pages.
"Non-Final Office Action", U.S. Appl. No. 13/182,195, Sep. 11, 2013, 12 pages.
"Non-Final Office Action", U.S. Appl. No. 13/229,325, Aug. 12, 2013, 9 pages.
"Non-Final Office Action", U.S. Appl. No. 13/229,325, Feb. 7, 2014, 11 pages.
"Non-Final Office Action", U.S. Appl. No. 13/229,364, Dec. 19, 2013, 11 pages.
"Non-Final Office Action", U.S. Appl. No. 13/229,388, Jul. 3, 2013, 9 pages.
"Non-Final Office Action", U.S. Appl. No. 13/229,388, May 6, 2014, 9 pages.
"Non-Final Office Action", U.S. Appl. No. 13/229,388, Nov. 14, 2013, 9 pages.
"Non-Final Office Action", U.S. Appl. No. 13/764,663, Jan. 13, 2015, 27 pages.
"Non-Final Office Action", U.S. Appl. No. 14/314,423, Mar. 23, 2015, 13 pages.
"Non-Final Office Action", U.S. Appl. No. 14/526,391, Aug. 21, 2015, 7 pages.
"Non-Final Office Action", U.S. Appl. No. 14/526,391, Oct. 15, 2015, 7 pages.
"Non-Final Office Action", U.S. Appl. No. 14/579,367, Oct. 23, 2015, 20 pages.
"Non-Final Office Action", U.S. Appl. No. 15/018,430, Sep. 27, 2016, 6 pages.
"Notice of Allowance", U.S. Appl. No. 11/007,372, Nov. 8, 2010, 19 pages.
"Notice of Allowance", U.S. Appl. No. 12/480,560, Oct. 9, 2012, 14 pages.
"Notice of Allowance", U.S. Appl. No. 13/182,195, Aug. 20, 2014, 12 pages.
"Notice of Allowance", U.S. Appl. No. 13/229,325, Jul. 16, 2014, 4 pages.
"Notice of Allowance", U.S. Appl. No. 13/229,364, Apr. 9, 2014, 8 pages.
"Notice of Allowance", U.S. Appl. No. 13/229,388, Jan. 12, 2015, 4 pages.
"Notice of Allowance", U.S. Appl. No. 13/764,663, Dec. 10, 2015, 9 pages.
"Notice of Allowance", U.S. Appl. No. 14/314,423, Jul. 17, 2015, 4 pages.
"Notice of Allowance", U.S. Appl. No. 14/526,391, Apr. 26, 2016, 5 pages.
"Notice of Allowance", U.S. Appl. No. 14/526,391, Aug. 12, 2016, 5 pages.
"Notice of Allowance", U.S. Appl. No. 14/679,202, Sep. 24, 2015, 6 pages.
"Notice of Allowance", U.S. Appl. No. 15/018,430, Nov. 7, 2016, 6 pages.
"Notice of Allowance", U.S. Appl. No. 15/217,490, Apr. 12, 2017, 14 pages.
"Restriction Requirement", U.S. Appl. No. 12/480,560, Jan. 6, 2012, 6 pages.
"Restriction Requirement", U.S. Appl. No. 14/526,391, Aug. 31, 2015, 7 pages.
"Restriction Requirement", U.S. Appl. No. 14/679,202, Aug. 13, 2015, 7 pages.
"Supplementary European Search Report", EP Application No. 11872022.6, Apr. 8, 2015, 5 pages.
"Supplementary European Search Report", EP Application No. 16186334.5, Dec. 21, 2016, 6 pages.
"UN User Notification Center", Retrieved at: https://developer.apple.com/documentation/usernotifications/unusernotificationcenter-on Jun. 15, 2017, 6 pages.
"Web Server Scalability", retrieved from <http://download.microsoft.com/download/7/4/4 f/74fe970d-4a7d-4034-9f5d-02572567e7f7/20_CHAPTER_7_Web_Server_Scalability. doc>, 2003, 53 pages.
"Google Cloud Messaging: Overview", Retrieved at: https://developers.google.com/cloud-messaging/gcm—on Jun. 15, 2017, Nov. 23, 2016, 5 pages.
"Inetd—Wikipedia, the free encyclopedia", Retrieved at: http://en.wikipedia.org/wiki/Inetd, on May 21, 2015, 3 pages.
"UN User Notification Center", Retrieved at: https://developer.apple.com/documentation/usernotifications/unusernotificationcenter—on Jun. 15, 2017, 6 pages.
Acquaviva,"Remote Power Control of Wireless Network Interfaces", Journal of Embedded Computing-Low-power Embedded Systems, vol. 1 Issue 3, available at <http://seelab.ucsd.edu/papers/aacquaviva_patmos03.pdf>, Aug. 2005, 10 pages.
Acquaviva,"Remote Power Control of Wireless Network Interfaces", Journal of Embedded Computing—Low-power Embedded Systems, vol. 1 Issue 3, available at <http://seelab.ucsd.edu/papers/aacquaviva_patmos03.pdf>, Aug. 2005, 10 pages.
Agarwal,"Somniloquy: Augmenting Network Interfaces to Reduce PC Energy Usage", Symposium on Networked Systems Design and Implementation (NSDI), 2009, available at <http://www.usenix.org/events/nsdi09/tech/full_papers/agarwal/agarwal.pdf>, Apr. 23, 2009, pp. 365-380.
Banks,"HTTPR Specification", Apr. 1, 2002, 44 pages.
Barrett,"iGlance and Adaptive KeepAlives", May 10, 2009, 3 pages.
Barrett,"Software Engineering, Design and implementation of emergent networks", May 11, 2009, 6 pages.
Bilorusets,"Web Services Reliable Messaging Protocol (WS-Reliable Messaging)", Feb. 2005, 37 pages.
Booth,"Web Services Architecture-W3C Working Group Note", Feb. 11, 2004, 98 pages.
Booth,"Web Services Architecture—W3C Working Group Note", Feb. 11, 2004, 98 pages.
Charland,"Mobile Application Development: Web vs. Native", Communications of the ACM, Association for Computing Machinery, May 10, 2011, 5 pages.
Den,"Wire-Speed Hardware-Assisted Traffic Filtering with Mainstream Network Adapters", available at <http://luca.ntop.org/nema2010.pdf>, Oct. 28, 2010, 14 pages.
Douglis,"Adaptive Modem Connection Lifetimes", retrieved from <http://www.usenix.org/events/usenix99/full_papers/douglis/douglis_html/index.html> on Apr. 14, 2009, 20 pages.
Fielding,"Hypertext Transfer Protocol-Introduction", Jun. 1999, 7 pages.
Fielding,"Hypertext Transfer Protocol-Status Code Definitions", Jun. 1999, 11 pages.
Fielding,"Hypertext Transfer Protocol—Introduction", Jun. 1999, 7 pages.
Fielding,"Hypertext Transfer Protocol—Status Code Definitions", Jun. 1999, 11 pages.
Huitema,"RFC 4380 Teredo-Section 5.2.7 Optional Refresh Interval Determination Procedure", Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs), retrieved from <http://www.rfc-editor.org/rfc/rfc4380.txt> on Aug. 22, 2011, Feb. 2006, 2 pages.
Huitema,"RFC 4380 Teredo—Section 5.2.7 Optional Refresh Interval Determination Procedure", Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs), retrieved from <http://www.rfc-editor.org/rfc/rfc4380.txt> on Aug. 22, 2011, Feb. 2006, 2 pages.
Iwasa,"Web Services Reliable Messaging TC WS-Reliability 1.1", Aug. 24, 2004, 72 pages.
Koskinen,"Utilizing Multiple Radios for Energy Efficiency", retrieved from <http://paakoski.users.cs.helsinki.fi/tuotokset/ea/utilizing_multiple_radios.pdf> on Aug. 30, 2011, 6 pages.
Kulkarni,"IDC: An Energy Efficient Communication Scheme for Connected Mobile Platforms", IEEE International Conference on Communications, 2009., available at <http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5199061>, Jun. 18, 2009, 6 pages.
Lee,"Wireless Reliable Messaging Protocol for Web Services (WS-WRM)", Jul. 2004, 8 pages.
Lehmus,"Methods for Identifying Unwanted Network Traffic", TKK T-110.5290 Seminar on Network Security, Oct. 11-12, 2007, available at <http://www.tml.tkk.fi/Publications/C/25/papers/Lehmus_final.pdf>, Oct. 11, 2007, 7 pages.
MacDonald,"RFC 5780 NAT Behavior Discovery-Section 4.6 Binding Lifetime Discovery", NAT Behavior Discovery Using Session Traversal Utilities for NAT (STUN). Internet Engineering Task Force (IETF)., retrieved from <http://www.rfc-editor.org/rfc/rfc5780.txt> on Aug. 22, 2011, May 2010, 2 pages.
MacDonald,"RFC 5780 NAT Behavior Discovery—Section 4.6 Binding Lifetime Discovery", NAT Behavior Discovery Using Session Traversal Utilities for NAT (STUN). Internet Engineering Task Force (IETF)., retrieved from <http://www.rfc-editor.org/rfc/rfc5780.txt> on Aug. 22, 2011, May 2010, 2 pages.
Mukhi,"Supporting Policy driven behaviors in Web services: Experiences and Issues", Nov. 2004, 7 pages.
Nedevschi,"Skilled in the Art of Being Idle: Reducing Energy Waste in Networked Systems", Symposium on Networked Systems Design and Implementation (NSDI), 2009, available from <http://www.usenix.org/events/nsdi09/tech/full_papers/nedevschi/nedevschi.pdf>, Apr. 23, 2009, pp. 381-394.
Pering,"Coolspots: Reducing the Power Consumption of Wireless Mobile Devices with Multiple Radio Interfaces", In Proceedings of MobiSys 2006, Available at <http://www.usenix.org/events/mobisys06/full_papers/p220-pering.pdf>, Jun. 19, 2006, 13 pages.
Plank,"The Effect of Timeout Prediction and Selection on Wide Area Collective Operations", IEEE International Symposium on Oct. 2001, Oct. 2001, 9 pages.
Price,"Adapting to NAT timeout values in P2P overlay networks", Apr. 19, 2010, 7 Pages.
Price,"Still Alive: Extending Keep-Alive Intervals in P2P Overlay Networks", Nov. 11, 2009, 10 Pages.
Sabhanatarajan,"Smart-NICs: Power Proxying for Reduced Power Consumption in Network Edge Devices", IEEE Computer Society Annual Symposium on VLSI, 2008., available at <http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4556773>, Apr. 9, 2008, 6 pages.
Vogels,"Web Services Are Not Distributed Objects", Nov. 2003, 8 pages.
Weinsberg,"Putting it on the NIC: A Case Study on application offloading to a Network Interface Card (NIC)", IEEE CCNC 2006 proceedings, Jan. 8-10, 2006, available at <http://www.cs.nctu.edu.tw/˜cyku/articles/01593191.pdf>, 2005, pp. 1013-1017.
Wu,"A Petri Net Approach to Analyze the Effect of Persistent Connection on the Scalability of Web Services", retrieved from <http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=04554422> on Apr. 14, 2009, 4 pages.
Zheng,"Design, Analysis and Empirical Evaluation of Power Management in Multi-Hop Wireless Networks", Dissertation, retrieved from <http://www.csee.usf.edu/˜christen/energy/pcg_dissertation.pdf>, 2004, 157 pages.
CN103051468A (en) 2013-04-17
US20160034018A1 (en) 2016-02-04
WO2013036259A1 (en) 2013-03-14
US9170636B2 (en) 2015-10-27
US8806250B2 (en) 2014-08-12
EP2754000A4 (en) 2015-07-15
EP2754000A1 (en) 2014-07-16
CN103051468B (en) 2019-05-31
US20130067260A1 (en) 2013-03-14
US20140310546A1 (en) 2014-10-16
JP5632493B2 (en) 2014-11-26 Flexible allocation of computing resources to software applications
CN101403982B (en) 2011-07-20 Task distribution method, system for multi-core processor
JP5362858B2 (en) 2013-12-11 Network adapter, system and method enabling long-term communication standby for energy efficiency
US9049109B1 (en) 2015-06-02 Method and apparatus for a client connection manager
US9338748B2 (en) 2016-05-10 Techniques for managing idle state activity in mobile devices
EP2461631A2 (en) 2012-06-06 System support for accessing and switching among multiple wireless interfaces on mobile devices
JP5038368B2 (en) 2012-10-03 How to wake up a battery operated device
US20110286373A1 (en) 2011-11-24 Cost reduction of nat connection state keep-alive
US9383798B2 (en) 2016-07-05 Platform and processor power management
CN101772141B (en) 2014-07-16 Reduced power state network processing
US7779243B2 (en) 2010-08-17 Dual operating system computing system
US8677117B2 (en) 2014-03-18 Remote management of boot application
US20160224094A1 (en) 2016-08-04 Monitoring and real-time adjustment of power consumption settings
JP2007151121A (en) 2007-06-14 Method and device for remote discovery of setting of client and access point in wireless lan
US20100023788A1 (en) 2010-01-28 Reducing Power Consumption by Offloading Applications
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:036764/0481
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GATTA, SRINIVAS RAGHU;SRINIVASAN, KAMALAVASAN;RITZ, ANDREW J.;AND OTHERS;SIGNING DATES FROM 20111007 TO 20111013;REEL/FRAME:036764/0408