System and Method for Determining Transmitting Frequency to Maintain Remote Application Server Connectivity
Claim Score by NHIP
Abstract
A system and method for maintaining connectivity between a host system running an Always-On-Always-Connected (AOAC) application and an associated remote application server includes determining a timing interval Ti for sending keep-alive messages. The timing interval Ti may be determined by selecting a value for a timeout (Ti) to a value between a maximum timeout (Tmax) and a minimum timeout (Tmin), transmitting a keep-alive message, at an interval based on Ti, across a network connection between a client platform running an Always-On-Always-Connected (AOAC) application and a remote application server associated with the AOAC application, checking a status of the network connection, increasing the value for Tmin if the network connection is still active and decreasing the value for Tmax if the network connection has been dropped.

Term
Projected expiry 29 April 2032.
- Priority and filed
- Published
- Today
- Projected expiry
22 claims: 3 independent, 19 dependent
- 1Broadest claimClaim Score 62, broad(NHIP)A computer implemented method, comprising:a. selecting a value for a timeout (Ti) to a value between a maximum timeout (T max ) and a minimum timeout (T min );b. transmitting a keep-alive message, at an interval based on Ti, across a network connection between a client platform running an Always-On-Always-Connected (AOAC) application and a remote application server associated with said AOAC application;c. checking a status of said network connection;d. increasing said value for T min if said network connection is still active;and e. decreasing said value for T max if said network connection has been dropped.
- 12A computer readable non-transitory medium having instructions stored thereon, the instruction when executed by a processor cause the processor to:a. transmit a keep-alive message, at an interval based on a value for a timeout (Ti), across a network connection between a client platform running an Always-On-Always-Connected (AOAC) application and a remote application server associated with said AOAC application, wherein Ti has a value between a maximum timeout (T max ) and a minimum timeout (T min );b. check a status of said network connection;c. increase said value for T min if said network connection is still active;and d. decrease said value for T max if said network connection has been dropped.
- 21A client platform system, comprising:a host system configured to operate in a first power state and a low-power state, said host system further configured to execute at least one Always-On-Always-Connected (AOAC) application while in said first power state;circuitry configured to establish a communication link between said host system and an associated remote application server, said circuitry further configured to transmit keep-alive messages at a timeout interval Ti to said remote application server while said host remains in said low-power state, said keep-alive messages configured to maintain connectivity and presence of said AOAC application with said remote application server while said host system is in said low-power state;and memory configured to store said keep-alive messages, said memory configured to be accessible to said NIC while said host system remains in said low-power state, wherein said client platform system is further configured to iteratively determine said timeout interval Ti while said client platform system is in said first power state by: a. transmitting keep-alive messages, at an interval based on a value for a timeout (Ti), across a network connection between said client platform and said remote application server, wherein Ti has a value between a maximum timeout (T max ) and a minimum timeout (T min );b. checking a status of said network connection;c. increasing said value for T min if said network connection is still active;d. decreasing said value for T max if said network connection has been dropped;and repeating (a)-(d) for up to a maximum predetermined number of iterations or until a difference between two subsequent values for Ti is within a threshold value.
Independent claims3
102 paragraphs in 5 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATION
p-0002This application is related to U.S. patent application Ser. No. ______, entitled SYSTEM AND METHOD FOR MAINTAINING CONNECTIVITY TO REMOTE APPLICATION SERVERS, filed simultaneously with the instant application.
FIELD
p-0003The present disclosure relates to wireless/wired communications, and, more particularly, to energy efficient Ethernet using active/standby toggling.
BACKGROUND
p-0004To reduce power consumption (and extend battery life), portable wireless devices (such as, but not limited to, laptops, netbooks, tablet computers, and the like) may toggle between an active-power state (for example the S0 state according to the Advanced Configuration and Power Interface (ACPI) specification) and a low-power state (also known as a standby mode, sleep mode, suspend mode, or the like). When switched to the low-power state (also known as S3 mode according to he ACPI specification), power consumption is reduced by reducing and/or eliminating power to all unneeded portions of the platform and devices. In many situations it is desirable for one or more applications/services executing on the portable wireless device to maintain connectivity and presence so that the platform or end-user can always be reached.
p-0005One approach to maintain connection and presence with an application server involves periodically transitioning the platform from the standby mode to the active mode so that the platform may transmit presence data to the application server and/or receive any other data. Unfortunately, this approach requires a significant amount of energy as the entire platform is toggled between standby and active modes. Additionally, the periodic toggling between standby and active modes may have a negative impact on reliability of the standby-to-active transition. While technologies such as Wake on Wireless LAN (WoWLAN) have low power consumption, WoWLAN only maintains the data link (L2 link layer) connectivity to the local access point. As such, WoWLAN cannot maintain connectivity and presence to an application server.
BRIEF DESCRIPTION OF THE DRAWINGS
p-0006Features and advantages of embodiments of the claimed subject matter will become apparent as the following Detailed Description proceeds, and upon reference to the Drawings, wherein like numerals depict like parts, and in which:
p-0007<figref idrefs="DRAWINGS">FIG. 1</figref> illustrates one embodiment of a communication system between a client platform and a remote application server consistent with the present disclosure;
p-0008<figref idrefs="DRAWINGS">FIG. 2</figref> illustrates one embodiment of a client platform consistent with the present disclosure;
p-0009<figref idrefs="DRAWINGS">FIG. 3</figref> depicts one embodiment of a list of keep-alive messages stored in memory consistent with the present disclosure;
p-0010<figref idrefs="DRAWINGS">FIG. 4</figref> depicts one embodiment of a keep-alive message packet consistent with the present disclosure;
p-0011<figref idrefs="DRAWINGS">FIG. 5</figref> depicts a power profile chart illustrating the average power consumption of a host system operating in various states; and
p-0012<figref idrefs="DRAWINGS">FIG. 6</figref> illustrates one embodiment of a flowchart of operations consistent with the present disclosure;
p-0013<figref idrefs="DRAWINGS">FIG. 7</figref> illustrates one embodiment of the various stack layers;
p-0014<figref idrefs="DRAWINGS">FIG. 8</figref> illustrates one embodiment of a flowchart of operations consistent with the present disclosure for determining a timeout interval Ti;
p-0015<figref idrefs="DRAWINGS">FIG. 9</figref> illustrates one embodiment of a system for determining a connection timeout using a handshake reply consistent with the present disclosure;
p-0016<figref idrefs="DRAWINGS">FIG. 10</figref> illustrates one embodiment of a system for determining a connection timeout using concurrent connections consistent with the present disclosure;
p-0017<figref idrefs="DRAWINGS">FIG. 11</figref> illustrates one embodiment of a system for determining a connection timeout using active probing consistent with the present disclosure;
p-0018<figref idrefs="DRAWINGS">FIG. 12</figref> illustrates one embodiment of a flowchart of operations consistent with the present disclosure for determining a timeout interval Ti using passive listening; and
p-0019<figref idrefs="DRAWINGS">FIGS. 13A and 13B</figref> illustrate one embodiment for aligning the transmission of keep-alive messages from a plurality of AOAC applications consistent with the present disclosure.
p-0020Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art. Accordingly, it is intended that the claimed subject matter be viewed broadly, and be defined only as set forth in the accompanying claims.
DETAILED DESCRIPTION
p-0021Generally, this disclosure describes an energy-efficient wireless or wired communications approach that enables a platform and applications/services (e.g., Always-On-Always-Connected (AOAC) applications) to maintain connectivity and presence to a network and remote application servers while the platform is, and stays in, a low-power state. In at least one embodiment described herein, AOAC applications/services desiring to maintain connectivity and presence to the network and remote application servers initiate the building of a list of keep-alive messages before the platform transitions into a low-power state (e.g., from an active power state) to reduce power consumption (e.g., to preserve battery life). The keep-alive messages (which may include a respective application/service proprietary protocol, sequence number, timing information, and/or application/service key or token) are periodically transmitted by a communication device (e.g., a wireless or wired Network Interface Card (NIC) and/or an integrated wireless/wired controller) of the platform to the appropriate address after the platform transitions into the low-power state. As the communication device of the platform is able to issue the keep-alive messages while the platform remains in the low-power state, connectivity and presence to the network and/or remote application servers is maintained in an energy efficient manner.
p-0022As used herein, the term “active power state” refers to a platform functioning in a working or fully operational state. An example of an active power state includes the S0 state as defined by the Advanced Configuration and Power Interface (ACPI) specification. Another example includes, but is not limited to, the Full On power state. As used herein, the term “low-power state” refers to a platform functioning in a reduced power state in which power to devices that do not indicate they must remain on may be powered down and one or more central processing units (CPUs) stop executing instructions (e.g., are powered down). Examples of low-power power states include the S1, S2, S3, and/or S4 states as defined by the ACPI specification. Further examples of low-power states are also known as a standby mode, sleep mode, suspend mode, or the like.
p-0023Turning now to <figref idrefs="DRAWINGS">FIG. 1</figref>, one embodiment of a communication system <b>100</b> is generally illustrated. The communication system <b>100</b> includes one or more client platforms <b>102</b> configured to establish a wireless or wired communication link across the network <b>104</b> with one or more remote application servers <b>106</b>. The client platform <b>102</b> may include a desktop, a laptop, and/or a mobile computing device. Examples of mobile computing devices include, but are not limited to, a smart phone (such as, but not limited to, a Blackberry™ smart phone, an iPhone™ smart phone, an Android™ smart phone, and the like), a tablet computer (such as, but not limited to, an iPad™ tablet computer, PC-based tablet computers, and/or current or future tablet computers offered by Intel™ Corporation), and ultra-mobile personal computers.
p-0024The client platform <b>102</b> may be configured to establish a communication link with one or more network access points/bridges <b>108</b> and/or other communication devices <b>110</b> (such as, but not limited to, Network Address Translation (NAT) devices) in the communication pathway/link between the client platform <b>102</b> and the remote application server <b>106</b>. For example, the client platform <b>102</b> can use signals to communicate in a wireless network such as a Local Area Network (LAN), a Wireless LAN (WLAN), a Metropolitan Area Network (MAN), a Wireless MAN (WMAN), a Wide Area Network (WAN), a Wireless WAN (WWAN), devices and/or networks operating in accordance with existing Next Generation mmWave (NGmS-D02/r0, Nov. 28, 2008), Wireless Gigabit Alliance (WGA), IEEE 802.11, 802.11a, 802.11b, 802.11e, 802.11g, 802.11h, 802.11i, 802.11n, 802.11ac, 802.16, 802.16d, 802.16e, 802.11ah standards and/or future versions and/or derivatives and/or Long Term Evolution (LTE) of the above standards, a Personal Area Network (PAN), a Wireless PAN (WPAN), units and/or devices which are part of the above WLAN and/or PAN and/or WPAN networks, one way and/or two-way radio communication systems, cellular radio-telephone communication systems, a cellular telephone, a wireless telephone, a Personal Communication Systems (PCS) device, a PDA device which incorporates a wireless communication device, a Multiple Input Multiple Output (MIMO) transceiver or device, a Single Input Multiple Output (SIMO) transceiver or device, a Multiple Input Single Output (MISO) transceiver or device, a Maximum Ratio Combining (MRC) transceiver or device, a transceiver or device having “smart antenna” technology or multiple antenna technology, or the like.
p-0025Some embodiments may be used in conjunction with one or more types of wireless communication signals and/or systems, for example, Radio Frequency (RF), Infra Red (IR), Frequency-Division Multiplexing (FDM), Orthogonal FDM (OFDM), OFDMA, Time-Division Multiplexing (TDM), Time-Division Multiple Access (TDMA), Extended TDMA (E-TDMA), General Packet Radio Service (GPRS), Extended GPRS, Code-Division Multiple Access (CDMA), Wideband CDMA (WCDMA), CDMA 2000, Multi-Carrier Modulation (MDM), Discrete Multi-Tone (DMT), Bluetooth®, ZigBee™, or the like. Embodiments may be used in various other apparatuses, devices, systems and/or networks.
p-0026Turning now to <figref idrefs="DRAWINGS">FIG. 2</figref>, one embodiment of the client platform <b>200</b> consistent with the present disclosure is generally illustrated. The client platform <b>200</b> includes a host system <b>202</b> and a NIC <b>220</b>. The host system <b>202</b> may include a host processor <b>204</b>, chipset circuitry <b>206</b> and system memory <b>208</b>. The host processor <b>204</b> may include one or more processor cores and may be configured to execute system software <b>210</b>. System software <b>210</b> may include, for example, operating system code <b>212</b> (e.g., OS kernel code) and wireless and/or wired driver code <b>214</b> (such as, but not limited to, a local area network (LAN)). LAN driver code <b>214</b> may be configured to control, at least in part, the operation of the NIC <b>220</b> operation, as will be described in greater detail below. System memory <b>208</b> may include I/O memory buffers <b>216</b> configured to store one or more data packets that are to be transmitted by, or received by, NIC <b>220</b>. Chipset circuitry <b>206</b> may generally include “North Bridge” circuitry (not shown) to control communication between the processor <b>204</b>, NIC <b>220</b> and system memory <b>208</b>. Also, chipset circuitry <b>206</b> may include circuitry (not shown) to control I/O communications between the host system <b>202</b> and the NIC <b>220</b>.
p-0027NIC <b>220</b> may be logically and/or physically divided into a transmit path <b>221</b>A and a receive path <b>221</b>B. The NIC <b>220</b> may generally include Ethernet media access control (MAC) circuitry <b>222</b> and physical interface (PHY) circuitry <b>224</b>. MAC circuitry <b>222</b> may include transmit MAC circuitry <b>222</b>A configured to assemble data to be transmitted into frames, or packets, that include destination and source addresses along with network control information and error detection hash values. MAC circuitry <b>222</b> may also include receive MAC circuitry <b>222</b>B configured to remove data from received frames and place the data in system memory <b>208</b>. PHY circuitry <b>224</b> may include encoding circuitry <b>240</b>A configured to encode data packets and decoding circuitry <b>240</b>B configured to decode data packets. Encoding circuitry <b>240</b>A and decoding circuitry <b>240</b>B may collectively be embodied as a processor (for example, a digital signal processor) configured to perform analog-to-digital and digital-to-analog conversion, encoding and decoding of data, analog parasitic cancellation (for example, cross talk cancellation), and recovery of received data. PHY circuitry <b>224</b> may also include transmit (Tx) circuitry <b>226</b> configured to transmit one or more data packets and receive (Rx) circuitry <b>228</b> configured to receive one or more data packets. Rx circuitry <b>228</b> may include phase lock loop circuitry (PLL, not shown) configured to coordinate timing of data reception. The PHY circuitry <b>224</b> may be configured to establish an Ethernet communications link <b>230</b> for transmitting and receiving data (e.g., packets) either wirelessly and/or over a media dependent interface (which may include, for example Category 6 (Cat6) Ethernet cable).
p-0028Transmit MAC circuitry <b>222</b>A may include a controllable clock input <b>242</b> and a controllable power input <b>244</b>. Clock input <b>242</b> may generally include a clock signal that controls the clocking of the MAC circuitry <b>222</b>A. Power input <b>244</b> may generally include a power supply signal to supply power to one or more components of the MAC circuitry <b>222</b>A. Similarly, Receive MAC circuitry <b>222</b>B may include a controllable clock input <b>246</b> and a controllable power input <b>248</b>. Clock input <b>246</b> may generally include a clock signal that controls the clocking of the MAC circuitry <b>222</b>B. Power input <b>248</b> may generally include a power supply signal to supply power to one or more components of the MAC circuitry <b>222</b>B. Encoding circuitry <b>240</b>A may include a controllable clock input <b>254</b> and a controllable power input <b>256</b>, and decoding circuitry <b>240</b>B may include a controllable clock input <b>258</b> and a controllable power input <b>260</b>. Transmit circuitry <b>226</b> may include a controllable clock input <b>262</b> and a controllable power input <b>264</b>. In one embodiment, clocking of the transmit path <b>221</b>A and receive path <b>221</b>B may be independently controlled. Also, in one embodiment, the power of transmit path <b>221</b>A and receive path <b>221</b>B may be independently controlled.
p-0029The NIC <b>220</b> may be configured to exchange commands and data with a remote application servers <b>106</b>, via one or access points/bridges (which may include a switch, bridge, router and/or other NIC which may be associated with a host system similar to host system <b>202</b>, not shown in <figref idrefs="DRAWINGS">FIG. 2</figref>) and/or remote application server <b>106</b>. Remote application server <b>106</b> may include any device that is configured to communicate with the NIC <b>220</b> using a wireless or wired communications protocol to maintain an AOAC application executing on client platform <b>200</b>.
p-0030Although other power states are also possible, the client platform <b>200</b> is configured to operate in at least an active power state mode and a low-power state. In the active-power state, the host system <b>202</b> and the NIC <b>220</b> are generally fully functional. When the client platform <b>200</b> is operating in the low-power state, power may generally be turned off to the host system <b>202</b>, and just the NIC <b>220</b> may remain functional.
p-0031Prior to switching from a first power state (e.g., the active power state or an intermediary or secondary-power state between the active power state and the low-power state as described herein) to the low-power state, the client platform <b>200</b> is configured to initiate the building of a list or set of keep-alive messages <b>272</b> for one or more AOAC applications/services <b>270</b> (e.g., applications <b>270</b> stored in memory <b>208</b>) executing on the host system <b>202</b> that desire to maintain connectivity and presence to the network and application servers. For example, the AOAC applications/services <b>270</b> may initiate the building of the keep-alive messages <b>272</b> immediately prior to the client platform <b>200</b> transitioning to the low-power state, for example, upon activation of a function key or any other means such as, but not limited to, a predefined timeout period. The keep-alive messages <b>272</b> are configured to maintain connectivity and presence with the remote application servers. For example, the keep-alive messages <b>272</b> may be configured to maintain the L2 connectivity (for example, to support WoWLAN). The offloaded protocols may also be configured to maintain the platform L3 (IP) address (e.g., Address Resolution Protocol (ARP), Dynamic Host Configuration Protocol (DHCP) leases, and Internet Control Message Protocol (ICMP)).
p-0032The specific format of each of the keep-alive messages <b>272</b> will therefore depend on the specific AOAC application as well as the transmission protocols used to communicate between the client platform <b>200</b> and the remote application servers. For example, the keep-alive messages <b>272</b> may be generated based on a respective AOAC application/service proprietary protocol and may include appropriate sequencing information and timing (if required) and may be secured with the application/service key/tokens (if required).
p-0033The set of keep-alive messages <b>272</b> (or at least a portion thereof) may be stored in memory <b>274</b>. Memory <b>274</b> may be located anywhere on the client platform <b>200</b> that is accessible by the NIC <b>220</b> while the client platform <b>200</b> is (and remains) in the low-power state. For example, memory <b>274</b> may be part of the NIC <b>220</b>; however, this is only an example and the memory <b>274</b> storing the set of keep-alive messages <b>272</b> may be located anywhere in the client platform <b>200</b>.
p-0034Once the client platform <b>200</b> transitions into the low-power state, the NIC <b>220</b> may be configured to periodically transmit at least one data packet to the remote application server <b>106</b> containing a keep-alive message <b>272</b>. For example, according to one embodiment, the transmit MAC circuitry <b>222</b>A is configured to receive an AOAC command from a device driver operating on the host system <b>202</b>. In response to the AOAC command, the transmit MAC circuitry <b>222</b>A and at least the Tx circuitry <b>226</b> are configured to periodically transmit data packets including the keep-alive messages <b>272</b> to the remote application server <b>106</b>. The keep-alive message <b>272</b> may be periodically transmitted based on one or more clock signals/inputs <b>242</b>, <b>246</b>, <b>254</b>, <b>258</b>, and/or <b>262</b> associated with the NIC <b>220</b>. The frequency in which the keep-alive messages <b>272</b> may be transmitted by the NIC <b>220</b> may be the same or different for each of a plurality of AOAC applications <b>270</b>. Additionally, the frequency in which the NIC <b>220</b> transmits the keep-alive messages <b>270</b> may be constant or may change over time.
p-0035For example, when there are multiple AOAC applications <b>270</b> on the client platform <b>200</b>, the client platform <b>200</b> (e.g., but not limited to, the NIC <b>220</b>) may determine the minimum time or frequency (T<sub>app</sub>) required for each AOAC application <b>270</b> in order to maintain connectivity and presence with the remote servers. The client platform <b>200</b> may then compare each of the minimum times T<sub>app </sub>to determine the smallest T<sub>app </sub>of all of the AOAC application <b>270</b> (i.e., T<sub>min</sub>). The NIC <b>220</b> may then transmit the keep-alive messages <b>272</b> for all of the AOAC applications <b>270</b> based on T<sub>min</sub>. Transmitting the keep-alive messages <b>272</b> based on T<sub>min </sub>for all of the AOAC applications <b>270</b> may further reduce power consumption of the client platform <b>200</b> while in the low-power state. In particular, the NIC <b>220</b> generally consumes more power while transmitting packets than when not transmitting. As such, transmitting the keep-alive messages <b>272</b> based on T<sub>min </sub>for all of the AOAC applications <b>270</b> may further reduce power consumption of the client platform <b>200</b> by allowing the NIC <b>220</b> to transmit multiple keep-alive messages <b>272</b> during a single time period and therefore minimizing the amount of time that the NIC <b>220</b> spends transmitting packets.
p-0036When all of the keep-alive messages <b>272</b> in the memory <b>274</b> have been transmitted by the NIC <b>220</b>, the NIC <b>220</b> maybe configured to transition the client platform <b>200</b> from the low-power state to the active power state (or an intermediary power state between the low-power state and the active-power state) to generate additional keep-alive messages <b>272</b> in memory <b>274</b>. Once the memory <b>274</b> has been replenished with additional keep-alive messages <b>272</b>, the client platform <b>200</b> may transition back to the low-power state and the NIC <b>220</b> may resume periodically transmitting the keep-alive messages <b>272</b> as described herein.
p-0037According to another embodiment, the client platform <b>200</b> may reduce the storage required to maintain connectivity and presence while client platform <b>200</b> is in the low-power state. In particular, the client platform <b>200</b> may be configured to generate a general keep-alive message with a list of security tokens for a predefined period of time. The general keep-alive messages and the list of security tokens may then be transferred to the NIC <b>220</b> before the client platform <b>200</b> transitions in the low-power state. Additionally, information about each keep-alive message (such as the minimum required periodicity to maintain presence/connectivity, the destination address for the keep-alive message, etc.) may also be transferred to the NIC <b>220</b>. Upon transitioning to the low-power state, the NIC <b>220</b> may recover the general keep-alive messages and the list of security tokens, and update the pre-built general keep-alive messages with the security token from the list and sequencing information (along with the destination address). The NIC <b>220</b> may then transmit the keep-alive message <b>272</b> at the appropriate time intervals to maintain the application/service presence to the network in a secure fashion as to preserve itself against various attacks. Accordingly, the amount of storage required may be reduced since the general keep-alive message and the list of security tokens is generally much smaller than the list of completely pre-built keep-alive messages <b>272</b>. For example, storing ten fully pre-build keep-alive messages of 200 bytes each would require 2000 bytes of storage while using a general keep-alive message of 200 bytes and a list of security token for each message to be generated would require less than 400 bytes for example.
p-0038The client platform <b>200</b> (e.g., the NIC <b>220</b>) may also be configured to support more extensive wake patterns than the one defined for WoWLAN. For example, the NIC <b>220</b> may be configured to wake up all or a portion of the client platform <b>200</b> upon receiving an incoming internet packet, for example, from specific internet based applications such as applications/services executing on one or more remote application servers. The wake up patterns may include, but are not limited to, a TCP (Transport Control Protocol) SYN message, an HTTP or HTTPS message or any application specific message.
p-0039The NIC <b>220</b> may also be configured to optionally receive at least one data packet from the remote application servers <b>106</b>. In one embodiment, to transition into the low-power state from the active data transmission power state, the NIC <b>220</b> may be configured to control the clock input <b>242</b>, <b>254</b> and/or <b>262</b>. For example, the NIC <b>220</b> may be configured to control the clock input <b>246</b> and/or <b>258</b> and the clock inputs <b>242</b>, <b>254</b>, <b>262</b>, <b>246</b> and/or <b>258</b> may be gated (clock gating) to turn the clock signal OFF to the corresponding circuitry.
p-0040One embodiment illustrating a list <b>300</b> of a plurality of keep-alive messages stored in memory <b>274</b> for a plurality of AOAC applications <b>302</b>(<b>1</b>)-(<i>n</i>), is generally illustrated in <figref idrefs="DRAWINGS">FIG. 3</figref>. For example, AOAC applications <b>302</b>(<b>1</b>)-(<i>n</i>) may include an instant messaging (IM) application <b>302</b>(<b>1</b>) (such as, but not limited to, Microsoft Instant Messaging™, AOL Instant Messenger™, Mobile Instant Messaging (MIM), or the like), a social networking application <b>302</b>(<b>2</b>) (such as, but not limited to, Facebook™, Twitter™, MySpace™, or the like), and/or any other AOAC application <b>302</b>(<i>n</i>). Each AOAC application <b>302</b>(<b>1</b>)-(<i>n</i>) may include a plurality of associated keep-alive messages <b>304</b>(<b>1</b>)-(N), <b>306</b>(<b>1</b>)-(N), and <b>308</b>(<b>1</b>)-(N) based on a respective application/service proprietary protocol, sequence number, timing information, and/or application/service key or token. One embodiment of a keep-alive packet <b>400</b> consistent with the present disclosure is generally illustrated in <figref idrefs="DRAWINGS">FIG. 4</figref>. For example, the keep-alive packet <b>400</b> may comprise a header <b>402</b> and a payload <b>404</b> compatible with a TCP/IP based protocol. The header <b>402</b> may contain destination and source MAC addresses. The payload <b>404</b> may contain Internet Protocol header segment <b>406</b>, a TCP segment <b>408</b>, and a TCP payload segment <b>410</b> as generally illustrated.
p-0041Turning now to <figref idrefs="DRAWINGS">FIG. 5</figref>, a chart <b>500</b> is provided which illustrates one example of the average power consumption (W) by a client platform in various modes (e.g., modes <b>502</b>, <b>504</b>, and <b>506</b>). As can be seen, the client platform and NIC <b>220</b> consume approximately 3.25 W while operating in the active-power state (e.g., SO Idle) with WiFi active (<b>502</b>) and consumes approximately 0.4 W while in the low-power state (e.g., S3) with WiFi disabled (<b>504</b>). As may be appreciated, the S3 state (<b>504</b>) has the WiFi disabled and therefore cannot maintain network connectivity and/or presence. The S3 state (<b>504</b>) is believed to represent the minimum power that the NIC <b>220</b> can consume without the platform being shut down completely. In contrast, the NIC <b>220</b> operating in the low-power state (e.g., S3) utilizing the AOAC method of the present disclosure only consumes approximately 0.5 W (<b>506</b>). As such, the NIC <b>220</b> in the AOAC mode (<b>506</b>) of the present disclosure only consumes approximately 0.1 W more than the S3 mode (<b>504</b>), while still maintaining network connectivity and presence.
p-0042Turning now to <figref idrefs="DRAWINGS">FIG. 6</figref>, one embodiment illustrating a flowchart <b>600</b> of operations to establish and/or maintain connectivity and presence with a remote application server is provided. For example, one or more AOAC applications executing on the client platform are connected to a remote application server (operation <b>602</b>). The client platform is operating in a first-power state (e.g., an active-power state). The client platform then receives a notification to transition from the first-power state to a low-power state (operation <b>604</b>). The notification may be user-generated (e.g., closing the lid on a laptop or activating a low-power state function) and/or automatic (e.g., the client platform may automatically transition to the low-power state after a predetermined period of inactivity). Prior to transitioning to the low-power state, the client platform initiates the generation of the keep-alive messages (operation <b>606</b>). The keep-alive messages may be generated prior to, or after, notification to transition to the low-power state. As described herein, the entire keep-alive messages may be generated (e.g., the completely pre-built keep-alive messages) or a portion of the keep-alive messages may be generated (e.g., a general keep-alive message and a list of security tokens). The keep-alive messages (or portions thereof) may be stored in memory which is accessible to the NIC while the client platform is in the low-power state (operation <b>608</b>). Optionally, the client platform determines the frequency to transmit the keep-alive messages, for example, when multiple AOAC applications are executing on the client platform (operation <b>610</b>).
p-0043The client platform may then transition to the low-power state (operation <b>612</b>). Once the client platform in operating in the low-power state, the NIC may begin periodically transmitting the keep-alive messages to the remote application server (operation <b>614</b>). The NIC may continue to transmit the keep-alive messages until the client platform transition from the low-power state (e.g., due to a packet received by the NIC or a user-initiated transition). Alternatively, the NIC may continue to transmit the keep-alive messages until the remaining number of keep-alive messages stored in the memory reaches a minimum threshold. Once the minimum threshold has been reached, the client platform transitions from the low-power state to a second-power state (operation <b>616</b>). The client platform then initiates generating additional keep-alive messages and stores them in the memory (operation <b>618</b>). The second-power state may be the active-power state or an intermediary power state sufficient to allow the client platform to generate additional keep-alive messages. The minimum threshold may be selected to allow the client platform sufficient time to generate additional keep-alive messages while still maintaining connectivity and presence with the remote application server. After the additional keep-alive messages have been generated/stored, the client platform transitions back to the low-power state (operation <b>612</b>) and resumes periodically transmitting the keep-alive messages as described herein.
p-0044As explained herein, the client platform <b>102</b>, <figref idrefs="DRAWINGS">FIG. 1</figref>, may maintain connectivity and presence to the network <b>104</b> and one or more remote application servers <b>106</b> when the client platform <b>102</b> is in a low-power state by periodically transmitting keep-alive messages to the appropriate address (e.g., the application server <b>106</b>). As discussed herein, the keep-alive messages may be generated based on a respective application/service proprietary protocol, sequence number, timing information, and/or application/service key or token. To operate in accordance with the protocols and/or standards described herein, the keep-alive messages may implement some of the communication system layers. <figref idrefs="DRAWINGS">FIG. 7</figref> illustrates at a high level a keep-alive message <b>700</b> and its associated frequency of the various layers of a network stack. For example, the keep-alive message <b>700</b> consistent with at least one embodiment of the present disclosure may target the data/link layer message (such as, but not limited to, 802.11 MAC layer (i.e., OSI Data/Link Layer 2)) and applications/services layer messages (such as, but not limited to, OSI Session Layer 5, OSI Presentation layer 6, and OSI Application Layer 7)); however, it should be understood that a keep-alive message consistent with the present disclosure is also applicable to messages at any layer.
p-0045The Data/Link Layer 2 provides the functional and procedural means to transfer data between network entities and to detect and possibly correct errors that may occur in the Physical Layer. The Session Layer 5 controls the dialogues (connections) between computers. It establishes, manages and terminates the connections between the local and remote application. It provides for full-duplex, half-duplex, or simplex operation, and establishes checkpointing, adjournment, termination, and restart procedures. The Session Layer is commonly implemented explicitly in application environments that use remote procedure calls in which the client platform <b>102</b> sends a request message to a known remote application server <b>106</b> to execute a specified procedure with supplied parameters. The remote application server <b>106</b> sends a response to the client platform <b>102</b>, and the application continues its process. The Presentation Layer 6 establishes context between Application Layer entities, in which the higher-layer entities may use different syntax and semantics if the presentation service provides a mapping between them. If a mapping is available, presentation service data units are encapsulated into session protocol data units, and passed down the stack. The Presentation Layer 6 provides independence from data representation (e.g., encryption) by translating between application and network formats. The Application Layer 7 interacts with software applications that implement a communicating component. Application Layer 7 functions may include identifying communication partners, determining resource availability, and synchronizing communication.
p-0046NIC <b>220</b> may also include I/O link or bus circuitry (not shown) to provide I/O communications between the NIC <b>220</b> and the chipset circuitry <b>206</b> (such link or bus circuitry may comply with the aforementioned PCI-Express communications protocol). NIC may also include MAC/PHY interface circuitry (not shown) configured to provide I/O communications between the MAC circuitry <b>220</b> and the PHY circuitry <b>224</b> (which may include, for example SGMII or XAUI).
p-0047Memory <b>208</b> and/or memory <b>274</b> associated with the NIC <b>220</b> may comprise one or more of the following types of memory: semiconductor firmware memory, programmable memory, non-volatile memory, read only memory, electrically programmable memory, random access memory, flash memory, magnetic disk memory, and/or optical disk memory. Either additionally or alternatively, memory <b>208</b> and/or memory <b>274</b> associated with the NIC <b>220</b> may comprise other and/or later-developed types of computer-readable memory. Embodiments of the methods described herein may be implemented in a computer program that may be stored on a storage medium having instructions to program a system to perform the methods. The storage medium may include, but is not limited to, any type of disk including floppy disks, optical disks, compact disk read-only memories (CD-ROMs), compact disk rewritables (CD-RWs), and magneto-optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic and static RAMs, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), flash memories, magnetic or optical cards, or any type of media suitable for storing electronic instructions. Other embodiments may be implemented as software modules executed by a programmable control device.
p-0048The wireless or wired communications protocol, described herein, may be capable permitting communication using a Transmission Control Protocol/Internet Protocol (TCP/IP). The wireless or wired protocol may comply or be compatible with the Ethernet standard published by the Institute of Electrical and Electronics Engineers (IEEE) titled “IEEE 802.3 Standard”, published in March, 2002 and/or later versions of this standard such as, but not limited to, “IEEE 802.11 Standard”.
p-0049As used herein, a “PHY” may be defined as an object and/or circuitry used to interface to one or more devices, and such object and/or circuitry may be defined by one or more of the communication protocols set forth herein. The PHY may comprise a physical PHY comprising transceiver circuitry to interface to the applicable communication link. The PHY may alternately and/or additionally comprise a virtual PHY to interface to another virtual PHY or to a physical PHY. PHY circuitry <b>224</b> may comply or be compatible with, the aforementioned IEEE 802.3 and/or 802.11 communications protocols, and/or PHY circuitry that is compliant with an after-developed communications protocol.
p-0050Referring back to <figref idrefs="DRAWINGS">FIG. 1</figref>, the client platform <b>102</b> is configured to periodically transmit keep-alive messages to the remote application server <b>106</b> in order to maintain connectivity and presence with the remote server <b>106</b>. According to one embodiment, the present disclosure features a method for improving the frequency for transmitting the keep-alive messages. The present disclosure may feature adaptive rate controlling to guarantee the connectivity between the client platform <b>102</b> and remote application servers <b>106</b> and may also feature a traffic shaping scheme to coalesce keep-alive messages to improve energy efficiency by maximizing the time for the client platform <b>102</b> to stay in a low-power state.
p-0051The present disclosure may maintain connectivity between the client platform <b>102</b> and remote application servers <b>106</b>, even with the presence of various communication equipment <b>110</b> (such as, but not limited to, Network Address Translation (NAT) boxes or the like) in the communication path between the client platform <b>102</b> and the remote application server <b>106</b>. In particular, if the keep-alive messages are not transmitted at a correct frequency, a NAT device <b>110</b> may time-out in the network thereby dropping the connection between the client platform <b>102</b> and the remote application server <b>106</b>, even if the client platform <b>102</b> and the remote application server <b>106</b> are exchanging keep-alive messages at their default configuration rate. This problem may occur, for example, when the NAT time-out frequency is less than the remote application server time-out frequency. This problem is particularly problematic because the NAT time-out may be a configuration parameter beyond the control of the application.
p-0052According to one aspect, as described herein the present disclosure may dynamically determine what current connection timeouts and send the keep-alive messages before any connection between the client platform <b>102</b> and the remote application server <b>106</b> is dropped; and align nearby keep-alive messages from multiple AOAC applications on the client platform <b>102</b> to be sent in one burst to increase energy efficiency, instead of waking up to send keep-alive messages associated with each AOAC application independently.
p-0053With continued reference to <figref idrefs="DRAWINGS">FIG. 1</figref>, a connection between the client platform <b>102</b> and a remote application server <b>106</b> is established and maintained for a timeout of “T” seconds, after which if no data is exchanged, the connection will be dropped and the client platform <b>102</b> will no longer by reachable by the remote application server <b>106</b> (i.e., the remote application server <b>106</b> marks the client platform as “offline.”). The maximum value of T is the minimum of {T<sub>S</sub>, T<sub>N</sub>}, wherein T<sub>S </sub>represents the minimum timeout of the remote application server <b>106</b> and T<sub>N </sub>represents the minimum timeout of any communication equipment <b>110</b> (e.g., NAT box) between the client platform <b>102</b> and the remote application server <b>106</b>. For example, TCP session timeout may be 2 hours, IM offline indication may be approximately 5 minutes, and NAT timeouts may range from 15 seconds to 1 hour.
p-0054Due to the variability in the connection timeouts and the unpredictability of the network path between the client platform <b>102</b> and the remote application server <b>106</b>, the AOAC application may generally default to small timeouts frequency periods, for example, in the range of about tens of second, in order to ensure that the connection is maintained. As may be appreciated, however, this default frequency period is not optimal and is not energy efficient. Moreover, this default frequency period may reduce the amount of time that the client platform <b>102</b> may remain in the low-power state because the small default frequency will consume a large number of keep-alive messages very quickly. By increasing the keep-alive frequency from this default frequency, the client platform <b>102</b> may remain in the low-power state for a longer period of time, and may also increase the overall energy efficiency of the client platform <b>102</b>.
p-0055Operations of the client platform <b>102</b> to determine the optimum (or near optimum) keep-alive frequency, in conjunction with other features of the systems of <figref idrefs="DRAWINGS">FIG. 1</figref> and <figref idrefs="DRAWINGS">FIG. 2</figref>, are described below:
(1) Dynamic Connection Timeout Discovery:
(a) Dynamic Binary Search Algorithm to Determine Timeout
p-0056At run time the client platform <b>102</b> (i.e., a state other than the low-power state such as, but not limited, the active power state S0 state as defined by ACPI) infers both T<sub>S </sub>and T<sub>N</sub>. As described herein, T<sub>S </sub>can be inferred by monitoring the connection state with the server and T<sub>N </sub>can be inferred by monitoring the server reachability. The keep-alive period may be set to the minimum of the two values, Min(T<sub>S</sub>, T<sub>N</sub>).
p-0057The present disclosure will first describe how to adaptively determine a general timeout Ti using a binary search methodology. The present disclosure will then describe how this methodology is applied to determine both T<sub>S </sub>and T<sub>N</sub>, which may only differ in the conditions of the methodology. It should be appreciated that the binary search methodology described herein is for example only because of its compelling convergence time (i.e. logarithmic run time); however, other search methodologies can be used to locate the value of Ti.
p-0058Turning now to <figref idrefs="DRAWINGS">FIG. 8</figref>, one embodiment illustrating a flowchart <b>800</b> of operations of the binary search methodology to determine a timeout Ti is generally illustrated. The methodology starts by initializing the maximum and the minimum values for the timeout (T<sub>max </sub>and T<sub>min</sub>) and the current timeout is initialized to the minimum (operation <b>802</b>). For example, the maximum T<sub>max </sub>can be set at 2 hours (i.e., the TCP default session timeout) and the minimum T<sub>min </sub>can be set at 30 seconds (smallest NAT timeout). It should be appreciated, however, that the initial values of T<sub>max </sub>and/or T<sub>min </sub>may be selected based on other criterion such as, but not limited to, historical data/calculations and the like.
p-0059After initialization, Ti is set to a value between the maximum T<sub>max </sub>and minimum T<sub>min </sub>(operation <b>804</b>) and the connection status is checked for the new timeout (operation <b>806</b>). According to one embodiment, Ti may be set of a midrange value between T<sub>max </sub>and T<sub>min</sub>; however, it should be appreciated that the value of Ti may be selected to be any value between T<sub>max </sub>and T<sub>min. </sub>If the connection is still alive (operation <b>808</b>), then the timeout Ti can be increased, for example, by increasing the minimum threshold T<sub>min </sub>to the current timeout Ti before looping again. If the connection is dropped (operation <b>810</b>), then the timeout Ti has to be decreased, for example, by decreasing the maximum threshold T<sub>max </sub>to the current timeout Ti before looping again.
p-0060The method may be repeated for up to a maximum predetermined number of iterations and/or until two subsequent timeouts (e.g., Ti and Ti−1) are close enough in which the algorithm terminates with the correct timeout Ti. For example, the difference between two subsequent timeouts (e.g., Ti and Ti−1) may be determined (operation <b>812</b>). If the difference is zero (operation <b>814</b>), then the maximum T<sub>max </sub>and minimum T<sub>min </sub>may be reinitialized, and the method <b>800</b> may begin again. If the difference is not zero, then the difference may be compared (operation <b>816</b>) to a threshold value (e.g., a percentage of the difference divided by the current value of Ti). If the difference is less than or equal to the threshold value, then the timeout is set to the current value of Ti at operation <b>818</b> (provided that the connection is maintained). If the difference is greater than the threshold value, then the connection status is checked (operation <b>806</b>) as described herein.
p-0061By knowing the correct timeout Ti, the client platform <b>102</b> only needs to send one keep-alive message before the timeout occurs and hence only up every Ti seconds to send the keep-alive message whether offloaded in the NIC <b>220</b> or after waking up the client platform <b>102</b>. The client platform <b>102</b> will be more energy-efficient as the value of Ti increases. This methodology may also be used to determine the values of both T<sub>S </sub>and T<sub>N </sub>as they differ on how to check the connection status and how to infer that a connection has been dropped as described herein.
p-0062(b) Determine Server Timeouts (TS) using Proprietary Keep-Alive Handshakes
p-0063As previously mentioned, T<sub>S </sub>represents the timeout of the remote application server side. This happens when the remote application server side has timed out and dropped the application session even though the network connection to the remote application server is open (e.g., server IP address is reachable through network requests like PING). As a result, the client platform <b>102</b> is no longer reachable (marked offline) from the remote application server <b>106</b>. This case happens when the application-level keep-alive handshake has a shorter timeout than that of the network communication equipment <b>110</b>.
p-0064Referring now to <figref idrefs="DRAWINGS">FIG. 9</figref>, one embodiment of a system <b>900</b> for determining a connection timeout using a handshake reply is generally illustrated. In particular, a client platform <b>102</b> sends an application level handshake request <b>902</b> to a remote application server <b>106</b>. If the remote application server <b>106</b> has not timed out the application session, the remote application server <b>106</b> should send back a handshake reply <b>904</b> and reset the timer. The client platform <b>106</b> can send a handshake request <b>902</b> every Ti and if it gets a reply using this interval, then this indicates that the connection is alive for the timeout of Ti and a new larger value is to be determined as described herein, for example, with respect to <figref idrefs="DRAWINGS">FIG. 8</figref>.
p-0065On the other hand, if a handshake request <b>902</b> is transmitted at timeout interval Ti, and a handshake reply <b>904</b> is not received at the client platform <b>102</b>, this indicates that the remote application server <b>106</b> has dropped the application session (i.e., the request is timed out) and a new smaller value for Ti is to be determined, for example, as described in <figref idrefs="DRAWINGS">FIG. 8</figref>. The client platform <b>102</b> cannot just simply resend the handshake keep-alive request <b>902</b> with an updated interval Ti, instead the client platform <b>102</b> has to first re-establish the application session (i.e. re-entry to the network) with the remote application server <b>106</b> each time an application session was dropped. While this method relies on a proprietary handshake, the method could be valuable for end-to-end services differentiations like using Intel AppUp server to push content, maintain application sessions with Intel's clients.
p-0066(c) Determine Server Timeouts (TS) using Concurrent Connection
p-0067In some AOAC applications (for example, some HTTP-based push for updates), the remote application server might not require the application session to be alive for sending the keep-alive reply; instead it treats all handshake-requests as an “add-client” request. If the client platform is active, it will reset the session timeout before sending the reply and if not, it will first add the client platform to the set of active clients, reset the timeout, and then send the reply. In this case using the proprietary keep-alive handshakes to determine that a session is dropped may not work because even the network connection is dropped, a new network connection will be re-established based on sending a new keep-alive request.
p-0068To address this case, the present disclosure may utilize concurrent connections as generally illustrated in the system <b>1000</b> shown in <figref idrefs="DRAWINGS">FIG. 10</figref>. In particular, the system <b>1000</b> may include multiple connections running between the client platform <b>102</b> and the server <b>106</b>, e.g., a primary connection <b>1002</b> and one (or more) concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>). On the primary connection, the default working keep-alive timeout T<sub>primary </sub>is used to connect the client platform <b>102</b> to the remote application server <b>106</b>. The default timeout T<sub>primary </sub>may be fixed and may always be used until the optimal timeout is determined on the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>).
p-0069On the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>), a variable timeout (Ti) may be used. The optimal timeout may be determined as described herein, for example, with respect to <figref idrefs="DRAWINGS">FIG. 8</figref>, that is, if the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is dropped, Ti will decrease and if it is still alive, Ti will increase until it converges to the optimal with the required accuracy. The AOAC application may induce the information of whether the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is dropped versus alive by comparing the data received on the primary connection <b>1002</b> and the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>). If some data update is received on the primary connection <b>1002</b> and not on the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>), then this indicates that the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is dropped and if the same updates are received on both connections <b>1002</b>, <b>1004</b>(<b>1</b>)-(<i>n</i>), this indicates that the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is alive.
p-0070By way of example, any status update from the remote application server <b>106</b> that is received on the primary connection <b>1002</b> by the client platform <b>102</b> and not received on the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) indicates that the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is dropped. For example, if remote application server <b>106</b> is a mail server and an indication of new mail is sent to the client platform <b>102</b> when new mail arrives, then the indication of new mail should be received on the primary connection <b>1002</b>. If the new mail indication is received on the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>), then the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is alive, if it is not received, then the concurrent connection <b>1004</b>(<b>1</b>)-(<i>n</i>) is dead. By monitoring and comparing data received on the primary <b>1002</b> versus the concurrent ones <b>1004</b>(<b>1</b>)-(<i>n</i>), the client platform <b>102</b> can induce which of the concurrent connections is dead.
p-0071While the present disclosure describes the systems and methods using two concurrent connections, it can easily be extended to multiple (more than 2) connection running in parallel each running at a different timeout value and as the number of concurrent connections increase the convergence time to the optimal timeout value will be faster.
p-0072(d) Determine Connection Timeout (T<sub>N</sub>) using Active Probing
p-0073As described herein, T<sub>N </sub>represents the minimum timeout of any communication equipment (e.g., Network Address Translation “NAT” box) along the communication path from the client platform to the remote application server. When T<sub>N </sub>expires, the network pipe is “blocked”, even though the remote application server still maintains the session and client state but the client platform is no longer reachable by the remote application server.
p-0074A client platform initiated handshake request cannot be used to determine T<sub>N </sub>as it would refresh and re-open the network pipe (e.g., NAT device will insert new entry for the client port in its cache). As a result, the connection timeout is tested using a server initiated handshake (i.e., outside-in), which may be referred to as active probing (active because it requires the active participation of the AOAC remote application server).
p-0075Turning now to <figref idrefs="DRAWINGS">FIG. 11</figref>, one embodiment of a system <b>1100</b> for determining the connection timeout using active probing is generally illustrated. In particular, the remote application server <b>106</b> (e.g., AOAC APP1 server in <figref idrefs="DRAWINGS">FIG. 11</figref>) may be configured to send handshake requests <b>1102</b> every timeout T<sub>i </sub>destined to the client platform <b>102</b>, and receive a handshake reply <b>1104</b> from the client platform <b>102</b> indicating that the network pipe is open. T<sub>i </sub>may then be increased as described in <figref idrefs="DRAWINGS">FIG. 8</figref>. If no handshake reply <b>1104</b> is received at the remote application server <b>102</b>, this indicates that the network pipe is blocked. As such, the client platform <b>102</b> not receiving the handshake request <b>1102</b> for Ti will timeout and will reestablish the connection afterwards. The remote application server <b>106</b> not receiving a handshake reply <b>1104</b> at Ti will determine that a new, smaller timeout value for Ti has to be used, and will wait until the client platform <b>102</b> reestablishes the connection with the remote application server <b>106</b> before trying the smaller value of Ti, for example, as described in <figref idrefs="DRAWINGS">FIG. 8</figref>.
p-0076AOAC push servers (such as, but not limited to, Apple Push Notification Service (APNS)™ and the Intel AppUp push server™) aggregate data updates from different application servers (for example, but not limited to, APNS will aggregate email updates, Facebook™ updates, Linkedin™ updates, etc.) to optimize transmission to the client platform <b>102</b>. In these embodiments, the push server may determine the network timeout T<sub>N </sub>to the client platform as described herein. It should be noted that whether the server acts as a data aggregator or not, the server can participate in the active probing by sending handshake requests to the client which will reply with handshake replies as described.
p-0077(e) Determine Connection Timeout (T<sub>N</sub>) using Passive Listening
p-0078To discover T<sub>N</sub>, the client platform can also use “Passive Listening.” The system and method only requires changes to the client platform; however, passive listening may have a slower convergence time to find the optimum keep-alive period. As described herein, Passive Listening does not require any cooperation from the push server.
p-0079Turning to <figref idrefs="DRAWINGS">FIG. 12</figref>, one embodiment illustrating a flowchart <b>1200</b> of operations for determining a timeout Ti using passive listening is generally illustrated. The timeout Ti may be initialized, for example, to a default value or a value based on historical data (operation <b>1202</b>) and the current timeout is set to Ti (operation <b>1204</b>). The client platform may detect that the connection has timed out and has been dropped by passively monitoring data delivery failure (operation <b>1206</b>). When the client platform is testing a keep-alive timeout value of Ti, instead of just sending a keep-alive message, the client platform re-establishes the connection every Ti (operation <b>1208</b>) and new application data received will indicate that the connection has been already dropped (operation <b>1210</b>). As such, a new and smaller value of Ti has to be tested (operation <b>1212</b>), for example, as described in <figref idrefs="DRAWINGS">FIG. 8</figref>.
p-0080In contrast, if the client platform does not receive any new application data (operation <b>1214</b>), this does not necessarily mean that the connection is alive and has not been dropped. For example, because receiving pushed data from the remote application server is data dependent, the remote application server might not have had any new data to send to the client platform during the last keep-alive period Ti. However, each time the connection is re-established with no new data being received increases the probability that the connection has not been blocked at this timeout.
p-0081By way of example, assuming that the AOAC application is an email application and the client platform is performing a passive listening approach with the email server, when the connection is dropped any new email received destined to the client platform will not be delivered (pushed) to the client platform and only when the client platform re-connects back to the remote application server will the new email be delivered. When the client platform connects to the remote application server, if it finds a new email that has not been delivered, then the client platform may determine that Ti is large and should be decreased. On the other hand, if the client platform connects to the remote application server and finds no new emails, then the client platform is not sure whether the connection was dropped or not because the connection could have been dropped but no new email has arrived and hence the remote application server did not try to contact the client platform. However, with every time the client platform connects and no new email is there, then the confidence that the connection is alive increases. If the client platform connects, for example 1000 times, at the value Ti to the remote application server and each time there is no new email, then the client platform may become very confident that Ti is not large.
p-0082The client platform will keep testing the current Ti until enough confidence has been achieved that the connection is alive (operations <b>1216</b> and <b>1218</b>). The confidence value depends on the application. For example, the more “chatty” the AOAC application is, then the less number of trials is needed to establish confidence. For example, the larger the “friends list” in Facebook™, there is an increased likelihood that more data and updates are expected. In contrast, if only have one friend is listed in the “friends list” in Facebook™, then there is a low probability that each time you connect to the remote application server there is a new update/message from this friend. Accordingly, confidence may be proportional to expected update rate of the application. If the AOAC application is expected to have a lot of updates and it connects and finds no updates, then the probability that the connection is alive is high and fewer connection trials are needed to establish enough confidence.
p-0083Once confidence has been achieved, a longer value of Ti can be tested (operation <b>1220</b>), for example, as described in <figref idrefs="DRAWINGS">FIG. 8</figref>. As a result, the convergence time may be slower.
p-0084As shown in <figref idrefs="DRAWINGS">FIG. 12</figref>, the number of testing times for each new connection timeout value is inversely proportional to Ti because as Ti increases the probability that new data should have been pushed by the server increases and as a result fewer times are needed to be checked. In particular, R represents the number of retrials for each Ti after which the client platform can claim that Ti is not too large and can be increased. R is therefore inversely proportional to Ti and K may be considered a constant of proportionality. As described herein, the number of retrials (and hence the values of R and K) may be AOAC application specific and may be related to the expected data update rate of the application.
p-0085New data received after connection reestablishment might be for example, an AOAC email client syncing up with the server and an email is downloaded which should have been pushed by the server or an IM client that receives an indication that a message has not been delivered because client was offline.
p-0086By way of example, an AOAC application (e.g., an AOAC email application) is checking with the email server every Ti whether you have an email or not. If Ti is short (for example, checking every 10 minutes), then the probability that the client platform has received an email during the previous 10 minutes is not very high and the client platform has to check multiple times (for example, check 100 times) before the client platform is sure that Ti=10 minutes did not cause the connection to drop. On the other hand, if Ti is long (e.g., checking every 10 hours), then the probability that the client platform has received an email during the previous 10 hours are much higher. In this case, the client platform does not need to repeat the check as often. For example, checking 10 times (instead of 100 times) may be enough to establish the confidence. As explained herein, the number of retries (R and K) will depend on the AOAC application. For example, an email application may have much fewer updates compared to stocks. As a result, knowing the expected data update rate for an AOAC application may indicate how many retries are needed to build enough confidence.
(f) Re-Evaluating Timeout Values
p-0087T<sub>N </sub>and Ti might have to be re-evaluated based on various conditions, e.g. a new AOAC application is added to the AOAC-enabled application list (i.e., begins executing on the client platform), the client platform is connected to a new network, etc. These are just few conditions which might lead to a re-evaluation of the time-out.
(2) Keep Alive Messages Alignment:
p-0088As discussed herein, the client platform may be configured to coalesce keep-alive messages to increase the energy efficiency of the client platform (e.g., the NIC). The client platform may include a transmission agent configured to align the transmission of keep-alive messages from two or more AOAC applications as one burst, where the time between two bursts is equal to the minimum keep-alive period of an AOAC application X. As such, the client platform may remain in the low-power state for the time between two bursts.
p-0089With reference to <figref idrefs="DRAWINGS">FIGS. 13A and 13B</figref>, assuming AOAC application Y has a keep-alive timeout T<b>1</b><sub>Y </sub>(and without loss of generality) T<b>1</b><sub>Y </sub>is larger than the minimum keep-alive timeout Tx associate with AOAC application X, the periodicity of AOAC application Y (i.e., P<sub>Y</sub>) can be defined as:
p-0090<br />P<sub>Y</sub>=T1<sub>Y</sub>Tx
p-0091The transmission agent of the client platform may then send a keep-alive message for AOAC application Y every new timeout period T<b>2</b><sub>Y</sub>, where T<b>2</b><sub>Y</sub>=P<sub>Y</sub>·TX. As a result, the keep-alive messages of all the AOAC applications may be aligned to multiple periods of the minimum timeout of AOAC application X. Consequently, the client platform may enter a low-power state for the duration of TX.
p-0092It should be noted that the new derived timeout value of any AOAC application will always be smaller than or equal to its original timeout value. Hence, sending keep-alive messages at the new rate will always guarantee that AOAC client platform for this AOAC application will be connected to the remote application server.
p-0093Accordingly, one embodiment of the present disclosure features systems for adaptively determining a minimum/optimum timeout value for the keep-alive messages independent from the network topology used (e.g., with and/or without network communication devices such as. The systems may also maximize time between wakeups of the client platform by maximizing the time between transmissions of keep-alive messages and coalescing the transmissions. As a result, the client platform may maintain the connectivity with the remote application server(s) while increasing the overall energy efficiency of the client platform (which may therefore increase battery life). The systems may re-evaluate the connectivity parameters whenever the client platform changes networks or an application error is detected. As a result, the AOAC application(s) can maintain connectivity to the remote application server(s) transparently from the user, irrespective of where the client platform is located, the type of network (e.g., wireless, wired, etc.) used, or the location of the network (e.g., home, work hot spot, etc.).
p-0094In one aspect, the client platform may (e.g., the NIC and/or the connection agent) may dynamically maintain application/service presence with the remote application server(s) by dynamically detecting the maximum period of keep-alive handshakes, including detecting network changes to adapt the period of the keep-alive messages. The client platform may (e.g., the NIC and/or the connection agent) may dynamically detect the maximum period of keep-alive handshakes using proprietary keep-alive handshakes, concurrent connections, active probing, and/or passive listening. The client platform may (e.g., the NIC and/or the connection agent) may also align transmitted keep-alive messages from multiple AOAC applications to maximize the duration in which the client platform stays in a low-power state.
p-0095According to one aspect, the present disclosure features a method for determining a timing interval Ti. The method includes selecting a value for the timeout (Ti) to a value between a maximum timeout (T<sub>max</sub>) and a minimum timeout (T<sub>min</sub>); transmitting a keep-alive message, at an interval based on Ti, across a network connection between a client platform running an Always-On-Always-Connected (AOAC) application and a remote application server associated with the AOAC application; checking a status of the network connection; increasing the value for T<sub>min </sub>if the network connection is still active; and decreasing the value for T<sub>max </sub>if the network connection has been dropped.
p-0096According to another aspect, the present disclosure features a computer readable non-transitory medium having instructions stored thereon, the instruction when executed by a processor cause the processor to transmit a keep-alive message, at an interval based on a value for a timeout (Ti), across a network connection between a client platform running an Always-On-Always-Connected (AOAC) application and a remote application server associated with the AOAC application, wherein Ti has a value between a maximum timeout (T<sub>max</sub>) and a minimum timeout (T<sub>min</sub>); check a status of the network connection; increase the value for T<sub>min </sub>if the network connection is still active; and decrease the value for T<sub>max </sub>if the network connection has been dropped.
p-0097According to yet another aspect, the present disclosure features a client platform system including a host system configured to operate in a first power state and a low-power state, a Network Interface Card (NIC) configured to establish a communication link between the host system and an associated remote application server, and memory. The host system is configured to execute at least one Always-On-Always-Connected (AOAC) application while in the first power state. The NIC is configured transmit keep-alive messages at a timeout interval Ti to the remote application server while the host remains in the low-power state. The keep-alive messages are configured to maintain connectivity and presence of the AOAC application with the remote application server while the host system is in the low-power state. The memory is configured to store the keep-alive messages and accessible to the NIC while the host system remains in the low-power state. The client platform system is further configured to iteratively determine the timeout interval Ti while the client platform system is in the first power state by transmitting keep-alive messages, at an interval based on a value for a timeout (Ti), across a network connection between the client platform and the remote application server, wherein Ti has a value between a maximum timeout (T<sub>max</sub>) and a minimum timeout (T<sub>min</sub>); checking a status of the network connection; increasing the value for T<sub>min </sub>if the network connection is still active; decreasing the value for T<sub>max </sub>if the network connection has been dropped; and repeating the previous steps for either up to a maximum predetermined number of iterations or until a difference between two subsequent values for Ti is within a threshold value.
p-0098“Circuitry”, as used in any embodiment herein, may comprise, for example, singly or in any combination, hardwired circuitry, programmable circuitry, state machine circuitry, and/or firmware that stores instructions executed by programmable circuitry.
p-0099The terms and expressions which have been employed herein are used as terms of description and not of limitation, and there is no intention, in the use of such terms and expressions, of excluding any equivalents of the features shown and described (or portions thereof), and it is recognized that various modifications are possible within the scope of the claims. Accordingly, the claims are intended to cover all such equivalents.
Contents5
14 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11252263B2 | Cited by | United States of America | Search report |
| TWI577162B | Cited by | Taiwan Province of China | Examiner |
| US11954403B1 | Cited by | United States of America | Search report |
| US10142118B2 | Cited by | United States of America | Search report |
| US2015138948A1 | Cited by | United States of America | Pre-grant |
| US2018020061A1 | Cited by | United States of America | Search report |
| US8948091B2 | Cited by | United States of America | Search report |
| EP3021519A1 | Cited by | European Patent Office (EPO) | Search report |
| US9819640B2 | Cited by | United States of America | Search report |
| US11789514B2 | Cited by | United States of America | Search report |
| US2016234316A1 | Cited by | United States of America | Pre-grant |
| US2021081021A1 | Cited by | United States of America | Search report |
| US8868415B1 | Cited by | United States of America | Search report |
| US10298694B1 | Cited by | United States of America | Search report |
| US2016360569A1 | Cited by | United States of America | Pre-grant |
| US11915010B2 | Cited by | United States of America | Search report |
| US10356173B2 | Cited by | United States of America | Applicant |
| US10020986B1 | Cited by | United States of America | Applicant |
| CN111656734A | Cited by | China | Search report |
| US11503665B2 | Cited by | United States of America | Applicant |
| TWI483603B | Cited by | Taiwan Province of China | Examiner |
| US10433238B2 | Cited by | United States of America | Search report |
| CN104079550A | Cited by | China | Search report |
| EP3016448A1 | Cited by | European Patent Office (EPO) | Search report |
| US12443391B2 | Cited by | United States of America | Search report |
| US11089114B1 | Cited by | United States of America | Search report |
| CN104104647A | Cited by | China | Search report |
| US2024220194A1 | Cited by | United States of America | Search report |
| US2022094601A1 | Cited by | United States of America | Pre-grant |
| US9846443B2 | Cited by | United States of America | Search report |
| US8830868B2 | Cited by | United States of America | Search report |
| US2013083668A1 | Cited by | United States of America | Pre-grant |
| CN105656846A | Cited by | China | Search report |
| KR20150011754A | Cited by | Republic of Korea | Search report |
| US10505869B2 | Cited by | United States of America | Search report |
| US9497030B2 | Cited by | United States of America | Applicant |
| CN105247843A | Cited by | China | Search report |
| EP2784983A1 | Cited by | European Patent Office (EPO) | Search report |
| US2016026194A1 | Cited by | United States of America | Pre-grant |
| US9645621B2 | Cited by | United States of America | Search report |
| US2023305857A1 | Cited by | United States of America | Search report |
| US9288103B2 | Cited by | United States of America | Applicant |
| US10044812B2 | Cited by | United States of America | Search report |
| US9253019B1 | Cited by | United States of America | Search report |
| US2017041184A1 | Cited by | United States of America | Pre-grant |
| US10117289B2 | Cited by | United States of America | Search report |
| US9338050B2 | Cited by | United States of America | Search report |
| US2020125435A1 | Cited by | United States of America | Search report |
| JP2016181877A | Cited by | Japan | Search report |
| US12009984B2 | Cited by | United States of America | Search report |
| US10966219B2 | Cited by | United States of America | Applicant |
| US2016127308A1 | Cited by | United States of America | Pre-grant |
| US2015222440A1 | Cited by | United States of America | Pre-grant |
| US10816597B2 | Cited by | United States of America | Applicant |
| US9756089B2 | Cited by | United States of America | Search report |
| US9954755B2 | Cited by | United States of America | Search report |
| US10891179B2 | Cited by | United States of America | Search report |
| US9742653B2 | Cited by | United States of America | Search report |
| JP2016181877A | Cited by | Japan | Search report |
| US9525601B2 | Cited by | United States of America | Search report |
| US11013047B2 | Cited by | United States of America | Search report |
| US2014297878A1 | Cited by | United States of America | Pre-grant |
| WO2017128185A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2014068038A1 | Cited by | United States of America | Pre-grant |
| CN108141901A | Cited by | China | Search report |
| WO2016182637A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11500441B2 | Cited by | United States of America | Applicant |
| US10440125B2 | Cited by | United States of America | Search report |
| US2015046587A1 | Cited by | United States of America | Pre-grant |
| US10624104B2 | Cited by | United States of America | Applicant |
| EP2775686A1 | Cited by | European Patent Office (EPO) | Search report |
| US9806892B2 | Cited by | United States of America | Search report |
| US10732651B2 | Cited by | United States of America | Applicant |
| US9743458B2 | Cited by | United States of America | Search report |
| EP3723324A4 | Cited by | European Patent Office (EPO) | Search report |
| US2016014213A1 | Cited by | United States of America | Pre-grant |
| US2015244774A1 | Cited by | United States of America | Pre-grant |
| WO2017222937A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2013194965A1 | Cited by | United States of America | Pre-grant |
| US2016134500A1 | Cited by | United States of America | Pre-grant |
| US9813507B2 | Cited by | United States of America | Search report |
| US12197711B2 | Cited by | United States of America | Applicant |
| US11693469B2 | Cited by | United States of America | Applicant |
| US2014237285A1 | Cited by | United States of America | Pre-grant |
| US2023198665A1 | Cited by | United States of America | Search report |
| US9554366B2 | Cited by | United States of America | Applicant |
| US2013103970A1 | Cited by | United States of America | Pre-grant |
| WO2015012567A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9124500B2 | Cited by | United States of America | Search report |
| US2015124698A1 | Cited by | United States of America | Pre-grant |
| US7460556B2 | Cites | United States of America | Pre-grant |
| US8375134B2 | Cites | United States of America | Pre-grant |
8 members in 4 offices; this record represents the family
Members8
| Document | Office | Kind | |
|---|---|---|---|
| US2013007484A1 | United States of America | A1 | |
| WO2013006501A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US8566625B2 | United States of America | B2 | |
| CN103748934A | China | A | |
| EP2727421A1 | European Patent Office (EPO) | A1 | |
| EP2727421A4 | European Patent Office (EPO) | A4 | |
| EP2727421B1 | European Patent Office (EPO) | B1 | |
| CN103748934B | China | B |
54 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Post Issue Communication - Certificate of CorrectionN423 | N423 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Email NotificationEML_NTR | EML_NTR | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Sent to Classification ContractorPGPC | PGPC | |
| Preliminary AmendmentA.PE | A.PE | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Email NotificationEML_NTR | EML_NTR | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
10 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Certificate of correctionCC | CC | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 20130007484
- Application
- 13175778
Titles
- English
- System and Method for Determining Transmitting Frequency to Maintain Remote Application Server Connectivity
Patent term adjustment
- A delay
- +303 daysthe office missed an examination deadline
- Net adjustment
- 303 days
Classification
- CPC, 5
- H04L67/145
- G06F1/3209
- G06F1/3287
- H04W76/25
- Y02D10/00
- IPC, 2
- G06F1 32
- G06F15 16