Sustainable Wireless Sensor Networks Part 16 pot

35 145 0
Sustainable Wireless Sensor Networks Part 16 pot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Sustainable Wireless Sensor Networks516 The other algorithms are PPM (Prediction by Partial Matching), LZMA (Lempel Ziv Markov-chain Algorithm), Deflate (as used in Zip files), and BZip2 (Huffman based encoding). These algorithms were performed by the 7-Zip application with default parameters (Pavlov, 2010). The table shows that converting the Bsdiff output into standalone commands, as we did in Section 4.2, leads to a larger end file size in each case. However, this is necessary due to the limited memory available for buffering. Table 7 also shows that S-LZW is not as effective as other compression algorithms, which was expected due to its speed and low memory usage. S-LZW has a number of parameters that affect the compression ratio: the dictionary size; the mini-cache size; and the block size. LZW can compress streams of data of any length, so here block size refers to the size of chunks that the data stream is split into. This is necessary because of limited memory on the sensor nodes. These parameters can have positive effects by increasing the compression ratio, and negative effects by increasing the time taken to decode, or the memory required. Another method to increase the compression ratio is to use the Burrows Wheeler Transform (BWT) (Burrows and Wheeler, 1994). This algorithm can sort the data into an order that should compress better. It is a reversible transform so the original data can be regenerated. 80 85 90 95 100 105 0 256 512 768 1024 1280 1536 1792 2048 Block size (bytes) Compression ratio (%) S-LZW-MC4 S-LZW-MC4-BWT S-LZW-MC8 S-LZW-MC8-BWT S-LZW-MC16 S-LZW-MC16-BW T S-LZW-MC32 S-LZW-MC32-BW T Fig. 10. Effects of mini-cache, block size, and BWT on compression ratio The effect of the changing the dictionary size was found to be very small, and so was set at 512 entries. Fig. 10 shows the effects of the mini-cache size, how big a block is compressed, and BWT on compressing a set of commands 2,082 bytes in size (this is actually all the commands that are sent to node 0, in the network in Fig. 9). It can be seen that BWT has a positive effect on the compression ratio, and that an increased mini-cache size leads to increased compression too. Fig. 10 shows only the effect on compression ratio. However, the effect on energy consumption is more important. For this, it is necessary to analyse the processing costs of decompressing the data. The data compression is done on a PC, so it is not considered here, as the data sets used here are very small compared to the available processing power of a PC. To analyse the cost of decompressing the code we measure the time taken to decompress a single block of data. The results of this are shown in Table 8 along with memory requirements in Flash (program memory) and RAM (data memory) for implementing S- LZW on the 25mm node. The memory used by BWT is minimised by sharing buffers with S- LZW. The results show that the mini-cache size has a negligible effect on processing time, and only a small effect on RAM size. For this reason, a 32 byte mini-cache is optimal, as it has a better compression ratio. The results also show that the time to decompress a single byte is not dependent on the block size that was compressed. The block-size should therefore be chosen based on the size that gives the best compression ratio, and still fits within the memory requirements (less than 4096 bytes). From Fig. 10 it can be seen that a block size that is a power of 2 is not always optimal. The PC that is compressing the commands can use a range of block sizes and chose the option that gives the best compression ratio. Block size Algorithm Compressed Size (bytes) Flash (bytes) RAM (bytes) Time (ms) Time/byte (μs) 512 bytes S-LZW-MC4 438 1768 3348 12.27 28.01 S-LZW-MC8 426 1744 3356 13.02 30.57 S-LZW-MC16 415 1744 3372 12.21 29.42 S-LZW-MC32 417 1744 3404 11.87 28.46 S-LZW-MC4-BWT 420 2116 3604 21.28 50.66 S-LZW-MC8-BWT 415 2092 3612 20.77 50.05 S-LZW-MC16-BWT 417 2092 3628 20.97 50.28 S-LZW-MC32-BWT 416 2092 3660 20.71 49.79 256 bytes S-LZW-MC32 213 1482 2892 6.39 29.98 S-LZW-MC32-BWT 215 1826 3148 11.59 53.90 128 bytes S-LZW-MC32 98 1354 2636 3.2 32.78 S-LZW-MC32-BWT 88 1698 2892 6.5 74.14 Table 8. Memory usage and time for decompression Our implementation of BWT requires memory that is twice the block size, however we have minimised the impact of this by using the same buffer that S-LZW uses for storing its dictionary. BWT however has a large impact on processing time, and still has some impact on memory usage. Whether or not it should be used depends on the increased compression ratio it offers. From Fig. 10, we see that BWT has very little advantage at the range of block sizes that can be decompressed (less than 512 bytes). If more memory were available, it would be more useful. To consider the energy savings by compression, the energy to send and receive the data and the energy required for decompression must be determined. The 2,082 byte file above can be compressed to 1,826 bytes using S-LZW-MC32 with a block size of 416 bytes. Using the power consumption values from Table 1, we can calculate the energy required with and without compression. The time to decompress a byte is from the table above, for S-LZW-MC32. Energy-efcient Reprogramming of Heterogeneous Wireless Sensor Networks 517 The other algorithms are PPM (Prediction by Partial Matching), LZMA (Lempel Ziv Markov-chain Algorithm), Deflate (as used in Zip files), and BZip2 (Huffman based encoding). These algorithms were performed by the 7-Zip application with default parameters (Pavlov, 2010). The table shows that converting the Bsdiff output into standalone commands, as we did in Section 4.2, leads to a larger end file size in each case. However, this is necessary due to the limited memory available for buffering. Table 7 also shows that S-LZW is not as effective as other compression algorithms, which was expected due to its speed and low memory usage. S-LZW has a number of parameters that affect the compression ratio: the dictionary size; the mini-cache size; and the block size. LZW can compress streams of data of any length, so here block size refers to the size of chunks that the data stream is split into. This is necessary because of limited memory on the sensor nodes. These parameters can have positive effects by increasing the compression ratio, and negative effects by increasing the time taken to decode, or the memory required. Another method to increase the compression ratio is to use the Burrows Wheeler Transform (BWT) (Burrows and Wheeler, 1994). This algorithm can sort the data into an order that should compress better. It is a reversible transform so the original data can be regenerated. 80 85 90 95 100 105 0 256 512 768 1024 1280 1536 1792 2048 Block size (bytes) Compression ratio (%) S-LZW-MC4 S-LZW-MC4-BWT S-LZW-MC8 S-LZW-MC8-BWT S-LZW-MC16 S-LZW-MC16-BW T S-LZW-MC32 S-LZW-MC32-BW T Fig. 10. Effects of mini-cache, block size, and BWT on compression ratio The effect of the changing the dictionary size was found to be very small, and so was set at 512 entries. Fig. 10 shows the effects of the mini-cache size, how big a block is compressed, and BWT on compressing a set of commands 2,082 bytes in size (this is actually all the commands that are sent to node 0, in the network in Fig. 9). It can be seen that BWT has a positive effect on the compression ratio, and that an increased mini-cache size leads to increased compression too. Fig. 10 shows only the effect on compression ratio. However, the effect on energy consumption is more important. For this, it is necessary to analyse the processing costs of decompressing the data. The data compression is done on a PC, so it is not considered here, as the data sets used here are very small compared to the available processing power of a PC. To analyse the cost of decompressing the code we measure the time taken to decompress a single block of data. The results of this are shown in Table 8 along with memory requirements in Flash (program memory) and RAM (data memory) for implementing S- LZW on the 25mm node. The memory used by BWT is minimised by sharing buffers with S- LZW. The results show that the mini-cache size has a negligible effect on processing time, and only a small effect on RAM size. For this reason, a 32 byte mini-cache is optimal, as it has a better compression ratio. The results also show that the time to decompress a single byte is not dependent on the block size that was compressed. The block-size should therefore be chosen based on the size that gives the best compression ratio, and still fits within the memory requirements (less than 4096 bytes). From Fig. 10 it can be seen that a block size that is a power of 2 is not always optimal. The PC that is compressing the commands can use a range of block sizes and chose the option that gives the best compression ratio. Block size Algorithm Compressed Size (bytes) Flash (bytes) RAM (bytes) Time (ms) Time/byte (μs) 512 bytes S-LZW-MC4 438 1768 3348 12.27 28.01 S-LZW-MC8 426 1744 3356 13.02 30.57 S-LZW-MC16 415 1744 3372 12.21 29.42 S-LZW-MC32 417 1744 3404 11.87 28.46 S-LZW-MC4-BWT 420 2116 3604 21.28 50.66 S-LZW-MC8-BWT 415 2092 3612 20.77 50.05 S-LZW-MC16-BWT 417 2092 3628 20.97 50.28 S-LZW-MC32-BWT 416 2092 3660 20.71 49.79 256 bytes S-LZW-MC32 213 1482 2892 6.39 29.98 S-LZW-MC32-BWT 215 1826 3148 11.59 53.90 128 bytes S-LZW-MC32 98 1354 2636 3.2 32.78 S-LZW-MC32-BWT 88 1698 2892 6.5 74.14 Table 8. Memory usage and time for decompression Our implementation of BWT requires memory that is twice the block size, however we have minimised the impact of this by using the same buffer that S-LZW uses for storing its dictionary. BWT however has a large impact on processing time, and still has some impact on memory usage. Whether or not it should be used depends on the increased compression ratio it offers. From Fig. 10, we see that BWT has very little advantage at the range of block sizes that can be decompressed (less than 512 bytes). If more memory were available, it would be more useful. To consider the energy savings by compression, the energy to send and receive the data and the energy required for decompression must be determined. The 2,082 byte file above can be compressed to 1,826 bytes using S-LZW-MC32 with a block size of 416 bytes. Using the power consumption values from Table 1, we can calculate the energy required with and without compression. The time to decompress a byte is from the table above, for S-LZW-MC32. Sustainable Wireless Sensor Networks518 J 0.36 7977.1075.07977.1128.0 )2082()2082(    TPTPE RXTXeduncompress (5) J 0.32 052.00293.0577.1075.0577.1128.0 )1046.281826()1826()1826( 6     CPURXTXcompressed PTPTPE (6) The transceivers throughput rate of 50 kbps is very slow compared to the Atmega128L processor running at 8 MHz, so the time taken for decompressing the data is minimal compared to the time taken for transmitting the data. Therefore even for very modest compression ratios, it is worthwhile to use S-LZW. 6. Conclusions We presented efficient methods for reducing the energy cost of reprogramming wireless sensor networks, by using delta encoding and LZW based compression. We have modified the Bsdiff delta encoding algorithm to make suitable it for use in WSNs, and also tuned the S-LZW algorithm for energy efficiency. In our example heterogeneous network with two different hardware nodes, and two different sensor types we reduced the cost of updating the communication protocol to 6.57 % of an approach that requires sending the full application program. The use of S-LZW gives a further reduction to about 90% of this value. The solutions we provided can be applied to any type of reprogramming. The Bsdiff algorithm is not dependent on knowledge of instruction sets, and does not require any special compilation methods to keep functions at the same addresses. Very limited support is needed in the existing program. Support could be added on top of existing operating systems such as TinyOS or Contiki. This work has been implemented on a two-tiered heterogeneous network, but can be extended for multi-tier networks. The techniques presented are useful for simpler homogeneous networks. The work presented in this chapter is already of great use in reducing the energy costs to reprogram a wireless node or network. However, in ad-hoc networks where the topology is not centrally managed, algorithms such as MSP (Kulkarni and Wang, 2009) or Freshet (Krasniewski et al., 2008) are suitable for managing the propagation of commands, and would complement the techniques presented in this chapter. 7. Acknowledgments This work was supported by Science Foundation Ireland under grant 07/CE/I1147. 8. References Atmel (2009). Atmega128L datasheet, rev. S. http://www.atmel.com Bellis, S. J.; Delaney, K.; O'Flynn, B.; Barton, J.; Razeeb, K. M. & Ó Mathúna, S. C. (2005). Development of field programmable modular wireless sensor network nodes for ambient systems. Computer Communications, 28, 13, Aug. 2005, pp. 1531-1544, ISSN:01403664 Berkeley (2010), University of California. Tinyos Community Forum, http://www.tinyos.net Burrows, M. & Wheeler, D. J. (1994). A block-sorting lossless data compression algorithm. Digitial SRC Research Report 124 Dunkels, A. (2010) The Contiki Operating System, http://www.sics.se/contiki/ Foster-Miller (2010). Electrotextiles, http://www.foster-miller.com/m_m_electrotextiles.htm Georgoulas, D. & Blow, K. (2008). Intelligent Mobile Agent Middleware for Wireless Sensor Networks: A Real Time Application Case Study. Proceedings of 4th Advanced Int. Conf. Telecommunications, pp. 95-100, ISBN:9780769531625, Athens, Greece, Jun. 2008, IEEE Computer Society, Washington DC Harte, S.; O'Flynn, B.; Martínez-Catalá, R. V. & Popovici, E. M. (2007). Design and implementation of a miniaturised, low power wireless sensor node. Proceedings 18th Euro. Conf. Circuit Theory and Design, pp. 894-897, ISBN:9781424413416, Seville, Spain, Aug. 2007, IEEE Press, New Jersey Hui, J. W. & Culler, D. (2004). The dynamic behavior of a data dissemination protocol for network programming at scale. Proceedings of 2nd Int. Conf. Embedded Networked Sensor Systems, pp. 81-94. ISBN:1581138792, Baltimore, USA, Nov. 2004, ACM, New York Jeong, J. & Culler, D. (2009). Incremental network programming for wireless sensors. International Journal of Communications, Network and System Sciences. 2, 5, Aug. 2009, pp. 433-452, ISSN:17543924 Krasniewski, M. D.; Panta, R. K.; Bagchi, S.; Yang, C. & Chappell, W. J. (2008). Energy- efficient on-demand reprogramming of large-scale sensor networks. ACM Trans. Sensor Networks, 4, 1, Jan. 2008, pp 1-38, ISSN:15504859 Kulkarni, S. & Wang, L. (2009). Energy-efficient multihop reprogramming for sensor networks. ACM Trans. Sensor Networks, 5, 2, Mar. 2009, pp. 1-40, ISSN:15504859 Levis, P. & Culler, D. (2002). Maté: a tiny virtual machine for sensor networks. Proceedings of 10th Int. Conf. Architectural Support for Programming Languages and Operating Systems, pp. 85-95, ISBN:1581135742, San Jose, USA, Oct. 2002, ACM, New York Levis, P.; Patel, N.; Culler, D. & Shenker, S. (2004). Trickle: a self-regulating algorithm for code propagation and maintenance in wireless sensor networks. Proceedings of 1st Conf. on Networked Systems Design and Implementation, pp. 15-18, San Francisco, USA, Mar. 2004 Marinkovic, S.; Spagnol, C. & Popovici, E. M. (2009). Energy-efficient TDMA-based MAC protocol for wireless body area networks. Proceedings of 3rd Int. Conf. Sensor Technologies and Applications, pp. 604-609, ISBN:9780769536699, Athens, Greece, June 2009, IEEE Computer Society, Washington DC Marrón P. J.; Gauger, M.; Lachenmann, A.; Minder, D.; Saukh, O. & Rothermel, K. (2006). FlexCup: A Flexible and Efficient Code Update Mechanism for Sensor Networks. Proceedings of 3rd Euro. Workshop on Wireless Sensor Networks, pp. 212-227, ISBN:3540321586, Zurich, Switzerland, Feb. 2006, Springer, Berlin Energy-efcient Reprogramming of Heterogeneous Wireless Sensor Networks 519 J 0.36 7977.1075.07977.1128.0 )2082()2082(    TPTPE RXTXeduncompress (5) J 0.32 052.00293.0577.1075.0577.1128.0 )1046.281826()1826()1826( 6     CPURXTXcompressed PTPTPE (6) The transceivers throughput rate of 50 kbps is very slow compared to the Atmega128L processor running at 8 MHz, so the time taken for decompressing the data is minimal compared to the time taken for transmitting the data. Therefore even for very modest compression ratios, it is worthwhile to use S-LZW. 6. Conclusions We presented efficient methods for reducing the energy cost of reprogramming wireless sensor networks, by using delta encoding and LZW based compression. We have modified the Bsdiff delta encoding algorithm to make suitable it for use in WSNs, and also tuned the S-LZW algorithm for energy efficiency. In our example heterogeneous network with two different hardware nodes, and two different sensor types we reduced the cost of updating the communication protocol to 6.57 % of an approach that requires sending the full application program. The use of S-LZW gives a further reduction to about 90% of this value. The solutions we provided can be applied to any type of reprogramming. The Bsdiff algorithm is not dependent on knowledge of instruction sets, and does not require any special compilation methods to keep functions at the same addresses. Very limited support is needed in the existing program. Support could be added on top of existing operating systems such as TinyOS or Contiki. This work has been implemented on a two-tiered heterogeneous network, but can be extended for multi-tier networks. The techniques presented are useful for simpler homogeneous networks. The work presented in this chapter is already of great use in reducing the energy costs to reprogram a wireless node or network. However, in ad-hoc networks where the topology is not centrally managed, algorithms such as MSP (Kulkarni and Wang, 2009) or Freshet (Krasniewski et al., 2008) are suitable for managing the propagation of commands, and would complement the techniques presented in this chapter. 7. Acknowledgments This work was supported by Science Foundation Ireland under grant 07/CE/I1147. 8. References Atmel (2009). Atmega128L datasheet, rev. S. http://www.atmel.com Bellis, S. J.; Delaney, K.; O'Flynn, B.; Barton, J.; Razeeb, K. M. & Ó Mathúna, S. C. (2005). Development of field programmable modular wireless sensor network nodes for ambient systems. Computer Communications, 28, 13, Aug. 2005, pp. 1531-1544, ISSN:01403664 Berkeley (2010), University of California. Tinyos Community Forum, http://www.tinyos.net Burrows, M. & Wheeler, D. J. (1994). A block-sorting lossless data compression algorithm. Digitial SRC Research Report 124 Dunkels, A. (2010) The Contiki Operating System, http://www.sics.se/contiki/ Foster-Miller (2010). Electrotextiles, http://www.foster-miller.com/m_m_electrotextiles.htm Georgoulas, D. & Blow, K. (2008). Intelligent Mobile Agent Middleware for Wireless Sensor Networks: A Real Time Application Case Study. Proceedings of 4th Advanced Int. Conf. Telecommunications, pp. 95-100, ISBN:9780769531625, Athens, Greece, Jun. 2008, IEEE Computer Society, Washington DC Harte, S.; O'Flynn, B.; Martínez-Catalá, R. V. & Popovici, E. M. (2007). Design and implementation of a miniaturised, low power wireless sensor node. Proceedings 18th Euro. Conf. Circuit Theory and Design, pp. 894-897, ISBN:9781424413416, Seville, Spain, Aug. 2007, IEEE Press, New Jersey Hui, J. W. & Culler, D. (2004). The dynamic behavior of a data dissemination protocol for network programming at scale. Proceedings of 2nd Int. Conf. Embedded Networked Sensor Systems, pp. 81-94. ISBN:1581138792, Baltimore, USA, Nov. 2004, ACM, New York Jeong, J. & Culler, D. (2009). Incremental network programming for wireless sensors. International Journal of Communications, Network and System Sciences. 2, 5, Aug. 2009, pp. 433-452, ISSN:17543924 Krasniewski, M. D.; Panta, R. K.; Bagchi, S.; Yang, C. & Chappell, W. J. (2008). Energy- efficient on-demand reprogramming of large-scale sensor networks. ACM Trans. Sensor Networks, 4, 1, Jan. 2008, pp 1-38, ISSN:15504859 Kulkarni, S. & Wang, L. (2009). Energy-efficient multihop reprogramming for sensor networks. ACM Trans. Sensor Networks, 5, 2, Mar. 2009, pp. 1-40, ISSN:15504859 Levis, P. & Culler, D. (2002). Maté: a tiny virtual machine for sensor networks. Proceedings of 10th Int. Conf. Architectural Support for Programming Languages and Operating Systems, pp. 85-95, ISBN:1581135742, San Jose, USA, Oct. 2002, ACM, New York Levis, P.; Patel, N.; Culler, D. & Shenker, S. (2004). Trickle: a self-regulating algorithm for code propagation and maintenance in wireless sensor networks. Proceedings of 1st Conf. on Networked Systems Design and Implementation, pp. 15-18, San Francisco, USA, Mar. 2004 Marinkovic, S.; Spagnol, C. & Popovici, E. M. (2009). Energy-efficient TDMA-based MAC protocol for wireless body area networks. Proceedings of 3rd Int. Conf. Sensor Technologies and Applications, pp. 604-609, ISBN:9780769536699, Athens, Greece, June 2009, IEEE Computer Society, Washington DC Marrón P. J.; Gauger, M.; Lachenmann, A.; Minder, D.; Saukh, O. & Rothermel, K. (2006). FlexCup: A Flexible and Efficient Code Update Mechanism for Sensor Networks. Proceedings of 3rd Euro. Workshop on Wireless Sensor Networks, pp. 212-227, ISBN:3540321586, Zurich, Switzerland, Feb. 2006, Springer, Berlin Sustainable Wireless Sensor Networks520 Motta, G.; Gustafson, J. & Chen, S. (2007). Differential compression of executable code. Proceedings of Data Compression Conf., pp. 103-112, ISBN:0769527914, Snowbird, USA, Mar 2007, IEEE Computer Society, Washington DC Nordic Semiconductor (2008). nRF9E5 datasheet, rev. 1.5. http://www.nordicsemi.com Pavlov, I. (2010). 7-zip file archiver. http://www.7-zip.org Percival, C. (2006). Matching with Mismatches and Assorted Applications, Ph.D. Dissertation. University of Oxford Percival, C. (2010). Binary diff/patch utility. http://www.daemonology.net/bsdiff Phillips, L. A. (2005). Aqueduct: robust and efficient code propagation in heterogeneous wireless sensor networks. Master’s thesis, University of Nebraska Raghunathan, V.; Schurgers, C.; Park, S. & Srivastava, M. B., 2002. Energy-aware wireless microsensor networks. IEEE Signal Processing Magazine, 19, 2, Aug. 2002, pp. 40-50, ISSN:10535888 Roedig, U.; Barroso, A. & Sreenan, C. J. (2006). f-MAC: a deterministic media access control protocol without time synchronization. Proceedings of 3rd Euro. Workshop on Wireless Sensor Networks, pp. 276-291, ISBN:3540321586, Zurich, Switzerland, Feb. 2006, Springer, Berlin Reijers, N. & Langendoen, K. (2003). Efficient code distribution in wireless sensor networks. Proceedings of 2nd ACM Int. Conf. Wireless sensor networks and applications, pp. 60-67, ISBN:1581137648, San Diego, USA, Sept. 2003, ACM, New York Sadler, C. M. & Martonosi, M. (2006). Data compression algorithms for energy-constrained devices in delay tolerant networks. Proceedings of 4th Int. Conf. Embedded Networked Sensor Systems, pp. 265-278, ISBN:1595933433, Boulder USA, Nov. 2006, ACM, New York Tridgell, A. (1999). Efficient algorithms for sorting and synchronization. Ph.D. Dissertation, Australian National University Programming a Sensor Network in a layered middleware architecture 521 Programming a Sensor Network in a layered middleware architecture Michele Albano and Stefano Chessa 0 Programming a Sensor Network in a layered middleware architecture Michele Albano Instituto de Telecomunicações - Aveiro Portugal Stefano Chessa University of Pisa and ISTI-CNR Italy Abstract Wireless Sensor Networks (WSNs) have become a mature technology aimed at performing environmental monitoring and data collection. Nonetheless, harnessing the power of a WSN presents a number of research challenges. WSN application developers have to deal both with the business logic of the application and with WSN’s issues, such as those related to network- ing (routing), storage, and transport. A middleware can cope with this emerging complexity, and can provide the necessary abstractions for the definition, creation and maintenance of ap- plications. This work discusses the problems related to the development of such a middleware and surveys the state of the art on the field. 1. Introduction In the last few years, hardware and software innovations have been leading Wireless Sensor Networks (WSNs) from the research labs to deployments in real contexts. A WSN application is a distributed application that is built on a large number of low-cost, low-power, battery- powered sensors (Akyildiz et Al., 2002; Baronti et Al., 2007; Chessa, 2009). Sensors are spread in an environment (sensor field) without any predetermined infrastructure and cooperate to execute common monitoring tasks which usually consist in sensing environmental data and monitoring a variable set of objects. The sensed data are collected by a sink (a node that can communicate with both the WSN and an external network), when the sink is connected to the network. The sink, which could be either static or mobile, is in turn accessed by the external operators to retrieve the information gathered by the network. Distilling a given high-level behavior from a set of sensors is a challenging problem, since the application has to deal with its own business logic, and with the issues that naturally arise when WSNs are taken into account, such as network formation, data transport and data man- agement, security and energy saving. Dealing with these issues can be done either explicitly, 23 Sustainable Wireless Sensor Networks522 thus adding complexity to the applications, or implicitly by means of a middleware, that is a software layer that abstracts from common issues of the WSNs. A middleware would let the developers to focus on the applications’ business logic. On the other hand, there is no unique way to define which issues belong to the WSN, and which ones are part of the business logic. In general, this depends on the politics/mechanisms dichotomy, and hence on the level of abstraction that is provided by the middleware. Even a minimal middleware can provide benefits to the application developer, nonetheless it presents research challenges. The level of abstraction provided by a WSN middleware inherently depends on the mecha- nisms that are used by the middleware to implement the high-level primitives. The analysis of state-of-the-art mechanisms presented in this work is developed into a structured vision of the mechanisms, that were organized into three layers (Programming Abstraction layer, Data Management layer, and Network layer) whose mechanisms can interact with each other or can be used directly by the application, plus a set of Dependability mechanisms that is or- thogonal to the layers and that comprises mechanisms that are used by all the layers and by the user applications alike. 2. Organizing middleware mechanisms into layers Current research papers agree that one of the critical points to leverage on the potential use- fulness of WSNs is the possibility of abstracting common WSNs problems by means of conve- nient middleware, but literature is not coherent when defining what a middleware is (Albano et Al., 2007-1; Bai et Al., 2009; Chu & Buyya, 2007; Hadim & Mohamed, 2006; Mottola & Picco, 2008; Rahman, 2009; Romer et Al., 2002; Rubio et Al., 2007; Sugihara et Al., 2008; Tong, 2009; Wang et Al., 2008). To this purpose we focus on the goals that a middleware has to achieve. The main purpose of middleware is to support the development, maintenance, deployment and execution of appli- cations, filling in the gap between the application layer and the hardware, operating system and network stacks layers. In the case of WSNs, this can include mechanisms for formulat- ing high-level sensing tasks, communicating this task to the WSN, merging/aggregating the sensor readings, and reporting them. The actual analysis of state-of-the-art middleware pre- sented a variety of different techniques and approaches used to address the aforementioned goals. In fact, WSN systems offer functionalities that can be collectively called “middleware” but that are very different from each other. For example, different middleware offer: • low-level mechanisms that operate at the datum granularity, such as data centric stor- age (Albano et Al., 2010; Bruck et Al., 2005) • abstract mechanisms that hide the single datum, like database-like systems (Amato et Al., 2010; Madden et Al., 2003) • service oriented architectures, for example the ZigBee standard (Baronti et Al., 2007) • platforms for mobile agents, for example AFME (Muldoon et Al., 2006) or Agilla (Fok et Al., 2009) This analysis of the state-of-the-art mechanisms identifies three layers (Programming Abstrac- tion layer, Data Management layer, and Network layer), and the mechanisms are categorized in terms of this structure. The mechanisms can interact with each other or can be used directly by the application. A set of mechanisms for Dependability is also identified, and it can be Fig. 1. Middleware is structured as a set of layers between the hardware and the application. used at different levels for different purposes. Figure 1 provides a graphical representation of this structure. Programming Abstraction layer comprises the mechanisms that model the behavior of the whole WSN, and that provide the user application with techniques to abstract the WSN de- tails. For example, a user application can perceive a WSN as a relational database (Amato et Al., 2010; Madden et Al., 2003), as a publish/subscribe system (Albano & Chessa, 2009-1), as a service oriented architecture (Baronti et Al., 2007), or as a platform for mobile agents (Mul- doon et Al., 2006). The Data Management layer lets the user perform store and retrieve operations on data, either storing them on a specific sensor or set of sensors, or selecting the set of sensors from a meta- datum of the data to be stored or retrieved, as in Data Centric Storage systems (Albano et Al., 2010; Ee et Al., 2006; Ratnasamy et Al., 2003). The Network layer features explicit send and receive operations, and lets the user application control the transmissions performed at a finer grain. This layer nonetheless performs some abstraction, since it hides the routing protocol used, hence it lets the invoker specify the goal of the routing process, be it a sensor or a coordinate in the sensor field. This work does not provide details on Network layers, since it focuses on the high-level issues of WSN middle- ware. The Dependability mechanisms regard the techniques used to create reliable primitives on the layers, and are used by all the layers alike. A user application can rely on one of these layers, depending on the level of abstraction re- quired, by addressing the whole WSN using the abstraction provided by the Programming Abstraction layer, or by performing explicit Data Management specifying which data are stored and retrieved, or it can be based on network level send/receive operations. As an example of interaction of these layers, the Publish/Subscribe system described in (Al- bano & Chessa, 2009-1) is based on a Data Centric Storage layer provided in (Albano et Al., 2010). The DCS mechanisms such as (Ratnasamy et Al., 2003) used geographical routing such as (Karp & Kung, 2000) (Network layer) to transport data and queries to proper sensors. Era- sure coding (Dependability mechanisms) was used to guarantee data availability in (Albano & Chessa, 2009-2), and to optimize access to data in (Dimakis et Al., 2006). Programming a Sensor Network in a layered middleware architecture 523 thus adding complexity to the applications, or implicitly by means of a middleware, that is a software layer that abstracts from common issues of the WSNs. A middleware would let the developers to focus on the applications’ business logic. On the other hand, there is no unique way to define which issues belong to the WSN, and which ones are part of the business logic. In general, this depends on the politics/mechanisms dichotomy, and hence on the level of abstraction that is provided by the middleware. Even a minimal middleware can provide benefits to the application developer, nonetheless it presents research challenges. The level of abstraction provided by a WSN middleware inherently depends on the mecha- nisms that are used by the middleware to implement the high-level primitives. The analysis of state-of-the-art mechanisms presented in this work is developed into a structured vision of the mechanisms, that were organized into three layers (Programming Abstraction layer, Data Management layer, and Network layer) whose mechanisms can interact with each other or can be used directly by the application, plus a set of Dependability mechanisms that is or- thogonal to the layers and that comprises mechanisms that are used by all the layers and by the user applications alike. 2. Organizing middleware mechanisms into layers Current research papers agree that one of the critical points to leverage on the potential use- fulness of WSNs is the possibility of abstracting common WSNs problems by means of conve- nient middleware, but literature is not coherent when defining what a middleware is (Albano et Al., 2007-1; Bai et Al., 2009; Chu & Buyya, 2007; Hadim & Mohamed, 2006; Mottola & Picco, 2008; Rahman, 2009; Romer et Al., 2002; Rubio et Al., 2007; Sugihara et Al., 2008; Tong, 2009; Wang et Al., 2008). To this purpose we focus on the goals that a middleware has to achieve. The main purpose of middleware is to support the development, maintenance, deployment and execution of appli- cations, filling in the gap between the application layer and the hardware, operating system and network stacks layers. In the case of WSNs, this can include mechanisms for formulat- ing high-level sensing tasks, communicating this task to the WSN, merging/aggregating the sensor readings, and reporting them. The actual analysis of state-of-the-art middleware pre- sented a variety of different techniques and approaches used to address the aforementioned goals. In fact, WSN systems offer functionalities that can be collectively called “middleware” but that are very different from each other. For example, different middleware offer: • low-level mechanisms that operate at the datum granularity, such as data centric stor- age (Albano et Al., 2010; Bruck et Al., 2005) • abstract mechanisms that hide the single datum, like database-like systems (Amato et Al., 2010; Madden et Al., 2003) • service oriented architectures, for example the ZigBee standard (Baronti et Al., 2007) • platforms for mobile agents, for example AFME (Muldoon et Al., 2006) or Agilla (Fok et Al., 2009) This analysis of the state-of-the-art mechanisms identifies three layers (Programming Abstrac- tion layer, Data Management layer, and Network layer), and the mechanisms are categorized in terms of this structure. The mechanisms can interact with each other or can be used directly by the application. A set of mechanisms for Dependability is also identified, and it can be Fig. 1. Middleware is structured as a set of layers between the hardware and the application. used at different levels for different purposes. Figure 1 provides a graphical representation of this structure. Programming Abstraction layer comprises the mechanisms that model the behavior of the whole WSN, and that provide the user application with techniques to abstract the WSN de- tails. For example, a user application can perceive a WSN as a relational database (Amato et Al., 2010; Madden et Al., 2003), as a publish/subscribe system (Albano & Chessa, 2009-1), as a service oriented architecture (Baronti et Al., 2007), or as a platform for mobile agents (Mul- doon et Al., 2006). The Data Management layer lets the user perform store and retrieve operations on data, either storing them on a specific sensor or set of sensors, or selecting the set of sensors from a meta- datum of the data to be stored or retrieved, as in Data Centric Storage systems (Albano et Al., 2010; Ee et Al., 2006; Ratnasamy et Al., 2003). The Network layer features explicit send and receive operations, and lets the user application control the transmissions performed at a finer grain. This layer nonetheless performs some abstraction, since it hides the routing protocol used, hence it lets the invoker specify the goal of the routing process, be it a sensor or a coordinate in the sensor field. This work does not provide details on Network layers, since it focuses on the high-level issues of WSN middle- ware. The Dependability mechanisms regard the techniques used to create reliable primitives on the layers, and are used by all the layers alike. A user application can rely on one of these layers, depending on the level of abstraction re- quired, by addressing the whole WSN using the abstraction provided by the Programming Abstraction layer, or by performing explicit Data Management specifying which data are stored and retrieved, or it can be based on network level send/receive operations. As an example of interaction of these layers, the Publish/Subscribe system described in (Al- bano & Chessa, 2009-1) is based on a Data Centric Storage layer provided in (Albano et Al., 2010). The DCS mechanisms such as (Ratnasamy et Al., 2003) used geographical routing such as (Karp & Kung, 2000) (Network layer) to transport data and queries to proper sensors. Era- sure coding (Dependability mechanisms) was used to guarantee data availability in (Albano & Chessa, 2009-2), and to optimize access to data in (Dimakis et Al., 2006). Sustainable Wireless Sensor Networks524 3. Data Management layer The final goal of a WSN is to gather data from the environment and to route it to data con- sumers, and the Data Management layer is responsible for controlling dataflows and man- aging the exchange of data between nodes, towards the data consumers, with the option of caching the data into the WSN before transferring them out of the WSN. The current paradigm considers that data exit the WSN via special sensors, called sinks. The sinks are gateways that are connected to both the WSN and an external network, like the internet. Data can reach the sink in three ways: 1. local storage: data are stored on a set of sensors that depends on the sensor that pro- duced the data, 2. external storage: data are sent to the sink as soon as they are produced, 3. in-network storage: produced data are sent to a set of the sensors that depends on some characteristics of the data. 3.1 Local and External Storage Local storage is a Data Management paradigm that prescribes data to be stored on a set of sensors that depends on the sensor producing them. The most common implementation of this paradigm stores data on the sensor producing them. When the sink wants to access the data, it must send a request to the sensors that stored them. This approach presents some limitations. The first is that, if some sensors detect a lot of events, their related sets of sensors become burdened by storing more data and hence they deplete their resources earlier (battery, memory, etc). A second problem is that the sink does not usually know in advance which sensor is producing data it is interested into, and hence it is necessary to broadcast a request to contact every node when retrieving data. External storage is another approach where data are sent to the sink as soon as they are pro- duced. Main drawbacks of this approach are that data can not be pre-processed and aggre- gated with other data. Moreover, if there are more than one sinks, data must be duplicated and sent to each sink. Finally, the sink must be always connected to the WSN, or the sink would miss data produced while it is away. 3.1.1 Local storage A number of proposals for WSN middleware are based on the local storage paradigm, since it is the most obvious paradigm to cope with discontinuous connection of the sink to the WSN. The work describing tinyDSM (Piotrowski et Al., 2009), presented substantially a local storage Data Management layer. This middleware allows a node to ask its neighbors to replicate data, hence realizing a high-availability local storage system. When a sink queries the data, data replication assures the information to be available even if some nodes are exhausted or in sleep mode. The middleware presented in (Dimakis et Al., 2006) proposes a local storage solution that uses a kind of encoding that enables a fully distributed computation of the code. The tech- nique refers to a model featuring a set V 1 of k source sensors, each producing a single data packet, and a set V 2 of n storage sensors, storing the data. The encoding is based on a bipartite graph that connects each source to O (log k) randomly selected storage sensors. The encoding is performed by each storage sensor using a linear combination of all incoming data, where each incoming data are multiplied by a randomly selected factor. Each storage sensor then stores the random factors associated to each incoming datum and the result of the linear com- bination. The authors show that the sink can reconstruct all k packets querying any k storage nodes with high probability. This fully distributed encoding results in a memory overhead that can be ignored only if the data to be encoded are much larger than the random factors. Another local storage technique for fully distributed coding is based on the Growth Codes (Kamra et Al., 2006), and it implements linear coding using XOR operations. In this model the sensors give to the sink codewords obtained as the XOR of different data, and the sink performs the decoding. The goal of growth codes is coping with the “coupon collection phenomena” with random data collection, since in a pure erasure coding approach, the last few data symbols are the most difficult to get. This coding algorithm implies that for the first data to be encoded, only the original data are stored, and only after some time the encoding composes a number of data to construct the codewords to be stored. As long as the sink re- ceives enough codewords obtained from a single datum, it is able to obtain the different data from the codewords. 3.1.2 External storage Data Management layers implementing an external storage solution, cope with data manage- ment by sending data to the sinks as soon as they are produced. In this paradigm, data are stored and analyzed outside the WSN, hence the WSN’s role is limited to data acquisition. Data Management layers of this kind are usually more resource expensive of the other Data Management layers, since they perform a large number of data transmission operations. In this kind of Data Management layer, data can be subject to a filter that decides if it has to be sent to the sink, but the filter must be loose enough not to throw away any data that can become interesting for the user application during the WSN’s lifetime. A refinement of this paradigm is the routing tree, that is used in Directed Diffusion (In- tanagonwiwat et Al., 2000), that is a middleware that implements an External storage system that is reprogrammable on-the-fly using interest propagation. Data are named by meta-data that describe them, then the data consumer (a sink) disperses a message into the WSN by a broadcast to instruct nodes to send him data by a multi-hop routing tree that is set up by the interest dispersal: every node takes note about the node he received the interest from, and it sets it up as the next step in a routing process towards the data consumer. At the same time, every node starts considering data pertaining to a certain category as “interesting data” and, instead of discarding them, they send it along the gradient created by the interest dispersal towards the sink. Some Programming Abstraction layers, such as (Amato et Al., 2010; Mad- den et Al., 2003), employ a refined version of External storage, where data are sent towards the sink as soon as it is collected, but where it is processed while it is moving up the routing tree. Another solution of the external storage kind is publish/subscribe, where nodes are instructed about sending data concerning interesting data when they collect them. An example is the Data Management solution adopted in Mires (Souto et Al., 2004), that sets up data collection by means of a publish/subscribe service. The main difference with routing trees, is that pub- lish/subscribe is initiated by a node that advertises the data it can produce, and then the node is explicitly instructed to send the data to some data consumer. In contrast, routing trees are about flooding the WSN with an interest, that instructs all the nodes to send data pertaining a meta-datum to the broadcast initiator. Programming a Sensor Network in a layered middleware architecture 525 3. Data Management layer The final goal of a WSN is to gather data from the environment and to route it to data con- sumers, and the Data Management layer is responsible for controlling dataflows and man- aging the exchange of data between nodes, towards the data consumers, with the option of caching the data into the WSN before transferring them out of the WSN. The current paradigm considers that data exit the WSN via special sensors, called sinks. The sinks are gateways that are connected to both the WSN and an external network, like the internet. Data can reach the sink in three ways: 1. local storage: data are stored on a set of sensors that depends on the sensor that pro- duced the data, 2. external storage: data are sent to the sink as soon as they are produced, 3. in-network storage: produced data are sent to a set of the sensors that depends on some characteristics of the data. 3.1 Local and External Storage Local storage is a Data Management paradigm that prescribes data to be stored on a set of sensors that depends on the sensor producing them. The most common implementation of this paradigm stores data on the sensor producing them. When the sink wants to access the data, it must send a request to the sensors that stored them. This approach presents some limitations. The first is that, if some sensors detect a lot of events, their related sets of sensors become burdened by storing more data and hence they deplete their resources earlier (battery, memory, etc). A second problem is that the sink does not usually know in advance which sensor is producing data it is interested into, and hence it is necessary to broadcast a request to contact every node when retrieving data. External storage is another approach where data are sent to the sink as soon as they are pro- duced. Main drawbacks of this approach are that data can not be pre-processed and aggre- gated with other data. Moreover, if there are more than one sinks, data must be duplicated and sent to each sink. Finally, the sink must be always connected to the WSN, or the sink would miss data produced while it is away. 3.1.1 Local storage A number of proposals for WSN middleware are based on the local storage paradigm, since it is the most obvious paradigm to cope with discontinuous connection of the sink to the WSN. The work describing tinyDSM (Piotrowski et Al., 2009), presented substantially a local storage Data Management layer. This middleware allows a node to ask its neighbors to replicate data, hence realizing a high-availability local storage system. When a sink queries the data, data replication assures the information to be available even if some nodes are exhausted or in sleep mode. The middleware presented in (Dimakis et Al., 2006) proposes a local storage solution that uses a kind of encoding that enables a fully distributed computation of the code. The tech- nique refers to a model featuring a set V 1 of k source sensors, each producing a single data packet, and a set V 2 of n storage sensors, storing the data. The encoding is based on a bipartite graph that connects each source to O (log k) randomly selected storage sensors. The encoding is performed by each storage sensor using a linear combination of all incoming data, where each incoming data are multiplied by a randomly selected factor. Each storage sensor then stores the random factors associated to each incoming datum and the result of the linear com- bination. The authors show that the sink can reconstruct all k packets querying any k storage nodes with high probability. This fully distributed encoding results in a memory overhead that can be ignored only if the data to be encoded are much larger than the random factors. Another local storage technique for fully distributed coding is based on the Growth Codes (Kamra et Al., 2006), and it implements linear coding using XOR operations. In this model the sensors give to the sink codewords obtained as the XOR of different data, and the sink performs the decoding. The goal of growth codes is coping with the “coupon collection phenomena” with random data collection, since in a pure erasure coding approach, the last few data symbols are the most difficult to get. This coding algorithm implies that for the first data to be encoded, only the original data are stored, and only after some time the encoding composes a number of data to construct the codewords to be stored. As long as the sink re- ceives enough codewords obtained from a single datum, it is able to obtain the different data from the codewords. 3.1.2 External storage Data Management layers implementing an external storage solution, cope with data manage- ment by sending data to the sinks as soon as they are produced. In this paradigm, data are stored and analyzed outside the WSN, hence the WSN’s role is limited to data acquisition. Data Management layers of this kind are usually more resource expensive of the other Data Management layers, since they perform a large number of data transmission operations. In this kind of Data Management layer, data can be subject to a filter that decides if it has to be sent to the sink, but the filter must be loose enough not to throw away any data that can become interesting for the user application during the WSN’s lifetime. A refinement of this paradigm is the routing tree, that is used in Directed Diffusion (In- tanagonwiwat et Al., 2000), that is a middleware that implements an External storage system that is reprogrammable on-the-fly using interest propagation. Data are named by meta-data that describe them, then the data consumer (a sink) disperses a message into the WSN by a broadcast to instruct nodes to send him data by a multi-hop routing tree that is set up by the interest dispersal: every node takes note about the node he received the interest from, and it sets it up as the next step in a routing process towards the data consumer. At the same time, every node starts considering data pertaining to a certain category as “interesting data” and, instead of discarding them, they send it along the gradient created by the interest dispersal towards the sink. Some Programming Abstraction layers, such as (Amato et Al., 2010; Mad- den et Al., 2003), employ a refined version of External storage, where data are sent towards the sink as soon as it is collected, but where it is processed while it is moving up the routing tree. Another solution of the external storage kind is publish/subscribe, where nodes are instructed about sending data concerning interesting data when they collect them. An example is the Data Management solution adopted in Mires (Souto et Al., 2004), that sets up data collection by means of a publish/subscribe service. The main difference with routing trees, is that pub- lish/subscribe is initiated by a node that advertises the data it can produce, and then the node is explicitly instructed to send the data to some data consumer. In contrast, routing trees are about flooding the WSN with an interest, that instructs all the nodes to send data pertaining a meta-datum to the broadcast initiator. [...]... for Sensor Networks: A Survey In: ACM Trans on Sensor Networks, 4(2), March 2008, 1-28 K Terfloth, G Wittenburg, J Schiller: FACTS: A Rule-based Middleware Architecture for Wireless Sensor Networks In: Int Conf on Communication System Software and Middleware, New Delhi, India (2006) 546 Sustainable Wireless Sensor Networks S Tong: An Evaluation Framework for middleware approaches on Wireless Sensor Networks. .. Wireless Networks In: MobiCom 2000, p 243-254 (2000) 544 Sustainable Wireless Sensor Networks K.K Khedo, and R.K Subramanian: A Service-Oriented Component-Based Middleware Architecture for Wireless Sensor Networks In: IJCSNS International Journal of Computer Science and Network Security, VOL.9 No.3, March 2009 Y Kwon, S Sundresh, K Mechitov, G Agha: ActorNet: An Actor Platform for Wireless Sensor Networks. .. storage scheme for sensor networks In: Proceedings of CIKM, p 317-326 (2006) 542 Sustainable Wireless Sensor Networks G Amato, S Chessa, and C Vairo: MaD-WiSe: A Distributed Stream Management System for Wireless Sensor Networks In: Software Practice & Experience, 40 (5): 431-451 (2010) F Araujo, L Rodrigues, J Kaiser, C Liu, C Mitidieri: CHR: a Distributed Hash Table for Wireless Ad Hoc Networks In: Proc... M Chen, T Kwon, Y Yuan, V.C.M Leung: Mobile Agent Based Wireless Sensor Networks In: Journal of Computers, 1(1):97 (2006) S Chessa: Sensor Network Standards Book chapter in: Wireless Sensor Networks: A Networking Perspective, Wiley-IEEE, ISBN: 978-0-470 -167 63-2, p 407-431, September 2009 X Chu, R Buyya: Service Oriented Sensor Web In: Sensor Networks and Configuration: Fundamentals, Standards, Platforms... storage in wireless sensor networks In: IEEE Distributed Systems online, 4(11), November 2003 P Gil, I Maza, A Ollero, P Marrón: Data Centric Middleware for the Integration of Wireless Sensor Networks and Mobile Robots In: Proceedings of 7th Conference on Mobile Robots and Competitions, ROBOTICA 2007 April 2007 S Hadim, N Mohamed: Middleware: Middleware Challenges and Approaches for Wireless Sensor Networks. .. Adding QoS to Data Centric Storage in Non-Uniform Sensor Networks In: IEEE MDM 2007, Mannheim, Germany (2007) M Albano, S Chessa, F Nidito, S Pelagatti: Dealing with Non Uniformity in Data Centric Storage for Wireless Sensor Networks In: to appear on IEEE Trans on Parallel and Distributed Systems (2010) M Albano, S Chessa: Publish/subscribe in Wireless Sensor Networks based on Data Centric Storage In: CAMS... 2004) (executed on the sensors) and Linux (executed on computers managing the WSN), that aims at managing WSNs composed by different kinds of sensors Sensors are divided into smaller sensor subnetworks (SSNs), each containing only sensors of one type, then a wireless mesh network (WMN) operates as a backbone for the SSNs and as a gateway to the WSNs A code updater running on the sensors takes care of... version 1.0, April 2005 Group Key Managements in Wireless Sensor Networks 547 24 0 Group Key Managements in Wireless Sensor Networks Ju-Hyung Son* and Seung-Woo Seo LG Electronics*, Seoul National University Korea 1 Abstract A sensor network operating in open environments requires a network-wide group key for confidentiality of exchanged messages between sensor nodes When a node behaves abnormally due... characteristics of sensor queries and it allows hierarchical clustering of nodes in order to facilitate scalable operations within sensor networks The middleware design is based on the creation of clusters of nodes, that cooperate between themselves to orchestrate sensing tasks The WSN as a whole is considered a collection of logical datasheets Each cluster of 532 Sustainable Wireless Sensor Networks nodes... TinyOS: An operating system for wireless sensor networks In: Ambient Intelligence Springer-Verlag, 2004 P Levis, D Gay, D Culler: Active Sensor Networks In: Proceedings of the 2nh International Symposium on Networked Systems Design and Implementation (NSDI’ 05), pages 29-42, San Francisco, CA, USA, March 2005 P Levis, D Culler: Maté: A Tiny Virtual Machine for Sensor Networks In: 10th Int Conf on Architectural . Sensor Networks. Proceedings of 3rd Euro. Workshop on Wireless Sensor Networks, pp. 212-227, ISBN:3540321586, Zurich, Switzerland, Feb. 2006, Springer, Berlin Sustainable Wireless Sensor Networks5 20 Motta,. large-scale sensor networks. ACM Trans. Sensor Networks, 4, 1, Jan. 2008, pp 1-38, ISSN:15504859 Kulkarni, S. & Wang, L. (2009). Energy-efficient multihop reprogramming for sensor networks. . large-scale sensor networks. ACM Trans. Sensor Networks, 4, 1, Jan. 2008, pp 1-38, ISSN:15504859 Kulkarni, S. & Wang, L. (2009). Energy-efficient multihop reprogramming for sensor networks.

Ngày đăng: 20/06/2014, 07:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan