60
Copyright © 2015 TIS Inc. All rights reserved. IoT 時時時時時時時時時時時 - Hashicorp consul 時時時時 Intel Edison 時時時時時時時 - 2015 時 7 時 26 時 TIS 時時時時 時時時時時時時時 時時時時

Jtf2015 edison consul_cluster

Embed Size (px)

Citation preview

Page 1: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved.

IoT 時代のデバイスクラスタ- Hashicorp consul を用いた Intel Edison クラスタの構成 -

2015 年 7 月 26 日

TIS 株式会社 戦略技術センター 松井暢之

Page 2: Jtf2015 edison consul_cluster

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

Page 3: Jtf2015 edison consul_cluster

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. まとめ

Page 4: Jtf2015 edison consul_cluster

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/ モノのインターネット

Page 5: Jtf2015 edison consul_cluster

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/

Page 6: Jtf2015 edison consul_cluster

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/

Page 7: Jtf2015 edison consul_cluster

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

Page 8: Jtf2015 edison consul_cluster

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/ マシンツーマシン

Page 9: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 9

「 IoT 」とは(個人的見解)

個人的には「 IoT 」を以下のように捉えている。

ヒトやモノが相互連携して営まれる現実世界の活動を「データ」として映し出し、

様々な種類の「データ」を組み合わせて分析・学習し、

得られた知見を現実世界へフィードバックすることで、

現実世界の活動へ新たな価値を生み出すこと。

IoT とは現実世界

データ

分析・学習

現実世界へフィードバック

Page 10: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 10

「 IoT 」とは(個人的見解)

個人的には「 IoT 」を以下のようには捉えていない。

モノをインターネットにつなげば IoT である?

つないだだけでは意味が無いし、ヒトやモノが相互に連携してデータを収集できるのであれば、すべてのモノを直接インターネットに接続しなくても良い。

IoT とはセンサーから得た情報を機械にフィードバックして無人運転することである?

センサーと機械をつないでフィードバックするだけではもったいない。ヒトの行動やソーシャルの情報など、センサーだけでは得られない様々なデータも組み合わせて新たな価値を提供することが肝心。

Page 11: Jtf2015 edison consul_cluster

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

Page 12: Jtf2015 edison consul_cluster

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

Page 13: Jtf2015 edison consul_cluster

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. まとめ

Page 14: Jtf2015 edison consul_cluster

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

Page 15: Jtf2015 edison consul_cluster

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/

Page 16: Jtf2015 edison consul_cluster

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

Page 17: Jtf2015 edison consul_cluster

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

Page 18: Jtf2015 edison consul_cluster

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. まとめ

Page 19: Jtf2015 edison consul_cluster

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 アプリ

Page 20: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 20

日常生活において「点いているけれど見ていないテレビ」に費やされている時間を可視化するアプリである。

カラーチャートによってテレビの視聴状態が可視化される。

赤色に近ければ近い時間ほど、集中してテレビを見ている

青色に近ければ近い時間ほど、テレビに視線を向けていない

灰色の時間は、テレビが点いていない

Wasted energy of TV とは

Page 21: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 21

クラウドのデータ分析ロジックが「テレビは点いているけれど集中して見ていない」と判断すると、自動的にテレビが消える。

この機能は有効化 / 無効化することができる。

有効化した場合、テレビが ON かつテレビを見ていない状態が設定した時間(分)以上連続すると、自動的にテレビが OFF になる。

Wasted energy of TV とは

Page 22: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 22

Wasted energy of TV の動作 テレビ試聴状況の送信

Page 23: Jtf2015 edison consul_cluster

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+

Page 24: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 24

テレビ試聴状況の送信

赤外線パルスを認識する赤外線センサーと、現在の認識状態を表示する LED (テレビが ON だと認識していると点灯)。

赤外線センサーテレビ ON/OFF認識表示 LED

Page 25: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 25

テレビ試聴状況の送信

赤外線センサーがうまく認識できない場合に用いる、強制的にテレビの ON/OFF認識を変更するスイッチ。

強制スイッチ

Page 26: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 26

テレビを見る。

USBカメラの画像を解析し、テレビに顔の正面が向いていれば「テレビを見ている」と判断。

テレビ試聴状況の送信

USBカメラ

Wi-Fi Mesh Network

ConsulCluster

②  Consul KVS へテレビが見られていることを登録

①  USBカメラの映像フレームを解析し、「正面の顔」の有無を認識する

テレビ

fog

cloud

Intel Edison

Page 27: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 27

テレビ試聴状況の送信

テレビを見ているかを認識するための USBカメラ。顔認識を行うUSBカメラ

Page 28: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 28

テレビ試聴状況の送信

現在テレビを見ているかを表示する LED (テレビを見ていると認識していると点灯)。

テレビの視聴状態認識表示 LED

Page 29: Jtf2015 edison consul_cluster

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

Page 30: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 30

テレビ試聴状況の送信

現在データを送信中かを表示する LED (データ送信中は点滅)。

データ送信表示 LED

Page 31: Jtf2015 edison consul_cluster

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

Page 32: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 32

テレビ試聴状況の送信

Wasted energy of TV の IoT デバイスクラスタの動画

https://youtu.be/RDPD21L8voM

Page 33: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 33

Wasted energy of TV の動作 テレビ試聴状況の可視化

Page 34: Jtf2015 edison consul_cluster

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

Page 35: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 35

テレビ試聴状況の可視化

テレビの視聴状況を可視化する。

http://wasted-energy-of-tv-gui.mybluemix.net/

赤色に近ければ近いほど、集中してテレビを見ている。

青色に近ければ近いほど、テレビに視線を向けていない。

灰色はテレビが点いていない。

集中してテレビを見ている

ほとんどテレビを見ていない

テレビを見たり見なかったり

テレビが点いてない

Page 36: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 36

Wasted energy of TV の動作 テレビ自動 OFF

Page 37: Jtf2015 edison consul_cluster

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

Page 38: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 38

テレビ自動 OFF

テレビ自動 OFF を登録する。

「 Change 」リンクをクリックすると、テレビ自動 OFF 機能の登録画面が表示される。

初期値として現在の登録状況が設定されている。

Page 39: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 39

テレビ自動 OFF

テレビ自動 OFF を登録する。

テレビ自動 OFF を無効化する場合、トグルボタンを OFF にする。

テレビ自動 OFF を有効化する場合、トグルボタンを ON にして、

テキストボックスに自動 OFF になるまでの時間(分)を入力する。

Page 40: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 40

テレビが自動で消える。

テレビ自動 OFF が有効の場合、テレビが点いており、かつ設定された時間連続してテレビを見てないと、 cloudからイベントが送出される。

テレビ自動 OFF

MongoDB

Node-RED アプリ

IoT Foundation

①  MongoDB に蓄積されている情報を定期的にチェック

② テレビが点いているのに、設定された時間連続してテレビを見ていなければ、IoT Foundation へイベントを送出を依頼

fog

cloud

Page 41: Jtf2015 edison consul_cluster

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+

Page 42: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 42

「テレビを見る」というヒトとモノの相互作用を fog でデータ化し、cloud で分析して現実世界へフィードバックすることで、次のような価値が生まれる。

テレビを見ていたつもりでもテレビに集中しておらず、無駄に費やしてしまった時間に気づくことで、生活にメリハリがつく。

集中してテレビを見ていないならばテレビが消えてしまうため、家庭での無駄な電力消費を削減できる。

Wasted energy of TV が生み出す価値

Psssst!! I'm watching you... by ..::Fluckr You::.. on Flickr

Page 43: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 43

現在の Wasted energy of TV の課題

セキュリティが全く考慮されていない!

GUI に認証認可を付けていないため、現時点では私の部屋のテレビを誰でも自動 OFF にできます。。。(笑

fog と cloud 間で送受信される MQTTパケットも、ユーザ認証はしているものの平文なので盗聴・詐称し放題。。。

cloud でのデータ分析が甘い!

過去の同じ曜日の視聴データ、同じ日の視聴データ、などを分析学習すれば、「テレビを点けたようですが、どうせあなた、今の時間はテレビ見てないでしょ?」と cloud が言ってくれたり?

複数人での利用は考慮されていない!

似たような傾向の人がテレビを見ていれば、「あなたこの番組、好きそうですよね」と cloud が点けてくれたり?

Page 44: Jtf2015 edison consul_cluster

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. まとめ

Page 45: Jtf2015 edison consul_cluster

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+

Page 46: Jtf2015 edison consul_cluster

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 でハンズオンが行われます

Page 47: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 47

メッシュネットワークとは

ノード間のデータや音声のルーティングの一種。故障などで使えなくなった経路が発生しても継続的に接続・再構成を繰り返し、送信先に達するまでノードからノードへ転送を行う。

メッシュネットワークの最大の特徴は、各ノードがトラフィックを転送する「ホップ (hop) 」という動作をする点で、それによって各ノードから任意のノードへ接続する。

メッシュネットワークには自己修復性がある。 1 つのノードがダウンしたり、1 つの接続が不良となっても、ネットワーク全体は運用可能である。結果として、非常に信頼性の高いネットワークとなる。

メッシュネットワーク( mesh network )

出展:ウィキペディア , https://ja.wikipedia.org/wiki/ メッシュネットワーク

Ad-hoc な Wi-Fi 上でメッシュネットワークを動作させれば各 IoT デバイスがパケットをバケツリレーしてくれるため、電波が直接届かない IoT デバイスとも通信が可能となる。

Page 48: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 48

Wi-Fi メッシュネットワークのメリット

普通の Wi-Fiチップが利用できる。

Edison に内蔵されている Wi-Fi だけで利用できる。

IP スタックが利用できる。

Zigbee等のセンサーネットワーク規格とは異なり、 IP スタック用に作られたミドルウェアやノウハウをそのまま利用できる。

Wi-Fi アクセスポイントの設置が必要ない。

電波が届く距離に別の IoT デバイスがあれば、バケツリレーですべての IoT デバイスと連携することができる。

ネットワーク的な単一障害点が無いように実装できる。

メッシュネットワークとクラスタのヘルスチェック機構を連携させることで、ネットワーク的な単一障害点を無くすことができる。

Page 49: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 49

Wi-Fi メッシュネットワークのデメリット

Edison のデフォルトカーネルでは利用できない。

カーネルの再構築が必要な場合がある。

http://qiita.com/nmatsui/items/cb7020929654a128cf84 を参照

IoT デバイスの電力を消費する。

IoT デバイスは通常、無線通信をしていないときは無線モジュールへの給電を停止するが、メッシュネットワークがパケットをバケツリレーしなければならないため、常時電力を消費してしまう。

障害時のメンテナンスが大変。

IoT デバイスクラスタ内でのパケット経路が静的に特定できないので、何かあった場合に追跡するのが大変。

メッシュルーティングプロトコルは研究余地が多い。

通常のルーティングよりも帯域をうまく活用できない(らしい)。

Page 50: Jtf2015 edison consul_cluster

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 上でマルチホップルーティングを実現する技術

Page 51: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 51

Consul とは

Hashicorp 社が提供するオーケストレーションツール

運用の自律化に有用な多数の機能を提供

ノードやサービスの死活管理

障害や環境構成の変化、外部から発火させたイベント等に応じた処理の自動実行

分散 KVS や分散 DNS など

単一障害点が無く、リーダーノードがダウンした場合は生存しているノードが自動的に処理を引き継ぐ

Go言語で開発されており、 OS を問わずどの環境でもバイナリを一つ置くだけで実行可能なため、導入が簡単

2014 年 4 月に提供開始

Page 52: Jtf2015 edison consul_cluster

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 デバイスが自律的にイベントに対応することができる。

Page 53: Jtf2015 edison consul_cluster

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)

Page 54: Jtf2015 edison consul_cluster

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

Page 55: Jtf2015 edison consul_cluster

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 のメッセージを再配信してくれる。

Page 56: Jtf2015 edison consul_cluster

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"

Page 57: Jtf2015 edison consul_cluster

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. まとめ

Page 58: Jtf2015 edison consul_cluster

Copyright © 2015 TIS Inc. All rights reserved. 58

まとめ

なんだかよくわからないけれど、今後「 IoT 」は流行るらしい。

「 IoT 」は明確に定義された言葉ではないが、「ヒトとモノをつないで得られたデータを分析・学習し、現実世界にフィードバックすることで新たな価値を生むもの」と捉えると良い(と思う)。

「 IoT 」のアーキテクチャを考える際には、 fog と cloud の協調動作を意識すると良い(と思う)。

fog にとって、メッシュネットワークや Consul クラスタは相性が良い(電力消費まわりが解決できれば・・・)。

fog のセキュリティまわりは、まだ調査中。。。ご存知の方はいろいろと教えてくだい。

「 IoT 」関連技術は、無線技術からデータ分析・学習まで多岐にわたり、今まさに発展している最中である。

だからこそ熱く面白い。

Page 59: Jtf2015 edison consul_cluster

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

Page 60: Jtf2015 edison consul_cluster