USNIX OSDI 2002
TAG: a Tiny AGgregation Service for Ad-Hoc Sensor Networks http://www.cs.berkeley.edu/~madden/madden_tag.pdf
Samuel madden, Michael J. Franklin UC Berkeley
低消費電力、分散、無線なセンサネットワーク上でセンサの属性とかを集約する ための手法であるTAGを提案した。
TAGは下記のような感じ
小さいSensorとネットワークが最近はやってる。たとえば mote(http://www.spp.co.jp/sssj/motemica.html)がある。
moteの概要
TinyOSは、UC Berkleyが開発してるAd-Hoc Sensor Network用の少メモリOS。
世の中にはMoteを利用した研究がいくつか存在している。
センサアプリケーションが使用するデータは生データではなく要約(集約)したデー タを用いる。いくつかの研究はセンサネットワークにおけるデータ集約の重要性 を示している。("Building ejjicient wireless sensor networks with low-level nameing", SOSP, 2001)
この先行研究は集約化をアプリケーション独自の機構(Cに似た低レベル言語とか で扱う)にしている。それに対して我々は集約化はシステムの"Core Service"と するべきだとしている。
C言語の拡張とかではなく、このサービスはもっと高度な抽象化をして扱うべき である。これによって、コンピュータの専門家以外の人も簡単に扱えるし、組み 込みOSとかハードウェアとかに依存することはなくなる。
TAG(Tiny AGgregation)を
このサービス(集約化サービス)には二つの欠けてはいけない属性がある。
AODVっぽいアルゴリズム
Tree-based Routing Schemeらしい。
SQL-styleなqueryを使用(joinは除く)
例: SELECT AVG(volume), room FROM sensors WHERE floor = 6 GROUP BY room HAVING AVG(volume) > threashold EPOCH DURATION 30s
普通のSQLとTAGが違うところは、TAGの結果はStream valueとして出てくること。 こういう継続的なデータの方が便利。
たくさんノードがあるネットワークでは、構造化というのが必要("Adaptive parallel aggregatin algorithms", ACM SIGMOD,1995)。TAGでは三つの手法を使っ て実現。
TAGは二つのphaseから成る
Distribution Phaseの前にあらかじめTreeを形成しておく。
Collection phaseの時、Aggregation Queryを受け取ったsensor Node(Node Aと する) はデータをTreeの親に返す。
このとき、データが返っていく途中のSensor Node(Node Bとする)でも、Queryに 当てはまるデータがある(こともある)。その場合、そのNode Bの次にデータが返 るSensor Node(Node Cとする)には、Node AのデータとNode Bのデータの両方が 返ってくる。
もしもNode CのデータもQueryに当てはまったら、Node Cのデータも付け加えて 返す。この繰り返す。
Figure 2を見ればよくわかる。
でも、Groupingには問題もある。Groupingしすぎると、途中のノード(枝ではな いノード)のstrageがパンクする可能性がある。これを避けるための我々のアプ ローチは、一つ以上のグループを選んで、local Strageから親に向けて追い出す こと。
TAGの一番の利点は、トラフィックを軽減すること。でも、そのほかにもいくつ か利点がある。
1つ目の利点は切断とlossに耐性があること。
2つ目の利点は通常は、一番上のノードはたくさんデータを処理(Query発信元に 送信)しなければならないから電力消費が激しいけど、TAGなら少なくてすむ。
最後の利点として、TAGは時間軸でスロット(epoch)を分割するので、processer のidlingと相性がいい。
javaで実装(Simulation)した。
2500のdevice、50のネットワークで、3つのシナリオを試した。
もしも、親から見放されたら子は新しい親を選ぶ。
Aggregationの効果を向上させるために、simple caching schemeも提案する。
親は、ある一定期間における子の(不完全な)データを記憶しておく。くるはずの 子のデータがこなかったらそのデータを使う。
子が新しい親を選ぶまでの時間より、親がデータを記憶しておく時間のほうが短 ければ、この手法は重複することなく使用可能なデータを増やすことができる。
その実験も行ったよ。
以上のimprove techniqueを使用したプロトタイプ実装をTiny OS Mica上で行っ た。