Upload
nobuyuki-matsui
View
1.887
Download
0
Embed Size (px)
Citation preview
Copyright © 2015 TIS Inc. All rights reserved.
IoT 時代のデバイスクラスタ- Hashicorp consul を用いた Intel Edison クラスタの構成 -
2015 年 7 月 26 日
TIS 株式会社 戦略技術センター 松井暢之
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
Copyright © 2015 TIS Inc. All rights reserved. 3
Agenda
1. IoT 市場の急拡大
2. fog & cloud
3. Edison (と Raspberry Pi )を使った IoT デバイスクラスタ~ Wasted energy of TV ~
4. Wasted energy of TV の fog に関する技術要素
5. まとめ
Copyright © 2015 TIS Inc. All rights reserved. 4
そもそも「 IoT 」とはなんだ?
いま一歩イメージがわかない。結局「 IoT 」とは具体的に何だろう?
Question! by Stefan Baudy, on Flickr
一意に識別可能な「もの」がインターネット / クラウドに接続され、情報交換することにより相互に制御する仕組みである。
「 Internet of Everything 」や「 Smart Everything 」、「サービスのモノ化」ともいう。
モノのインターネット( Internet of Things 、 IoT )
出展:ウィキペディア , https://ja.wikipedia.org/wiki/ モノのインターネット
Copyright © 2015 TIS Inc. All rights reserved. 5
「 IoT 」市場の急拡大
なんだかよくわからないが、「 IoT 」市場は急拡大するようだ。
IoT 業界で生み出される収益の予測
2020 年には最大で 7 兆ドル( IDC )の収益が IoT 市場で生み出される
出展: IoT Analytics, "IoT Market – Forecasts at a glance“, 2014-10, http://iot-analytics.com/iot-market-forecasts-overview/
Copyright © 2015 TIS Inc. All rights reserved. 6
「 IoT 」市場の急拡大
なんだかよくわからないが、「 IoT 」市場は急拡大するようだ。
相互接続されるデバイス数の予測
2020 年には最大で 500 億個( Cisco や Ericsson )のデバイスが相互に接続される
出展: IoT Analytics, "IoT Market – Forecasts at a glance“, 2014-10, http://iot-analytics.com/iot-market-forecasts-overview/
Copyright © 2015 TIS Inc. All rights reserved. 7
「 IoT 」市場の急拡大
なんだかよくわからないが、「 IoT 」市場は急拡大するようだ。
接続されるデバイス数の内訳の予測
2018 年には、相互接続されるデバイスのうち半分程度は「 IoT 」( BI Intelligence )
出展: Business Insider, "THE INTERNET OF EVERYTHING: 2014 “, 2014-02, http://www.businessinsider.com.au/the-internet-of-everything-2014-slide-deck-sai-2014-2
Copyright © 2015 TIS Inc. All rights reserved. 8
デバイスが接続されていれば「 IoT 」なのだろうか?
「 M2M 」と「 IoT 」は同じ?違う?
Question! by Stefan Baudy, on Flickr
コンピュータネットワークに繋がれた機械同士が人間を介在せずに相互に情報交換し、自動的に最適な制御が行われるシステムを指す。
マシンツーマネジメント (Machine-to-Management) とも呼ばれる。
マシンツーマシン( Machine-to-Machine 、 M2M )
出展:ウィキペディア , https://ja.wikipedia.org/wiki/ マシンツーマシン
Copyright © 2015 TIS Inc. All rights reserved. 9
「 IoT 」とは(個人的見解)
個人的には「 IoT 」を以下のように捉えている。
ヒトやモノが相互連携して営まれる現実世界の活動を「データ」として映し出し、
様々な種類の「データ」を組み合わせて分析・学習し、
得られた知見を現実世界へフィードバックすることで、
現実世界の活動へ新たな価値を生み出すこと。
IoT とは現実世界
データ
分析・学習
現実世界へフィードバック
Copyright © 2015 TIS Inc. All rights reserved. 10
「 IoT 」とは(個人的見解)
個人的には「 IoT 」を以下のようには捉えていない。
モノをインターネットにつなげば IoT である?
つないだだけでは意味が無いし、ヒトやモノが相互に連携してデータを収集できるのであれば、すべてのモノを直接インターネットに接続しなくても良い。
IoT とはセンサーから得た情報を機械にフィードバックして無人運転することである?
センサーと機械をつないでフィードバックするだけではもったいない。ヒトの行動やソーシャルの情報など、センサーだけでは得られない様々なデータも組み合わせて新たな価値を提供することが肝心。
Copyright © 2015 TIS Inc. All rights reserved. 11
「 IoT 」と「 IoE 」
シスコは「人」「プロセス」「データ」「モノ」をつなぐことで新たな価値を生み出すことを、「 Internet of Everything 」と呼んでいる。
出展:第 15回 八子クラウド座談会 , シスコシステムズ合同会社 シスココンサルティングサービス シニアパートナー 八子知礼 , “ IoE ( Internet of Everything )元年 2014 ~新設シスココンサルティングサービスが創る新クラウドビジネス~“ , 2014-12, http://www.slideshare.net/tomokyun85/yako-presen-141213
Copyright © 2015 TIS Inc. All rights reserved. 12
「 IoT 」と「 IoE 」
モノの接続とデータ活用という「 IoT (狭義の IoT )」と、より広範囲に接続して価値を創造する「 IoE (広義の IoT )」( by シスコ)
出展:第 15回 八子クラウド座談会 , シスコシステムズ合同会社 シスココンサルティングサービス シニアパートナー 八子知礼 , “ IoE ( Internet of Everything )元年 2014 ~新設シスココンサルティングサービスが創る新クラウドビジネス~“ , 2014-12, http://www.slideshare.net/tomokyun85/yako-presen-141213
Copyright © 2015 TIS Inc. All rights reserved. 13
Agenda
1. IoT 市場の急拡大
2. fog & cloud
3. Edison (と Raspberry Pi )を使った IoT デバイスクラスタ~ Wasted energy of TV ~
4. Wasted energy of TV の fog に関する技術要素
5. まとめ
Copyright © 2015 TIS Inc. All rights reserved. 14
インターネットトラフィックの急拡大
グローバルな IP トラフィック量は年平均 23% で急拡大し、 2019年には 2014 年の 2.8倍となる 160EB/ 月と予測されている。
出展: 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
Copyright © 2015 TIS Inc. All rights reserved. 15
IoT のセキュリティリスク
現実世界に近い IoT がハッキングを受けると、直接的で深刻な被害が発生する可能性がある。例えば以下のような事例が報告されている。
シャワートイレを遠隔操作する Bluetooth アプリに脆弱性があるというセキュリティアドバイザリが公表された( 2013.08 )
ベビーモニターがクラックされ、子どもや夫婦に暴言を吐く男の声が聞こえた( 2013.08 )
テレビや冷蔵庫等のスマート家電がクラッキングを受け、大量の不正メールを送信する「 Thingbots 」化した( 2014.01 )
ハッキングコンテストで、動作中の電気自動車のドアやサンルーフを遠隔開閉できた( 2014.07 )
出展: 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/
Copyright © 2015 TIS Inc. All rights reserved. 16
fog computing
「 IoT 」全体の中で、ヒトやモノに近い場所(エッジ)で行う処理とクラウドで行う処理を分割し、それらが分散協調して動作する仕組み
fog computing の概念はシスコシステムズ発祥
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
Copyright © 2015 TIS Inc. All rights reserved. 17
fog の特徴と cloud との役割分担
雲の向こうの(多分土地と電気が安い)どこかにある cloud ではなく、 fog はヒトやモノに近い「その場」にある。
リアルタイム性が重要な処理は fog で行い、大量データの蓄積や分析・学習は cloud で行う。
fog の中だけで完結できる、完結すべき処理は fog で行い、帯域やセキュリティ的に必要なデータのみを cloud と送受信する。
広く点在し移動するヒトやモノが動的に fog に参加し、 cloud からのメンテナンスが無くても fog が自律的に最適動作する。
fog に参加するヒトやモノの死活状態や、 fog 内や cloud との通信の正当性を fog 自体が自律的にチェックし、不正なヒトやモノを排除する。
After the rain - 2 by Randi Hausken on Flickr
Copyright © 2015 TIS Inc. All rights reserved. 18
Agenda
1. IoT 市場の急拡大
2. fog & cloud
3. Edison (と Raspberry Pi )を使った IoT デバイスクラスタ~ Wasted energy of TV ~
4. Wasted energy of TV の fog に関する技術要素
5. まとめ
Copyright © 2015 TIS Inc. All rights reserved. 19
fog : Edison と Raspberry Pi を用いた IoT デバイスクラスタ
cloud : IBM Bluemix
fog と cloud のプロトタイプ ~ Wasted energy of TV ~
MongoDB
Intel Edison
Intel Edison
Intel Edison
Raspberry Pi B+
USBカメラ
Internet
赤外線リモコン IoT Foundation
Local Network
Wi-Fi Mesh Network
Internet GatewayInternet Gateway Network
fog
Node-RED アプリ
ConsulCluster赤外線センサー
赤外線 LED
Webブラウザ
テレビ
cloud
GUI アプリ
Copyright © 2015 TIS Inc. All rights reserved. 20
日常生活において「点いているけれど見ていないテレビ」に費やされている時間を可視化するアプリである。
カラーチャートによってテレビの視聴状態が可視化される。
赤色に近ければ近い時間ほど、集中してテレビを見ている
青色に近ければ近い時間ほど、テレビに視線を向けていない
灰色の時間は、テレビが点いていない
Wasted energy of TV とは
Copyright © 2015 TIS Inc. All rights reserved. 21
クラウドのデータ分析ロジックが「テレビは点いているけれど集中して見ていない」と判断すると、自動的にテレビが消える。
この機能は有効化 / 無効化することができる。
有効化した場合、テレビが ON かつテレビを見ていない状態が設定した時間(分)以上連続すると、自動的にテレビが OFF になる。
Wasted energy of TV とは
Copyright © 2015 TIS Inc. All rights reserved. 22
Wasted energy of TV の動作 テレビ試聴状況の送信
Copyright © 2015 TIS Inc. All rights reserved. 23
赤外線リモコンを用いてテレビを ON にする。
赤外線センサーがリモコンの赤外線パルスを傍受しテレビのON/OFF を捉える。
テレビ試聴状況の送信
赤外線リモコン
Local Network
Wi-Fi Mesh Network
ConsulCluster赤外線センサー
① 赤外線センサーがテレビの ON を認識する
② Consul KVS へテレビが ON であることを登録
テレビ
fog
cloud
Intel Edison
Raspberry Pi B+
Copyright © 2015 TIS Inc. All rights reserved. 24
テレビ試聴状況の送信
赤外線パルスを認識する赤外線センサーと、現在の認識状態を表示する LED (テレビが ON だと認識していると点灯)。
赤外線センサーテレビ ON/OFF認識表示 LED
Copyright © 2015 TIS Inc. All rights reserved. 25
テレビ試聴状況の送信
赤外線センサーがうまく認識できない場合に用いる、強制的にテレビの ON/OFF認識を変更するスイッチ。
強制スイッチ
Copyright © 2015 TIS Inc. All rights reserved. 26
テレビを見る。
USBカメラの画像を解析し、テレビに顔の正面が向いていれば「テレビを見ている」と判断。
テレビ試聴状況の送信
USBカメラ
Wi-Fi Mesh Network
ConsulCluster
② Consul KVS へテレビが見られていることを登録
① USBカメラの映像フレームを解析し、「正面の顔」の有無を認識する
テレビ
fog
cloud
Intel Edison
Copyright © 2015 TIS Inc. All rights reserved. 27
テレビ試聴状況の送信
テレビを見ているかを認識するための USBカメラ。顔認識を行うUSBカメラ
Copyright © 2015 TIS Inc. All rights reserved. 28
テレビ試聴状況の送信
現在テレビを見ているかを表示する LED (テレビを見ていると認識していると点灯)。
テレビの視聴状態認識表示 LED
Copyright © 2015 TIS Inc. All rights reserved. 29
現在の状態をクラウドへ送る。
定期的にテレビの ON/OFF をチェックし、テレビが点いていれば顔認識の情報をクラウドへ publish する。
IoT Foundation
テレビ試聴状況の送信
Internet
Wi-Fi Mesh Network
Internet GatewayInternet Gateway Network
ConsulCluster
② テレビが ON であれば、正面顔の認識状態を MQTT で publish する
① Consul KVS からテレビの ON/OFFと正面顔の認識状態を取得する
③ IoT デバイスクラスタからの publishされた情報を subscribe する
fog
cloud
Intel Edison
Copyright © 2015 TIS Inc. All rights reserved. 30
テレビ試聴状況の送信
現在データを送信中かを表示する LED (データ送信中は点滅)。
データ送信表示 LED
Copyright © 2015 TIS Inc. All rights reserved. 31
IoT デバイスクラスタから受信した情報を蓄積する。
IoT Foundation が subscribe した情報を MongoDB に蓄積する。
MongoDB
IoT Foundation
Node-RED アプリ
テレビ試聴状況の送信
② IoT Foundation から送られてた情報を MongoDB に蓄積する
① subscribe した情報を Node-REDアプリへ転送する
fog
cloud
Copyright © 2015 TIS Inc. All rights reserved. 32
テレビ試聴状況の送信
Wasted energy of TV の IoT デバイスクラスタの動画
https://youtu.be/RDPD21L8voM
Copyright © 2015 TIS Inc. All rights reserved. 33
Wasted energy of TV の動作 テレビ試聴状況の可視化
Copyright © 2015 TIS Inc. All rights reserved. 34
テレビの視聴状況を可視化する。
ブラウザから GUI アプリにアクセスし、指定した日付のテレビ視聴状況を可視化する。
テレビ試聴状況の可視化
IBM Bluemix
MongoDB
Node-RED アプリ
GUI アプリ
Webブラウザ
① GUI アプリの Nginx からHTML や JS等を取得
② AJAX を用いて Node-REDアプリの REST API から情報取得
fog
cloud
Copyright © 2015 TIS Inc. All rights reserved. 35
テレビ試聴状況の可視化
テレビの視聴状況を可視化する。
http://wasted-energy-of-tv-gui.mybluemix.net/
赤色に近ければ近いほど、集中してテレビを見ている。
青色に近ければ近いほど、テレビに視線を向けていない。
灰色はテレビが点いていない。
集中してテレビを見ている
ほとんどテレビを見ていない
テレビを見たり見なかったり
テレビが点いてない
Copyright © 2015 TIS Inc. All rights reserved. 36
Wasted energy of TV の動作 テレビ自動 OFF
Copyright © 2015 TIS Inc. All rights reserved. 37
テレビ自動 OFF を登録する。
ブラウザから GUI アプリにアクセスし、テレビの自動 OFF を登録する。
テレビ自動 OFF
IBM Bluemix
MongoDB
Node-RED アプリ
GUI アプリ
Webブラウザ
① AJAX を用いて Node-REDアプリの REST API から登録
fog
cloud
Copyright © 2015 TIS Inc. All rights reserved. 38
テレビ自動 OFF
テレビ自動 OFF を登録する。
「 Change 」リンクをクリックすると、テレビ自動 OFF 機能の登録画面が表示される。
初期値として現在の登録状況が設定されている。
Copyright © 2015 TIS Inc. All rights reserved. 39
テレビ自動 OFF
テレビ自動 OFF を登録する。
テレビ自動 OFF を無効化する場合、トグルボタンを OFF にする。
テレビ自動 OFF を有効化する場合、トグルボタンを ON にして、
テキストボックスに自動 OFF になるまでの時間(分)を入力する。
Copyright © 2015 TIS Inc. All rights reserved. 40
テレビが自動で消える。
テレビ自動 OFF が有効の場合、テレビが点いており、かつ設定された時間連続してテレビを見てないと、 cloudからイベントが送出される。
テレビ自動 OFF
MongoDB
Node-RED アプリ
IoT Foundation
① MongoDB に蓄積されている情報を定期的にチェック
② テレビが点いているのに、設定された時間連続してテレビを見ていなければ、IoT Foundation へイベントを送出を依頼
fog
cloud
Copyright © 2015 TIS Inc. All rights reserved. 41
テレビが自動で消える。
IoT デバイスクラスタがイベントを受信すると、赤外線 LED から赤外線パルスが照射され、テレビが自動的にOFF になる。
テレビ自動 OFF
Internet
IoT Foundation
Internet Gateway
テレビ
Local Network
Wi-Fi Mesh Network
Internet Gateway Network
ConsulCluster
赤外線 LED
① MQTT で subscribe しているイベントの受信を検知
② Consul Cluster へイベントを発火
③ watch しているイベントが発生したことを検知
④ 赤外線 LED から登録済みの赤外線パルスを発信
fog
cloud
Intel Edison
Intel Edison
Raspberry Pi B+
Copyright © 2015 TIS Inc. All rights reserved. 42
「テレビを見る」というヒトとモノの相互作用を fog でデータ化し、cloud で分析して現実世界へフィードバックすることで、次のような価値が生まれる。
テレビを見ていたつもりでもテレビに集中しておらず、無駄に費やしてしまった時間に気づくことで、生活にメリハリがつく。
集中してテレビを見ていないならばテレビが消えてしまうため、家庭での無駄な電力消費を削減できる。
Wasted energy of TV が生み出す価値
Psssst!! I'm watching you... by ..::Fluckr You::.. on Flickr
Copyright © 2015 TIS Inc. All rights reserved. 43
現在の Wasted energy of TV の課題
セキュリティが全く考慮されていない!
GUI に認証認可を付けていないため、現時点では私の部屋のテレビを誰でも自動 OFF にできます。。。(笑
fog と cloud 間で送受信される MQTTパケットも、ユーザ認証はしているものの平文なので盗聴・詐称し放題。。。
cloud でのデータ分析が甘い!
過去の同じ曜日の視聴データ、同じ日の視聴データ、などを分析学習すれば、「テレビを点けたようですが、どうせあなた、今の時間はテレビ見てないでしょ?」と cloud が言ってくれたり?
複数人での利用は考慮されていない!
似たような傾向の人がテレビを見ていれば、「あなたこの番組、好きそうですよね」と cloud が点けてくれたり?
Copyright © 2015 TIS Inc. All rights reserved. 44
Agenda
1. IoT 市場の急拡大
2. fog & cloud
3. Edison (と Raspberry Pi )を使った IoT デバイスクラスタ~ Wasted energy of TV ~
4. Wasted energy of TV の fog に関する技術要素
5. まとめ
Copyright © 2015 TIS Inc. All rights reserved. 45
Wi-Fi メッシュネットワーク
Consul クラスタ
MQTT プロトコル
Wasted energy of TV の fog に関する技術要素
Internet
IoT FoundationWi-Fi Mesh Network
Internet Gateway
fog
ConsulCluster
cloud
MQTT Protocol
Intel Edison
Intel Edison
Intel Edison
Raspberry Pi B+
Copyright © 2015 TIS Inc. All rights reserved. 46
Wasted energy of TV のプロトコルスタック
Wasted energy of TV は、以下のようなプロトコルスタックで動作している。
Layer1: Physical
Layer2: Data Link
Layer3: Network
Layer4: Transport
Layer5: Session
Layer6: Presentation
Layer7: Application
MAC
LLCIEEE 802.2
IP ( v4 、 v6 )、 ICMPRIP 、 OSPF等
IEEE 802.3Ethernet
IEEE 802.11Wireless
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.11Wireless LAN
(ad-hoc)
TCP
MQTTHTTP
Gossip
一般的なプロトコルスタック 今回利用したプロトコルスタック
クラウドとの通信
Consul の REST API操作
Consul の Node 間通信
メッシュネットワーク用ルーティングプロトコルの一種
Consul については15:15 ~ 17:00 に
H40 でハンズオンが行われます
Copyright © 2015 TIS Inc. All rights reserved. 47
メッシュネットワークとは
ノード間のデータや音声のルーティングの一種。故障などで使えなくなった経路が発生しても継続的に接続・再構成を繰り返し、送信先に達するまでノードからノードへ転送を行う。
メッシュネットワークの最大の特徴は、各ノードがトラフィックを転送する「ホップ (hop) 」という動作をする点で、それによって各ノードから任意のノードへ接続する。
メッシュネットワークには自己修復性がある。 1 つのノードがダウンしたり、1 つの接続が不良となっても、ネットワーク全体は運用可能である。結果として、非常に信頼性の高いネットワークとなる。
メッシュネットワーク( mesh network )
出展:ウィキペディア , https://ja.wikipedia.org/wiki/ メッシュネットワーク
Ad-hoc な Wi-Fi 上でメッシュネットワークを動作させれば各 IoT デバイスがパケットをバケツリレーしてくれるため、電波が直接届かない IoT デバイスとも通信が可能となる。
Copyright © 2015 TIS Inc. All rights reserved. 48
Wi-Fi メッシュネットワークのメリット
普通の Wi-Fiチップが利用できる。
Edison に内蔵されている Wi-Fi だけで利用できる。
IP スタックが利用できる。
Zigbee等のセンサーネットワーク規格とは異なり、 IP スタック用に作られたミドルウェアやノウハウをそのまま利用できる。
Wi-Fi アクセスポイントの設置が必要ない。
電波が届く距離に別の IoT デバイスがあれば、バケツリレーですべての IoT デバイスと連携することができる。
ネットワーク的な単一障害点が無いように実装できる。
メッシュネットワークとクラスタのヘルスチェック機構を連携させることで、ネットワーク的な単一障害点を無くすことができる。
Copyright © 2015 TIS Inc. All rights reserved. 49
Wi-Fi メッシュネットワークのデメリット
Edison のデフォルトカーネルでは利用できない。
カーネルの再構築が必要な場合がある。
http://qiita.com/nmatsui/items/cb7020929654a128cf84 を参照
IoT デバイスの電力を消費する。
IoT デバイスは通常、無線通信をしていないときは無線モジュールへの給電を停止するが、メッシュネットワークがパケットをバケツリレーしなければならないため、常時電力を消費してしまう。
障害時のメンテナンスが大変。
IoT デバイスクラスタ内でのパケット経路が静的に特定できないので、何かあった場合に追跡するのが大変。
メッシュルーティングプロトコルは研究余地が多い。
通常のルーティングよりも帯域をうまく活用できない(らしい)。
Copyright © 2015 TIS Inc. All rights reserved. 50
これからの IoT のプロトコルスタック
電力消費を極力押さえ、かつメッシュネットワークを実現する以下のようなプロトコルが着目されている。
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.11Wireless LAN
(ad-hoc)
TCP
MQTTHTTP
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 上でマルチホップルーティングを実現する技術
Copyright © 2015 TIS Inc. All rights reserved. 51
Consul とは
Hashicorp 社が提供するオーケストレーションツール
運用の自律化に有用な多数の機能を提供
ノードやサービスの死活管理
障害や環境構成の変化、外部から発火させたイベント等に応じた処理の自動実行
分散 KVS や分散 DNS など
単一障害点が無く、リーダーノードがダウンした場合は生存しているノードが自動的に処理を引き継ぐ
Go言語で開発されており、 OS を問わずどの環境でもバイナリを一つ置くだけで実行可能なため、導入が簡単
2014 年 4 月に提供開始
Copyright © 2015 TIS Inc. All rights reserved. 52
メッシュネットワークと Consul を併用するメリット
IoT デバイスへの導入が簡単
Go 1.4 以上があれば、簡単に動作させることができる。( Edison であれば、 x86 32bit 用バイナリを置けば良いだけ)
IoT デバイスの障害時に、 fog に自律的な対処を行わせることができる。
IoT デバイスに障害が起きた場合、生きている他の IoT デバイスが障害を検知して、 fog として適切に動作するように自律的な対処を行うことができる。
fog 内での情報共有が簡単に行える。
Consul KVS を利用すれば、 IoT デバイス間で簡単に情報共有できる。
fog へ到達するイベントに対するアクションを簡単に定義できる。
Consul のユーザーイベントを用いることで、適切な IoT デバイスが自律的にイベントに対応することができる。
Copyright © 2015 TIS Inc. All rights reserved. 53
Consul を利用するライブラリ
プログラミング言語ごとに Consul を利用するライブラリが準備されているので、簡単に利用できる。
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)
Copyright © 2015 TIS Inc. All rights reserved. 54
MQTT とは
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/
MQTTBroker
MQTTClient
publish(TOPIC)
message
MQTTClient
subscribe(TOPIC)
message
delivery
MQTTClient
subscribe(TOPIC)
message
delivery
Copyright © 2015 TIS Inc. All rights reserved. 55
MQTT を利用するメリット
ブローカーを仲立ちにした publish/subscribe型のプロトコルのため、クライアント間を疎結合にできる。
ヘッダが小さく(固定長ヘッダは 2 バイト)プロトコル自体が軽いため、小さなデータを大量に送る場合は効果が大きい。
クライアントが異常切断した場合、指定しておいた「 Last Will & Testament (遺言状)」メッセージが送られる。
クライアントから送ったメッセージの QoS を定義できる。
QoS0 At most once :ベストエフォート。消失や重複の可能性あり。
QoS1 At least once :必ず到着するが、重複の可能性あり。
QoS2 Exactly once :必ず 1回到着することを保証。
クライアントが異常切断していた間の QoS1,2 のメッセージを再配信してくれる。
Copyright © 2015 TIS Inc. All rights reserved. 56
MQTT を利用するライブラリ
プログラミング言語ごとに MQTT を利用するライブラリが準備されているので、簡単に利用できる。
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"
Copyright © 2015 TIS Inc. All rights reserved. 57
Agenda
1. IoT 市場の急拡大
2. fog & cloud
3. Edison (と Raspberry Pi )を使った IoT デバイスクラスタ~ Wasted energy of TV ~
4. Wasted energy of TV の fog に関する技術要素
5. まとめ
Copyright © 2015 TIS Inc. All rights reserved. 58
まとめ
なんだかよくわからないけれど、今後「 IoT 」は流行るらしい。
「 IoT 」は明確に定義された言葉ではないが、「ヒトとモノをつないで得られたデータを分析・学習し、現実世界にフィードバックすることで新たな価値を生むもの」と捉えると良い(と思う)。
「 IoT 」のアーキテクチャを考える際には、 fog と cloud の協調動作を意識すると良い(と思う)。
fog にとって、メッシュネットワークや Consul クラスタは相性が良い(電力消費まわりが解決できれば・・・)。
fog のセキュリティまわりは、まだ調査中。。。ご存知の方はいろいろと教えてくだい。
「 IoT 」関連技術は、無線技術からデータ分析・学習まで多岐にわたり、今まさに発展している最中である。
だからこそ熱く面白い。
Copyright © 2015 TIS Inc. All rights reserved. 59
ソースコードなど
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