The present invention relates generally to saving power in electronic circuits, and, in particular, to saving power in packet based communication systems.
In typical packet communication protocol stacks, most protocol modules are in an idle state most of the time. Even when packets are arriving, only subsections of the overall protocol stack will be operating, while others will be in an idle state. Clearly this is disadvantageous from the point of view of power consumption.
The present invention exploits the nature of some packet communication protocols by discarding a small number of packets in order to control power consumption in equipment modules that receive packet traffic. According to the disclosed arrangement, an equipment module which is not used for a while (ie to which no packets have been directed for some time) is “put to sleep” by being powered down. When a packet addressed to the equipment module next arrives at the module, the packet arrival is used to “wake up” the module. In the course of waking up the module, the data in the arriving packet may be lost.
When this technique is applied to “reliable” packet protocols such as Transmission Control Protocol (TCP), Reliable User Datagram Protocol (RUDP), and Sequenced Packet eXchange (SPX, from the IPX/SPX suite of protocols), the discarded packet is retransmitted, and accordingly the loss of the discarded packet does not degrade the integrity of the communication.
When this technique is used with “unreliable” protocols such as UDP, then loss of the discarded packet does not impact the integrity of the communications, which in any event assume that a certain number of packets will be lost because of the inherent unreliability of the particular protocol being used.
There are certain instances in which the described low power technique should not be used. Communication protocols where the use of this technique is not appropriate include the Internet Control Message Protocol (ICMP), and the Internet Group Management Protocol (IGMP).
According to a first aspect of the present invention, there is provided an architecture for selectively powering a receive module, the architecture comprising:
said receive module, being functionally adapted while power is applied to the receive module and after a power-up time interval has elapsed to process a traffic packet; and
a power module adapted to apply said power to the receive module dependent upon arrival of a wake-up packet.
According to another aspect of the present invention, there is provided a method of selectively powering a packet protocol receive module the method comprising the steps of:
receiving a wake-up packet;
applying power to the receive module for a predetermined time interval;
processing the wake-up packet if the receive module is in a powered-up state;
if a succeeding packet arrives before the predetermined time interval has elapsed, (a) processing the succeeding packet, and (b) applying power to the receive module for a further predetermined time interval; and
if the predetermined time interval elapses without arrival of the succeeding packet, powering down the receive module.
According to another aspect of the present invention, there is provided a computer program for directing a machine to selectively power a packet protocol receive module the program comprising:
code for receiving a wake-up packet;
code for applying power to the receive module for a predetermined time interval;
code for (a) processing a succeeding packet and (b) applying power to the receive module for a further predetermined time interval, if the succeeding packet arrives before the predetermined time interval has elapsed; and
code for powering down the receive module if the predetermined time interval elapses without arrival of the succeeding packet.
Other aspects of the invention are also disclosed.
One or more embodiments of the present invention will now be described with reference to the drawings, in which:
It is to be noted that the discussions contained in the “Background” section and that above relating to prior art arrangements relate to discussions of devices which form public knowledge through their use. Such should not be interpreted as a representation that such devices in any way form part of the common general knowledge in the art.
Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have, for the purposes of this description, the same function(s) or operation(s), unless the contrary intention appears.
A sending application 101 sends a bit-stream to a TCP send module 102 which arranges the bit-stream into successive TCP packets. These are sent to an IP send module 103, which encapsulates them into IP packets, after which an Ethernet send module 104 encapsulates the IP packets into Ethernet packets. The Ethernet packets are sent over a Ethernet physical layer 105 to an Ethernet receive module 106. Another sending application 115 sends a bit-stream to a UDP send module 116 which arranges the bit-stream into successive UDP packets. These are sent to the IP send module 103, which encapsulates them into IP packets, after which the Ethernet send module 104 encapsulates the IP packets into Ethernet packets, which are also sent over the Ethernet physical layer 105 to the Ethernet receive module 106.
This module 106 strips off the Ethernet header and checksum, and extracts the IP packets which are sent to an IP receive module 107. The IP receive module 107 strips off the IP header information, and extracts the TCP or UDP packets which are then sent to an appropriate one of a UDP receive module 113 and a TCP receive module 108 dependent upon a “protocol” field 307 which is described in more detail with reference to
The present description will treat TCP processing in some detail, and will not describe UDP or any other protocol processing in any detail. The principles described, however, can be applied more generally than merely to TCP, as has already been noted. The TCP examples described are, therefore, illustrative and not intended to be limiting.
Considering the case where the packet at the IP receive module 107 is to be processed by the TCP protocol, the packet is provided to the TCP receive module 108 as noted, which strips off the TCP header information thereby providing the resultant bit-stream, as depicted by an arrow 114, to the application 109 (ie A′).
Turning to the process thread 200′ in the remote host machine 119, a step 201, which is performed by the TCP send module 102 (as indicated by the numerals 102 in square brackets in the top right hand corner of the rectangle representing the step 201), receives a bit-stream from the application A (ie 101 in
A subsequent step 203, which is performed by the IP send module 103, encapsulates the TCP packets into IP packets. Thereafter, a step 204, which is performed by the Ethernet send module 104, encapsulates the IP packets into Ethernet packets. A step 205 then sends these packets over the Ethernet physical layer 105, as depicted by a dashed arrow 213.
Turning to the process thread 200, which runs on the local host machine 120, the Ethernet packets that have been sent over the Ethernet physical layer 105 are received, as depicted by a dashed arrow 214, in a step 206 which is performed by the Ethernet receive module 106. The step 206 strips off the Ethernet header and checksum, and transmits the extracted IP packet, after which a step 207, which is performed by the IP receive module 107 receives the packet, and removes the IP header. A subsequent testing step 208, which is also performed by the IP receive module 107, determines whether the extracted packet is a TCP packet, or a UDP packet. The testing step 208 is performed by considering the “protocol” field 307 in the IP packet 315 (see
If the extracted packet is a UDP packet, then the process 200 is directed in accordance with “UDP” arrow to a step 209. The step 209, which is performed by the IP receive module 107, sends the packet to the UDP receive module 113.
The step 210, which is performed by the IP receive module 107, transmits the packet to the TCP receive module 108. Thereafter, a step 212, which is performed by the TCP receive module 108, strips off the TCP header, and transmits the extracted data-stream to the application A′.
The TCP packet 306 is encapsulated, as depicted by a dashed arrow 316, into a field 314 of an IP packet 315. The IP packet 315 has IP header fields 309, a “time to live” field 308, the “protocol type” field 307, and an IP header checksum field 310. The IP packet 315 also has a “source address” field 311, a “destination address” field 312, and, perhaps, an IP options field 313. The field 314 holds the TCP packet 306, which consists of the TCP header fields 301-304, and then the TCP data 305. The protocol type field 307 is used by the IP receive module 107 in
The IP packet 315 is encapsulated, as depicted by a dashed arrow 317, in an Ethernet packet 407 which will be described in detail with reference to
The Ethernet packet 407 comprises a “destination address” which is represented as a first field segment 401 having the first 32 data bits of the address, and a second data field segment 400 having the last 16 bits of the destination address. The packet 407 also has a “source address” located in a first field segment 402 which contains the first 16 bits of the source address, and a second data field segment 403 which has the last 32 bits of the source address. The Ethernet packet 407 has a “type code” field 404, which serves a similar purpose to that of the protocol type field 307 in the IP packet 315. The IP packet 315 is contained at the field 405 of the Ethernet packet 407. The IP packet 315 at the data field 405 consists of the IP header, the TCP header, and then the data. Finally, the Ethernet packet 407 has a checksum field 406.
A subsequent testing step 503 determines whether the timer has timed out. If this has not occurred, then the process 212 is directed, in accordance with a “NO” arrow to a step 504 which applies, or maintains power to the TCP receive module 108 of
Returning to the decision step 503, if the timer has timed out then the process 212 is directed to a step 506 which powers down the TCP module 108, putting it to sleep. The TCP receive module 108 will remain in the powered-down condition until the next packet is received by the step 501, after which the step 512 will again initiate the timer, resulting in application of power to the TCP receive module 108 by the step 504.
Returning to the step 501, the process 212 is directed in accordance with an arrow 507 to a testing step 508. The step 508 determines whether the TCP receive module 108 is in the powered-up state, ie the step 508 determines if the receive module 108 is functionally able to process the incoming packet. If this is the case, then the process 212 is directed in accordance with a “YES” arrow to a step 509 which strips off the TCP header, and forwards the extracted data bits to the application A′. In the case of TCP, an acknowledge packet may be sent back to the remote application A to indicate proper receipt of the packet. It is noted that the step 509 can only take place if the TCP receive module 108 is functionally able to process the packet received at the step 501. The extent to which the TCP receive module must be powered up to be functionally able to process the packet depends upon the specific implementation of the receive module 108.
Returning to the decision step 508, if the TCP receive module 108 is not in a (sufficiently) powered-up condition to process the incoming packet, then the process 212 is directed in accordance with a “NO” arrow to a step 510. The step 510 depicts the situation in which the TCP receive module 108 is unable to successfully process the packet received at the step 501, and accordingly, that this packet is discarded.
The steps 512, 503, 504, 506, and 513 form a first process 515 that deals with powering up of the receive module. The steps 508-510 form a second process 514 that deals with processing of the received packet. The processes 514 and 515 are concurrent.
For the present example of TCP, the timer referred to in the step 512 enables power to be provided to the TCP receive module 108 for a predetermined time defined by the timer parameters. This predetermined time must be greater than the sum of the idle time, and the retransmission time of the transmission path between the remote host machine 119 running the application A (ie 101) and the local host machine 120 running the application A′ (ie. 109). This ensures that the packet that is re-transmitted by the remote host machine 119 will be received, in the local host machine 120, by the step 501 while the TCP receive module 108 is still in the “powered-up” condition. This powered-up condition was initiated by the previous incoming packet which was consequently “discarded”. Accordingly, it is the “discarded” packet which prepares the TCP receive module 108 for the re-transmitted packet which is then successfully processed.
For UDP, the timeout time (ie predetermined time defined by the timer parameters) must be greater than the idle time.
Considering the present TCP example, the robustness of the TCP transport layer, provided by the packet re-transmission facility, means that discarded packets do not substantially affect the integrity of the communication between the application A and the application A′. If the selective powering technique is applied to an “unreliable” communication protocol such as UDP, then the packets discarded in the step 510 of
It is noted that the process 800 which is described in relation to
When a TCP packet is provided as depicted by the arrow 112 in
As long as the counter 603 has a non-zero time-interval remaining (ie as long as the counter 603 has not reached a “zero” condition), the counter provides an “enable” signal on 602 to the power module 601 which provides power as depicted by the arrow 608 to the TCP receive module 108. When the counter 603 reaches a zero count, the counter 603 provides a “disable” signal on 602 to the power module 601, which removes the power to the TCP receive module 108, which then powers down.
If the receive module 108 is in the “power-down” condition when a packet is received as depicted by the arrow 112, then the power control module 603 is activated as depicted by the arrow 112′, and the module 603 provides an “enable” signal 602 to the power module 601. The power module 601 then powers up the receive module 108 as depicted by the arrow 608.
If the TCP receive module 108 is already in the “powered-up” condition, an arriving packet as depicted by the arrow 112′ causes the counter 603 to be restarted, this causing provision of power to be maintained to the received module 108 for a further predetermined time interval determined by the parameters of the counter 603.
The counter 603 in
In the disclosed arrangement, while packets are not arriving, all modules arranged according to the disclosed selective powering architecture are in a powered-down condition, thereby minimising the amount of power consumed. When a packet arrives, only those modules that are required by the packet are woken, ie. powered-up. In general, unless multiple communications connections are active at the same time, only a small fraction of the protocol stack will be powered up at any time. This applies, of course, to the “receive” section of
Although the present description has been couched in terms of a TCP example, the principle is more widely applicable as already noted.
The traffic type, as reflected, for example, in the “protocol type” field 307 in
The disclosed technique for selective powering of protocol modules works best for systems in which data streams comprise bursts of traffic.
It is apparent from the above that the arrangements described are applicable to the computer and data processing industries.
The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
Number | Date | Country | Kind |
---|---|---|---|
2003903480 | Jul 2003 | AU | national |
Number | Name | Date | Kind |
---|---|---|---|
5802305 | McKaughan et al. | Sep 1998 | A |
6034963 | Minami et al. | Mar 2000 | A |
6101608 | Schmidt et al. | Aug 2000 | A |
6480489 | Muller et al. | Nov 2002 | B1 |
6483804 | Muller et al. | Nov 2002 | B1 |
6650640 | Muller et al. | Nov 2003 | B1 |
6968219 | Pattabiraman et al. | Nov 2005 | B2 |
7293113 | Krishna et al. | Nov 2007 | B1 |
20020162038 | Bullman et al. | Oct 2002 | A1 |
20030097476 | Saxena et al. | May 2003 | A1 |
20030135678 | Andre | Jul 2003 | A1 |
20040100964 | Robotham et al. | May 2004 | A1 |
20040141524 | Lee et al. | Jul 2004 | A1 |
20040158754 | Walls et al. | Aug 2004 | A1 |
20050220093 | Chen et al. | Oct 2005 | A1 |
20070086447 | Parameseswaran et al. | Apr 2007 | A1 |
20070214358 | Partis | Sep 2007 | A1 |
Number | Date | Country |
---|---|---|
2005050925 | Jun 2005 | WO |
Number | Date | Country | |
---|---|---|---|
20050007972 A1 | Jan 2005 | US |