More Related Content
Similar to Jtf2015 edison consul_cluster (20)
More from Nobuyuki Matsui (12)
Jtf2015 edison consul_cluster
- 1. Copyright © 2015 TIS Inc. All rights reserved.
IoT時代のデバイスクラスタ
- Hashicorp consulを用いたIntel Edisonクラスタの構成 -
2015年7月26日
TIS株式会社 戦略技術センター 松井暢之
- 2. Copyright © 2015 TIS Inc. All rights reserved. 2
松井 暢之(まつい のぶゆき)
TIS株式会社 戦略技術センター
~2003
2003~2008
2009
2010~2012
2013~
2015~
現場PJでアーキテクト兼モデラー兼プログラマ兼…を歴任
基盤技術センター(現戦略技術センター)で不芳PJの火消しに奔走
全社生産性向上の企画策定に従事
オープンでエッジな技術を活用した事業企画に従事
Cloud Orchestrator “CloudConductor®” の企画開発とOSS化開始
IoTオーケストレーション関連の研究開発を開始
http://cloudconductor.org
nbyk.matsui nmatsui
nbyk.matsui@n_matsui
- 3. Copyright © 2015 TIS Inc. All rights reserved.
Agenda
1. IoT市場の急拡大
2. fog & cloud
3. Edison(とRaspberry Pi)を使ったIoTデバイスクラスタ
~Wasted energy of TV~
4. Wasted energy of TVの fog に関する技術要素
5. まとめ
3
- 4. Copyright © 2015 TIS Inc. All rights reserved.
そもそも「IoT」とはなんだ?
いま一歩イメージがわかない。結局「IoT」とは具体的に何だろう?
4
Question! by Stefan Baudy, on Flickr
一意に識別可能な「もの」がインターネット/クラウドに接続され、情報交換する
ことにより相互に制御する仕組みである。
「Internet of Everything」や「Smart Everything」、「サービスのモノ化」
ともいう。
モノのインターネット(Internet of Things、IoT)
出展:ウィキペディア , https://ja.wikipedia.org/wiki/モノのインターネット
- 5. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」市場の急拡大
なんだかよくわからないが、「IoT」市場は急拡大するようだ。
IoT業界で生み出される収益の予測
2020年には最大で7兆ドル(IDC)の収益がIoT市場で生み出される
5
出展:IoT Analytics, "IoT Market – Forecasts at a glance“, 2014-10, http://iot-analytics.com/iot-market-forecasts-overview/
- 6. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」市場の急拡大
なんだかよくわからないが、「IoT」市場は急拡大するようだ。
相互接続されるデバイス数の予測
2020年には最大で500億個(CiscoやEricsson)のデバイスが
相互に接続される
6
出展:IoT Analytics, "IoT Market – Forecasts at a glance“, 2014-10, http://iot-analytics.com/iot-market-forecasts-overview/
- 7. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」市場の急拡大
なんだかよくわからないが、「IoT」市場は急拡大するようだ。
接続されるデバイス数の内訳の予測
2018年には、相互接続されるデバイスのうち半分程度は「IoT」
(BI Intelligence)
7
出展:Business Insider, "THE INTERNET OF EVERYTHING: 2014 “, 2014-02,
http://www.businessinsider.com.au/the-internet-of-everything-2014-slide-deck-sai-2014-2
- 8. Copyright © 2015 TIS Inc. All rights reserved.
デバイスが接続されていれば「IoT」なのだろうか?
「M2M」と「IoT」は同じ?違う?
8
Question! by Stefan Baudy, on Flickr
コンピュータネットワークに繋がれた機械同士が人間を介在せずに相互に情報交換し、
自動的に最適な制御が行われるシステムを指す。
マシンツーマネジメント(Machine-to-Management)とも呼ばれる。
マシンツーマシン(Machine-to-Machine、M2M)
出展:ウィキペディア , https://ja.wikipedia.org/wiki/マシンツーマシン
- 9. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」とは(個人的見解)
個人的には「IoT」を以下のように捉えている。
9
ヒトやモノが相互連携して
営まれる現実世界の活動を
「データ」として映し出し、
様々な種類の「データ」を
組み合わせて分析・学習し、
得られた知見を現実世界へ
フィードバックすることで、
現実世界の活動へ新たな
価値を生み出すこと。
IoTとは
現実世界
データ
分析・学習
現実世界へフィードバック
- 10. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」とは(個人的見解)
10
個人的には「IoT」を以下のようには捉えていない。
モノをインターネットにつなげばIoTである?
つないだだけでは意味が無いし、ヒトやモノが相互に連携してデータ
を収集できるのであれば、すべてのモノを直接インターネットに接続
しなくても良い。
IoTとはセンサーから得た情報を機械にフィードバックして無人
運転することである?
センサーと機械をつないでフィードバックするだけではもったいない。
ヒトの行動やソーシャルの情報など、センサーだけでは得られない
様々なデータも組み合わせて新たな価値を提供することが肝心。
- 11. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」と「IoE」
シスコは「人」「プロセス」「データ」「モノ」をつなぐことで新た
な価値を生み出すことを、「Internet of Everything」と呼んでいる。
11
出展:第15回 八子クラウド座談会, シスコシステムズ合同会社 シスココンサルティングサービス シニアパートナー 八子知礼,
“IoE(Internet of Everything)元年2014 ~新設シスココンサルティングサービスが創る新クラウドビジネス~“,
2014-12, http://www.slideshare.net/tomokyun85/yako-presen-141213
- 12. Copyright © 2015 TIS Inc. All rights reserved.
「IoT」と「IoE」
モノの接続とデータ活用という「IoT(狭義のIoT)」と、より
広範囲に接続して価値を創造する「IoE(広義のIoT)」(by シスコ)
12
出展:第15回 八子クラウド座談会, シスコシステムズ合同会社 シスココンサルティングサービス シニアパートナー 八子知礼,
“IoE(Internet of Everything)元年2014 ~新設シスココンサルティングサービスが創る新クラウドビジネス~“,
2014-12, http://www.slideshare.net/tomokyun85/yako-presen-141213
- 13. Copyright © 2015 TIS Inc. All rights reserved.
Agenda
1. IoT市場の急拡大
2. fog & cloud
3. Edison(とRaspberry Pi)を使ったIoTデバイスクラスタ
~Wasted energy of TV~
4. Wasted energy of TVの fog に関する技術要素
5. まとめ
13
- 14. Copyright © 2015 TIS Inc. All rights reserved.
インターネットトラフィックの急拡大
グローバルなIPトラフィック量は年平均23%で急拡大し、2019年に
は2014年の2.8倍となる160EB/月と予測されている。
14
出展:Cisco, " Cisco VNI Global IP Traffic Forecast, 2014–2019“, 2015-03,
http://www.cisco.com/c/en/us/solutions/collateral/service-provider/visual-networking-index-vni/VNI_Hyperconnectivity_WP.pdf
- 15. Copyright © 2015 TIS Inc. All rights reserved.
IoTのセキュリティリスク
現実世界に近いIoTがハッキングを受けると、直接的で深刻な被害が
発生する可能性がある。例えば以下のような事例が報告されている。
シャワートイレを遠隔操作するBluetoothアプリに脆弱性がある
というセキュリティアドバイザリが公表された(2013.08)
ベビーモニターがクラックされ、子どもや夫婦に暴言を吐く男の
声が聞こえた(2013.08)
テレビや冷蔵庫等のスマート家電がクラッキングを受け、大量の
不正メールを送信する「Thingbots」化した(2014.01)
ハッキングコンテストで、動作中の電気自動車のドアやサンルー
フを遠隔開閉できた(2014.07)
15
出展:Proofpoint, "More than 750,000 Phishing and SPAM emails Launched from "Thingbots" Including Televisions, Fridge“, 2014-01,
https://www.proofpoint.com/us/proofpoint-uncovers-internet-things-iot-cyberattack
出展:Trustwave, “Trustwave SpiderLabs Security Advisory TWSL2013-020: Hard-Coded Bluetooth PIN Vulnerability in LIXIL Satis Toilet“,
2014-01, https://www.trustwave.com/spiderlabs/advisories/TWSL2013-020.txt
出展:CNN, “Foul-mouthed hacker hijacks baby‘s monitor“, 2013-08,
http://edition.cnn.com/2013/08/14/tech/web/hacked-baby-monitor/
出展:ESET, "Tesla Model S hacked to open doors while in motion “, 2014-07,
http://www.welivesecurity.com/2014/07/23/tesla-model-s-hacked-open-doors-motion/
- 16. Copyright © 2015 TIS Inc. All rights reserved.
fog computing
「IoT」全体の中で、ヒトやモノに近い場所(エッジ)で行う処理と
クラウドで行う処理を分割し、それらが分散協調して動作する仕組み
fog computingの概念はシスコシステムズ発祥
16
A distributed computing infrastructure in which
some application services are handled at the network edge in a smart device
and some application services are handled in the cloud.
fog computing(fogging)
出展:WhatIs.com, http://whatis.techtarget.com/definition/fog-computing-fogging
designed by Freepik.com
fog cloud
- 17. Copyright © 2015 TIS Inc. All rights reserved.
fogの特徴とcloudとの役割分担
雲の向こうの(多分土地と電気が安い)どこかにあるcloudではなく、
fogはヒトやモノに近い「その場」にある。
リアルタイム性が重要な処理はfogで行い、大量データの蓄積や
分析・学習はcloudで行う。
fogの中だけで完結できる、完結すべき処理はfogで行い、帯域や
セキュリティ的に必要なデータのみをcloudと送受信する。
広く点在し移動するヒトやモノが動的にfogに参加し、cloudからの
メンテナンスが無くてもfogが自律的に最適動作する。
fogに参加するヒトやモノの死活状態や、fog内やcloudとの通信
の正当性をfog自体が自律的にチェックし、不正なヒトやモノを
排除する。
17
After the rain - 2 by Randi Hausken on Flickr
- 18. Copyright © 2015 TIS Inc. All rights reserved.
Agenda
1. IoT市場の急拡大
2. fog & cloud
3. Edison(とRaspberry Pi)を使ったIoTデバイスクラスタ
~Wasted energy of TV~
4. Wasted energy of TVの fog に関する技術要素
5. まとめ
18
- 19. Copyright © 2015 TIS Inc. All rights reserved.
fog : EdisonとRaspberry Piを用いたIoTデバイスクラスタ
cloud : IBM Bluemix
fogとcloudのプロトタイプ ~ Wasted energy of TV ~
19
MongoDB
Intel Edison
Intel Edison
Intel Edison
Raspberry Pi B+
USBカメラ
Internet
赤外線
リモコン IoT Foundation
Local Network
Wi-Fi Mesh Network
Internet Gateway
Internet Gateway Network
fog
Node-REDアプリ
Consul
Cluster赤外線センサー
赤外線LED
Webブラウザ
テレビ
cloud
GUIアプリ
- 20. Copyright © 2015 TIS Inc. All rights reserved.
日常生活において「点いているけれど見ていないテレビ」に費やされ
ている時間を可視化するアプリである。
カラーチャートによってテレビの視聴状態が可視化される。
赤色に近ければ近い時間ほど、集中してテレビを見ている
青色に近ければ近い時間ほど、テレビに視線を向けていない
灰色の時間は、テレビが点いていない
Wasted energy of TVとは
20
- 21. Copyright © 2015 TIS Inc. All rights reserved.
クラウドのデータ分析ロジックが「テレビは点いているけれど集中し
て見ていない」と判断すると、自動的にテレビが消える。
この機能は有効化/無効化することができる。
有効化した場合、テレビがONかつテレビを見ていない状態が設定
した時間(分)以上連続すると、自動的にテレビがOFFになる。
Wasted energy of TVとは
21
- 22. Copyright © 2015 TIS Inc. All rights reserved. 22
Wasted energy of TVの動作 テレビ試聴状況の送信
- 23. Copyright © 2015 TIS Inc. All rights reserved.
赤外線リモコンを用いてテレビをONにする。
赤外線センサーがリモコンの赤外線パルスを傍受しテレビの
ON/OFFを捉える。
テレビ試聴状況の送信
23
赤外線
リモコン
Local Network
Wi-Fi Mesh Network
Consul
Cluster赤外線センサー
① 赤外線センサーが
テレビのONを認識する
② Consul KVSへテレビ
がONであることを登録
テレビ
fog
cloud
Intel Edison
Raspberry Pi B+
- 24. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の送信
赤外線パルスを認識する赤外線センサーと、現在の認識状態を
表示するLED(テレビがONだと認識していると点灯)。
24
赤外線センサー
テレビON/OFF
認識表示LED
- 25. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の送信
赤外線センサーがうまく認識できない場合に用いる、強制的にテレビ
のON/OFF認識を変更するスイッチ。
25
強制スイッチ
- 26. Copyright © 2015 TIS Inc. All rights reserved.
テレビを見る。
USBカメラの画像を解析し、テレビに顔の正面が向いていれば
「テレビを見ている」と判断。
テレビ試聴状況の送信
26
USBカメラ
Wi-Fi Mesh Network
Consul
Cluster
② Consul KVSへテレビが
見られていることを登録
① USBカメラの映像フレームを解析し、
「正面の顔」の有無を認識する
テレビ
fog
cloud
Intel Edison
- 27. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の送信
テレビを見ているかを認識するためのUSBカメラ。
27
顔認識を行う
USBカメラ
- 28. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の送信
現在テレビを見ているかを表示するLED(テレビを見ていると認識し
ていると点灯)。
28
テレビの視聴状態
認識表示LED
- 29. Copyright © 2015 TIS Inc. All rights reserved.
現在の状態をクラウドへ送る。
定期的にテレビのON/OFFをチェックし、テレビが点いていれば
顔認識の情報をクラウドへpublishする。
IoT Foundation
テレビ試聴状況の送信
29
Internet
Wi-Fi Mesh Network
Internet Gateway
Internet Gateway Network
Consul
Cluster
② テレビがONであれば、正面顔の
認識状態をMQTTでpublishする
① Consul KVSからテレビのON/OFF
と正面顔の認識状態を取得する
③ IoTデバイスクラスタからのpublish
された情報をsubscribeする
fog
cloud
Intel Edison
- 30. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の送信
現在データを送信中かを表示するLED(データ送信中は点滅)。
30
データ送信
表示LED
- 31. Copyright © 2015 TIS Inc. All rights reserved.
IoTデバイスクラスタから受信した情報を蓄積する。
IoT Foundationがsubscribeした情報をMongoDBに蓄積する。
MongoDB
IoT Foundation
Node-REDアプリ
テレビ試聴状況の送信
31
② IoT Foundationから送られてた
情報をMongoDBに蓄積する
① subscribeした情報をNode-RED
アプリへ転送する
fog
cloud
- 32. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の送信
Wasted energy of TVのIoTデバイスクラスタの動画
https://youtu.be/RDPD21L8voM
32
- 33. Copyright © 2015 TIS Inc. All rights reserved. 33
Wasted energy of TVの動作 テレビ試聴状況の可視化
- 34. Copyright © 2015 TIS Inc. All rights reserved.
テレビの視聴状況を可視化する。
ブラウザからGUIアプリにアクセスし、指定した日付
のテレビ視聴状況を可視化する。
テレビ試聴状況の可視化
34
IBM Bluemix
MongoDB
Node-REDアプリ
GUIアプリ
Webブラウザ
① GUIアプリのNginxから
HTMLやJS等を取得
② AJAXを用いてNode-RED
アプリのREST APIから情報取得
fog
cloud
- 35. Copyright © 2015 TIS Inc. All rights reserved.
テレビ試聴状況の可視化
テレビの視聴状況を可視化する。
http://wasted-energy-of-tv-gui.mybluemix.net/
赤色に近ければ近いほど、集中してテレビを見ている。
青色に近ければ近いほど、テレビに視線を向けていない。
灰色はテレビが点いていない。
35
集中してテレビを見ている
ほとんどテレビを見ていない
テレビを見たり見なかったり
テレビが点いてない
- 36. Copyright © 2015 TIS Inc. All rights reserved. 36
Wasted energy of TVの動作 テレビ自動OFF
- 37. Copyright © 2015 TIS Inc. All rights reserved.
テレビ自動OFFを登録する。
ブラウザからGUIアプリにアクセスし、テレビの
自動OFFを登録する。
テレビ自動OFF
37
IBM Bluemix
MongoDB
Node-REDアプリ
GUIアプリ
Webブラウザ
① AJAXを用いてNode-RED
アプリのREST APIから登録
fog
cloud
- 38. Copyright © 2015 TIS Inc. All rights reserved.
テレビ自動OFF
テレビ自動OFFを登録する。
「Change」リンクをクリックすると、テレビ自動OFF機能の
登録画面が表示される。
初期値として現在の登録状況が設定されている。
38
- 39. Copyright © 2015 TIS Inc. All rights reserved.
テレビ自動OFF
テレビ自動OFFを登録する。
テレビ自動OFFを無効化する場合、トグルボタンをOFFにする。
テレビ自動OFFを有効化する場合、トグルボタンをONにして、
テキストボックスに自動OFFになるまでの時間(分)を入力する。
39
- 40. Copyright © 2015 TIS Inc. All rights reserved.
テレビが自動で消える。
テレビ自動OFFが有効の場合、テレビが点いており、かつ設定さ
れた時間連続してテレビを見てないと、cloud
からイベントが送出される。
テレビ自動OFF
40
MongoDB
Node-REDアプリ
IoT Foundation
① MongoDBに蓄積されている情報
を定期的にチェック
② テレビが点いているのに、設定された
時間連続してテレビを見ていなければ、
IoT Foundationへイベントを送出を依頼
fog
cloud
- 41. Copyright © 2015 TIS Inc. All rights reserved.
テレビが自動で消える。
IoTデバイスクラスタがイベントを受信すると、赤外線LEDから
赤外線パルスが照射され、テレビが自動的に
OFFになる。
テレビ自動OFF
41
Internet
IoT Foundation
Internet Gateway
テレビ
Local Network
Wi-Fi Mesh Network
Internet Gateway Network
Consul
Cluster
赤外線LED
① MQTTでsubscribeしている
イベントの受信を検知
② Consul Clusterへ
イベントを発火
③ watchしているイベントが
発生したことを検知
④ 赤外線LEDから登録済みの
赤外線パルスを発信
fog
cloud
Intel Edison
Intel Edison
Raspberry Pi B+
- 42. Copyright © 2015 TIS Inc. All rights reserved.
「テレビを見る」というヒトとモノの相互作用をfogでデータ化し、
cloudで分析して現実世界へフィードバックすることで、次のような
価値が生まれる。
テレビを見ていたつもりでもテレビに集中しておらず、無駄に費
やしてしまった時間に気づくことで、生活にメリハリがつく。
集中してテレビを見ていないならばテレビが消えてしまうため、
家庭での無駄な電力消費を削減できる。
Wasted energy of TVが生み出す価値
42Psssst!! I'm watching you... by ..::Fluckr You::.. on Flickr
- 43. Copyright © 2015 TIS Inc. All rights reserved.
現在のWasted energy of TVの課題
セキュリティが全く考慮されていない!
GUIに認証認可を付けていないため、現時点では私の部屋の
テレビを誰でも自動OFFにできます。。。(笑
fogとcloud間で送受信されるMQTTパケットも、ユーザ認証は
しているものの平文なので盗聴・詐称し放題。。。
cloudでのデータ分析が甘い!
過去の同じ曜日の視聴データ、同じ日の視聴データ、などを分析
学習すれば、「テレビを点けたようですが、どうせあなた、今の
時間はテレビ見てないでしょ?」とcloudが言ってくれたり?
複数人での利用は考慮されていない!
似たような傾向の人がテレビを見ていれば、「あなたこの番組、
好きそうですよね」とcloudが点けてくれたり?
43
- 44. Copyright © 2015 TIS Inc. All rights reserved.
Agenda
1. IoT市場の急拡大
2. fog & cloud
3. Edison(とRaspberry Pi)を使ったIoTデバイスクラスタ
~Wasted energy of TV~
4. Wasted energy of TVの fog に関する技術要素
5. まとめ
44
- 45. Copyright © 2015 TIS Inc. All rights reserved.
Wi-Fiメッシュネットワーク
Consulクラスタ
MQTTプロトコル
Wasted energy of TVの fog に関する技術要素
45
Internet
IoT Foundation
Wi-Fi Mesh Network
Internet Gateway
fog
Consul
Cluster
cloud
MQTT Protocol
Intel Edison
Intel Edison
Intel Edison
Raspberry Pi B+
- 46. Copyright © 2015 TIS Inc. All rights reserved.
Wasted energy of TVのプロトコルスタック
Wasted energy of TVは、以下のようなプロトコルスタックで動作
している。
46
Layer1: Physical
Layer2: Data Link
Layer3: Network
Layer4: Transport
Layer5: Session
Layer6: Presentation
Layer7: Application
MAC
LLC
IEEE 802.2
IP(v4、v6)、ICMP
RIP、OSPF等
IEEE 802.3
Ethernet
IEEE 802.11
Wireless
LAN
(Infrastructure)
TCP、UDP、SCTP等
HTTP、FTP、SMTP等
OSI参照モデル 有線LAN 無線LAN
IEEE 802.2
IP(v4とv6)
B.A.T.M.A.N.-adv
IEEE 802.11
Wireless LAN
(ad-hoc)
TCP
MQTT
HTTP
Gossip
一般的なプロトコルスタック 今回利用したプロトコルスタック
クラウドとの通信
ConsulのREST API操作
ConsulのNode間通信
メッシュネットワーク用
ルーティングプロトコル
の一種
Consulについては
15:15~17:00に
H40でハンズオンが
行われます
- 47. Copyright © 2015 TIS Inc. All rights reserved.
メッシュネットワークとは
47
ノード間のデータや音声のルーティングの一種。故障などで使えなくなった経路が
発生しても継続的に接続・再構成を繰り返し、送信先に達するまでノードから
ノードへ転送を行う。
メッシュネットワークの最大の特徴は、各ノードがトラフィックを転送する
「ホップ (hop)」という動作をする点で、それによって各ノードから任意の
ノードへ接続する。
メッシュネットワークには自己修復性がある。1つのノードがダウンしたり、
1つの接続が不良となっても、ネットワーク全体は運用可能である。
結果として、非常に信頼性の高いネットワークとなる。
メッシュネットワーク(mesh network)
出展:ウィキペディア , https://ja.wikipedia.org/wiki/メッシュネットワーク
Ad-hocなWi-Fi上でメッシュネットワークを動作させれば
各IoTデバイスがパケットをバケツリレーしてくれるため、
電波が直接届かないIoTデバイスとも通信が可能となる。
- 48. Copyright © 2015 TIS Inc. All rights reserved.
Wi-Fiメッシュネットワークのメリット
普通のWi-Fiチップが利用できる。
Edisonに内蔵されているWi-Fiだけで利用できる。
IPスタックが利用できる。
Zigbee等のセンサーネットワーク規格とは異なり、IPスタック用
に作られたミドルウェアやノウハウをそのまま利用できる。
Wi-Fiアクセスポイントの設置が必要ない。
電波が届く距離に別のIoTデバイスがあれば、バケツリレーです
べてのIoTデバイスと連携することができる。
ネットワーク的な単一障害点が無いように実装できる。
メッシュネットワークとクラスタのヘルスチェック機構を連携さ
せることで、ネットワーク的な単一障害点を無くすことができる。
48
- 49. Copyright © 2015 TIS Inc. All rights reserved.
Wi-Fiメッシュネットワークのデメリット
Edisonのデフォルトカーネルでは利用できない。
カーネルの再構築が必要な場合がある。
http://qiita.com/nmatsui/items/cb7020929654a128cf84 を参
照
IoTデバイスの電力を消費する。
IoTデバイスは通常、無線通信をしていないときは無線モジュー
ルへの給電を停止するが、メッシュネットワークがパケットをバ
ケツリレーしなければならないため、常時電力を消費してしまう。
障害時のメンテナンスが大変。
IoTデバイスクラスタ内でのパケット経路が静的に特定できない
ので、何かあった場合に追跡するのが大変。
メッシュルーティングプロトコルは研究余地が多い。
通常のルーティングよりも帯域をうまく活用できない(らしい)。49
- 50. Copyright © 2015 TIS Inc. All rights reserved.
これからのIoTのプロトコルスタック
電力消費を極力押さえ、かつメッシュネットワークを実現する以下の
ようなプロトコルが着目されている。
50
Layer1: Physical
Layer2: Data Link
Layer3: Network
Layer4: Transport
Layer5: Session
Layer6: Presentation
Layer7: Application
MAC
LLC
OSI参照モデル
IEEE 802.2
IP(v4とv6)
B.A.T.M.A.N.-adv
IEEE 802.11
Wireless LAN
(ad-hoc)
TCP
MQTT
HTTP
Gossip
今回利用したプロトコルスタック
6LowPAN [2]
RPL [3]
IEEE 802.15.4 [1]
WPAN
TCP、UDP
HTTP、CoAP等
低消費電力なプロトコルスタック
[1] IEEE 802.15.4 : Zigbeeなどで利用されている近距離無線通信規格。伝送速度は速くないが消費電力が少ない
[2] 6LowPAN(IPv6 over Low power Wireless Personal Area Networks):IETFが策定中のIPv6を用いる低消費電力の無線技術
[3] RPL(IPv6 Routing Protocol for Low power and Lossy Networks):IETFが策定中のIPv6上でマルチホップルーティングを実現する技術
- 51. Copyright © 2015 TIS Inc. All rights reserved.
Consulとは
Hashicorp社が提供するオーケストレーションツール
運用の自律化に有用な多数の機能を提供
ノードやサービスの死活管理
障害や環境構成の変化、外部から発火させたイベント等に応じた
処理の自動実行
分散KVSや分散DNSなど
単一障害点が無く、リーダーノードがダウンした場合は生存して
いるノードが自動的に処理を引き継ぐ
Go言語で開発されており、OSを問わずどの環境でもバイナリを
一つ置くだけで実行可能なため、導入が簡単
2014年4月に提供開始
51
- 52. Copyright © 2015 TIS Inc. All rights reserved.
メッシュネットワークとConsulを併用するメリット
IoTデバイスへの導入が簡単
Go 1.4以上があれば、簡単に動作させることができる。
(Edisonであれば、x86 32bit用バイナリを置けば良いだけ)
IoTデバイスの障害時に、fogに自律的な対処を行わせることができる。
IoTデバイスに障害が起きた場合、生きている他のIoTデバイスが障
害を検知して、fogとして適切に動作するように自律的な対処を行
うことができる。
fog内での情報共有が簡単に行える。
Consul KVSを利用すれば、IoTデバイス間で簡単に情報共有できる。
fogへ到達するイベントに対するアクションを簡単に定義できる。
Consulのユーザーイベントを用いることで、適切なIoTデバイスが
自律的にイベントに対応することができる。
52
- 53. Copyright © 2015 TIS Inc. All rights reserved.
Consulを利用するライブラリ
プログラミング言語ごとにConsulを利用するライブラリが準備され
ているので、簡単に利用できる。
53
import consul
…
class ConsulWrapper(object):
FACEDETECT_KEY = "face_detected"
POWERDETECT_KEY = "power_detected"
LASTPOWERTIME_KEY = "last_power_time"
POWER_EVENT = "power"
def __init__(self):
self.c = consul.Consul()
self.errcount = 0
def kv_put(self, key, value):
def _f():
return self.c.kv.put(key, str(value))
self.__retry(_f)
def kv_get(self, key):
def _f():
return self.c.kv.get(key)
i, v = self.__retry(_f)
return v
def ev_fire(self, event):
def _f():
return self.c.event.fire(event)
self.__retry(_f)
def __retry(self, f):
# Consulに接続できなかった場合のリトライ処理
class WatchRatePublisher(object):
…
def __init__(self, bluemix):
self.consul = cw.ConsulWrapper()
def check_state(self):
while True:
face = self.consul.kv_get(cw.ConsulWrapper.FACEDETECT_KEY)
power = self.consul.kv_get(cw.ConsulWrapper.POWERDETECT_KEY)
class NotifySubscriber(object):
…
def __init__(self, bluemix):
self.consul = cw.ConsulWrapper()
def notify(self):
def callback(msg):
self.consul.ev_fire(cw.ConsulWrapper.POWER_EVENT)
self.bluemix.notify(NotifySubscriber.TOPIC, callback)
class FaceDetector(object):
…
def __init__(self, cascade_file_name):
self.consul = cw.ConsulWrapper()
def __notify_detect(self, num_of_faces):
if num_of_faces == 0:
self.consul.kv_put(cw.ConsulWrapper.FACEDETECT_KEY, False)
else:
self.consul.kv_put(cw.ConsulWrapper.FACEDETECT_KEY, True)
- 54. Copyright © 2015 TIS Inc. All rights reserved.
MQTTとは
54
A machine-to-machine (M2M)/"Internet of Things" connectivity protocol.
It was designed as an extremely lightweight publish/subscribe messaging transport.
It is useful for connections with remote locations where a small code footprint is
required and/or network bandwidth is at a premium.
MQTT
出展:MQTT.org, http://mqtt.org/
MQTT
Broker
MQTT
Client
publish(TOPIC)
message
MQTT
Client
subscribe(TOPIC)
message
delivery
MQTT
Client
subscribe(TOPIC)
message
delivery
- 55. Copyright © 2015 TIS Inc. All rights reserved.
MQTTを利用するメリット
ブローカーを仲立ちにしたpublish/subscribe型の
プロトコルのため、クライアント間を疎結合にできる。
ヘッダが小さく(固定長ヘッダは2バイト)プロトコル自体が軽いため、
小さなデータを大量に送る場合は効果が大きい。
クライアントが異常切断した場合、指定しておいた「Last Will &
Testament(遺言状)」メッセージが送られる。
クライアントから送ったメッセージのQoSを定義できる。
QoS0 At most once:ベストエフォート。消失や重複の可能性あり。
QoS1 At least once:必ず到着するが、重複の可能性あり。
QoS2 Exactly once:必ず1回到着することを保証。
クライアントが異常切断していた間のQoS1,2のメッセージを再配信
してくれる。
55
- 56. Copyright © 2015 TIS Inc. All rights reserved.
MQTTを利用するライブラリ
プログラミング言語ごとにMQTTを利用するライブラリが準備されて
いるので、簡単に利用できる。
56
import paho.mqtt.client as paho
class BluemixWrapper(object):
def __init__(self, conf):
self.mqttc = paho.Client(client_name)
self.mqttc.username_pw_set(USER, token)
def notify(self, topic, func):
def on_connect(client, userdata, flags, rc):
client.subscribe(topic)
def on_message(client, userdata, msg):
func(str(msg.payload))
self.mqttc.on_connect = on_connect
self.mqttc.on_message = on_message
def publish(self, topic, msg):
self.mqttc.publish(topic, msg)
def connect(self):
self.mqttc.connect(self.url, PORT, 60)
self.mqttc.loop_start()
class NotifySubscriber(object):
TOPIC = "iot-2/cmd/notify/fmt/json"
def __init__(self, bluemix):
self.bluemix = bluemix
def notify(self):
def callback(msg):
self.consul.ev_fire(cw.ConsulWrapper.POWER_EVENT)
self.bluemix.notify(NotifySubscriber.TOPIC, callback)
class WatchRatePublisher(object):
TOPIC = "iot-2/evt/status/fmt/json"
def __init__(self, bluemix):
self.bluemix = bluemix
def __publish(self, msg):
self.bluemix.publish(WatchRatePublisher.TOPIC, msg)
if __name__ == "__main__":
try:
bluemix = bw.BluemixWrapper(sys.argv[1])
NotifySubscriber(bluemix).notify()
bluemix.connect()
WatchRatePublisher(bluemix).check_state()
except KeyboardInterrupt as err:
print "watch_rate_publish end"
- 57. Copyright © 2015 TIS Inc. All rights reserved.
Agenda
1. IoT市場の急拡大
2. fog & cloud
3. Edison(とRaspberry Pi)を使ったIoTデバイスクラスタ
~Wasted energy of TV~
4. Wasted energy of TVの fog に関する技術要素
5. まとめ
57
- 58. Copyright © 2015 TIS Inc. All rights reserved.
まとめ
なんだかよくわからないけれど、今後「IoT」は流行るらしい。
「IoT」は明確に定義された言葉ではないが、「ヒトとモノをつない
で得られたデータを分析・学習し、現実世界にフィードバックするこ
とで新たな価値を生むもの」と捉えると良い(と思う)。
「IoT」のアーキテクチャを考える際には、fogとcloudの協調動作を
意識すると良い(と思う)。
fogにとって、メッシュネットワークやConsulクラスタは相性が良い
(電力消費まわりが解決できれば・・・)。
fogのセキュリティまわりは、まだ調査中。。。ご存知の方はいろい
ろと教えてくだい。
58
「IoT」関連技術は、無線技術からデータ分析・学習まで
多岐にわたり、今まさに発展している最中である。
だからこそ熱く面白い。
- 59. Copyright © 2015 TIS Inc. All rights reserved.
ソースコードなど
Wasted energy of TVのソースコードはgithubで公開中。
https://github.com/nmatsui/wasted_energy_of_tv_iot
https://github.com/nmatsui/wasted_energy_of_tv_gui
https://github.com/nmatsui/wasted_energy_of_tv_nodered
動画
https://youtu.be/RDPD21L8voM
環境構築手順と操作手順
https://github.com/nmatsui/wasted_energy_of_tv_iot/wiki
/docs/construction.pdf
https://github.com/nmatsui/wasted_energy_of_tv_iot/wiki
/docs/operation.pdf
59