SlideShare a Scribd company logo
Bot Computing and its Application
to Solve Minimal Path Problems
山之上卓
福山大学
IPSJ 第122 回プログラミング研究会, 1/18, 2019@福山市ものづくり交流館セミナールーム
内容
• はじめに
• Bot Computingの概要
• 実験的な実装
• 最小経路問題への応用
• 関連研究
• おわりに
#ipsjpro
1. はじめに
• (悪性) Botnet はしぶとい(耐障害性がある)
– 少々のBotをつぶしても、Botnet全体としては継続して悪いことを
する
• (悪性) Botnet は強い(超並列性がある)
– (攻撃を受ける側が)かなり太いネットワーク、負荷分散してても、
DDoS攻撃等で業務妨害する。
– かなり多くのメアドに、Spam メールをばらまく
1. はじめに
• Botnetの耐障害性、超並列性を利用できたら、役立つかも。
#ipsjpro
1. はじめに
WikiWiki
Wiki Wiki
Wiki Wiki
Wiki Wiki
• Wiki … 人にやさしい
• Wiki … マシンにもやさしいはず
• 人と機械のためのWiki
• 自動的なデータ交換のためのWiki
1. はじめに
• ここで扱うBot
– Wiki上のコマンドで遠隔操作可能なマシン
#ipsjpro
2. Botコンピューティングの概要
2.1 Botコンピューティングとは
• ここでのBot
– 遠隔操作コンピュータまたは遠隔操作プログラム
• Bot コンピューティング
– Botによるコンピューティング
– 並列計算
2. Botコンピューティングの概要
2.2 Wiki ページ型計算
• ノイマン型コンピュータ
– プログラムもデータもメモリ上にある
• Wikiページ型計算 (新?)
– プログラムもデータも Wikiページ上にある
• Wikiページ型並列計算(新?)
– Wikiページ型プログラミングで SPMD型並列プログラミング
2. Botコンピューティングの概要
2.2 Wiki ページ型計算
• Wikiページ型並列計算
– SPMD …. Single Program, Multiple Data
– 個々のBotは従来型の逐次プログラムの実行
– 全体としては, データフロー型並列処理
2. Botコンピューティングの概要
2.3 協調計算
• Wikiネットワークは共同作業のためによく利用
– 従来のWikiページの多くは静的
で人が更新
– Wiki ネットワークに動的性質
を加えて、共同作業を強化
#ipsjpro
2. Botコンピューティングの概要
2.4 Botの振る舞い
2. Botコンピューティングの概要
2.5 ClassページとObjectページ
• Botコンピューティングは
オブジェクト指向コンピューティング
• ObjectはWikiページ(Objectページ)
とBotのペア
• Classページは複数のObjectページで共有
可能なWikiページ
– include コマンド
– 無駄な記述の削減, SPMD
• Over-riding も OK
– プログラミング言語は内部はLisp
2. Botコンピューティングの概要
2.6 高可用性(HA)
• 悪性Botnetは耐久性がある。
• BotコンピューティングにもHA
を導入
• Crossover including,
crossover execution
– VRRPと同様
2. Botコンピューティングの概要
2.X その他
• このシステムそのものの更新
• 運用停止時間をできるだけ短く
• Primary の Class ページ実行中
Secondary のClassページを入替
強制的に Primary のClassの
サーバを停止
Classページのサーバのfailover
Primary のClassページを更新
• Objectページでも同様
2. Botコンピューティング
の概要
2.X その他
2. Botコンピューティングの概要
2.X その他
• 多くのBotを操作するために
Object ページを個別に書き換
えて制御するのは大変
• Class ページの書き換えで
Botの一斉操作可能
2. Botコンピューティングの概要
2.X その他
• Botの停止
– 対応するObjectページを書き換えないように指示-> 実質的に停止
• Botの初期化
– 対応するObjectページのデータ部分を初期化
• Botの実行
– 対応するObjectページをプログラムに従って書き換えるようにする。
3. 試験的な実装
3.1 簡単な例
Classページ
3. 試験的な実装
3.1 簡単な例
• 実行前の Objectページ
3. 試験的な実装
3.1 簡単な例
• 実行後の Objectページ
3. 試験的な実装
3.2 組み込み関数
• ex(<object>,<command>)
– 例: page=ex(“connector”,
“getpage http://www.page.ex/”)
• getResultPart(<page>)
– Page の result: 以降を取り出す。
3. 試験的な実装
3.2 組み込み関数
• parseCsv(<csv>,<dataTable>, <rowLabel>,<columnLabel>)
– <col-label_1>=<val_1_1>,…,<col-label_1_1n>=<val_1_1n>.
– <col-label_2>=<val_2_1>,…,<col-label_2_2n>=<val_2_2n>.
– …
#ipsjpro
3. 試験的な実装
3.2 組み込み関数
3. 試験的な実装
3.2 組み込み関数
• sumif
• countif
• getindex
#ipsjpro
4. 最小経路問題への応用
4.1 Objectページ上のノードと
arc情報の記述
• Minimal Path
• (Backupも含めて)2枚のWikiページを1node に割り当て
• (Backupも含めて)2つのBotで1nodeの計算を担当
4. 最小経路問題への応用
4.1 Objectページ上のノードと
arc情報の記述
objectPage <url1> or <url2>
device <device1> or <device2> start after no write for 10 min.
include <class1> or <class2>
result:
kind="nodeInfo",nodeName=<node name>, startNode=<start-node>,
selectedNode=<number>, val=<val>, path=<path>
kind="preNode",No=1,url=<previous-node-1-1>,url2=<previous-node-1-2>,
arcVal=<arcVal-1>,val=<val-1>,path=<path-1>
…
kind="preNode",No=n,url=<previous-node-n-1>,url2=<previous-node-n-2>,
arcVal=<arcVal-n>, val=<val-n>,path=<path-n>
currentDevice=<device>, Date=<date>
4. 最小経路問題への応用
4.1 Objectページ上のノードと
arc情報の記述
• objectPage http://bot-4-1.org/index.php?Object or http://bot-4-2.org/index.php?Object
• device dev-4-1 or dev-4-2 start after no write for 10 min.
• include http://bot.org/index.php?DP or http://bot2.org/index.php?DP
• result:
• kind="nodeInfo",nodeName="4", startNode="1", selectedNode=0, val=0, path=""
• kind="preNode",No=1,url="http://bot-2-1.org/index.php?Object",
url2="http://bot-2-2.org/index.php?Object", arcVal=2,val=0,path=""
• kind="preNode",No=2,url="http://bot-3-1.org/index.php?Object",
url2="http://bot-3-2.org/index.php?Object", arcVal=3,val=0,path=""
• currentDevice="dev-4-1", Date=2016/5/27/ 22:10:40
4. 最小経路問題への応用
4.1 Objectページ上のノードと
arc情報の記述
• kind="nodeInfo",nodeName=<node name>,
startNode=<start-node>,
selectedNode=<number>, val=<val>, path=<path>
• (実行前の)Node-4
kind="nodeInfo",nodeName="node-4", startNode="node-1",
selectedNode=0,val=0, path=""
4. 最小経路問題への応用
4.1 Objectページ上のノードと
arc情報の記述
• kind="preNode",No=1,url=<previous-node-1-1>,
url2=<previous-node-1-2>,
arcVal=<arcVal-1>,val=<val-1>,path=<path-1>
…
• (実行前の)Node-4
kind="preNode",No=1,url=“...node-2",url2=“...",
arcVal=2,val=0,path=""
kind="preNode",No=2,url=“...node-3",url2=“...",
arcVal=3,val=0,path=""
4. 最小経路問題への応用
4.3 Classページの記述
• Class page
– command: set readInterval=30000 //30秒
command: program dp
program: dim thisTable // 自ノードの表
program: dim thisRowLabel
program: dim thisColumnLabel
program: dim prevTable // 前ノードの表
program: dim prevRowLabel
program: dim prevColumnLabel
–
4. 最小経路問題への応用
4.3 Classページの記述
4. 最小経路問題への応用
4.3 Classページの記述
• program: mode=“reset“ // 停止 stop, 初期化 reset, 実行 run
program: thisPage=ex("service", "getThisPage")
program: thisPageR=getResultPart(thisPage)
program: ex("service","println "+thisPageR)
program: parseCsv(thisPageR, thisTable, thisRowLabel,
thisColumnLabel)
4. 最小経路問題への応用
4.3 Classページの記述
• program: lineNumber=getMaxIndex(thisRowLabel)
program: minVal=10000
program: selectedNode=0
program: selectedPath="“
program: preNodes=0 #ipsjpro
4. 最小経路問題への応用
4.3 Classページの記述
• program: for i=0 to lineNumber-1
各前ノードについての計算
program: next i
• program: thisNodeIndex=getIndex(thisTable,thisRowLabel,
thisColumnLabel("kind"),"=","nodeInfo")
program: thisTable(thisNodeIndex,thisColumnLabel(
"selectedNode"))=selectedNode //
4. 最小経路問題への応用
4.3 Classページの記述
• program: if mode="reset" then
program: {
Object Pageのノードと Arcの情報の初期化
program: }
program: mode=”run” then
program: {
計算結果によるノードとArcの情報の更新
program: }
command: end dp
command: run dp
4. 最小経路問題への応用
4.3 Classページの記述
• 各前nodeについての計算
– 自ノードの表のi行目が preNode であれば以下を実行
• i行目のurlのページを読む(ダメだったらurl2のページを読む).
読んだページの表をprevPageに代入
• prevPageの中のnodeInfo がある行を探す
• その行の val (prevVal)を取り出して,
i番目の前ノードと自ノードの間のarc の
arcValを取り出して, xval に prevVal+arcValを代入
• 自ノードの表のi行目の valに xvalを代入
4. 最小経路問題への応用
4.3 Classページの記述
• 前ノードの nodeInfoがある行の path を取り出す
• 自ノードの表のi行目のpath に, 上で求めた path を代入
• もし xval が今までの前ノードの xval の中で最小であれば,
selectedNode を, この行が表す前ノードとし, selectedPathを上
で求めた path とする
– すべての前ノードにおける(Start nodeからの) minimal
path と, その pathの value が求まっていれば,自ノードに
至る minimal pathが selected path になる。
• (実行終了後の)Node-4
kind="nodeInfo",nodeName="node-4", startNode="node-1",
selectedNode=1, val=4, path= “node-1 – node-2 – node-4“
kind="preNode",No=1,url=“...node-2",url2=“...",
arcVal=2, val=4,path= “node-1 – node-2"
kind="preNode",No=2,url=“...node-3",url2=“...",
arcVal=3, val=5, path= “node-1 – node-3"
4. 最小経路問題への応用
4.3 Classページの記述
4. 最小経路問題への応用
4.3 実験
• 理論値
T=Na(TI/2+TX)
Na : 最小経路の弧の数
TI : Objectページの読み込み間隔
TX: ページが読み込まれてから
実行が終了する までの時間
4. 最小経路問題への応用
4.3 実験
(a) Minimal path=1-2-4 (b) Minimal path=1-3-6-8-4
Arc数=2 Arc数=4
4. 最小経路問題への応用
4.3 実験
( c ) minimal Path =1-3-4-8-10-12-14-17-19
Arc 数=8
4. 最小経路問題への応用
4.3 実験
4. 最小経路問題への応用
4.3 実験
4. 最小経路問題への応用
4.3 実験
• TI: 30秒. 横軸:最小経路の arc の本数
縦軸の時間: 結果が求まるまでの時間
• それぞれの arc の本数について, 5回ずつ測定
• R2が0.98 -> 計算時間はほぼ, arcの本数に比例
• 比例定数は, 予測値である15に比較的近い
– 15秒を超えている部分は計算時間と推定.
• 切片が 5.85秒… 計測間隔が10秒であった影響
4. 最小経路問題への応用
4.3 実験
• 最小経路となる弧の数が, そうではない場合の弧の数より大
きいとき, 最初に goal node に現れる経路は最小経路ではな
い場合あり
• しかしながら, 最終的には最小経路が求まり, それ以後は,
goal node の結果はずっと最小経路とその値
5. 関連研究
• 悪性Botnet
• Fog computing … remote control の記述なし
• Softwarization of IoT…SDN利用 vs. Bot computingのwiki
• Javelin … Java-enabled Webブラウザ必要
• WIKI API … いろいろなWiki のAPI
• Galaxy Wiki …Writing a wiki page is writing source code
– Bot computingはWikiページの記述とその実行部分を分離
5. 関連研究
• VRRP
– router. ここでは汎用計算のHA
• SETI@Home
– 大量のCPUの利用の道筋を開く.
– 固定的な, ノード間通信はほとんど発生しない計算のみ.
ここでは汎用的で, ノード間通信を含む計算.
• 動的計画法の並列計算
– 過去の研究はCPU利用効率重視. ここではCPU利用効率は無視.
6. おわりに
• 役に立つBotnet
• Wikiに動的ページを導入
• WikiとBotを使った「Wikiページ型並列プログラミング」
• 動的計画法による最小経路問題
– 効率は悪いが, BotとWebページが使い放題であれば問題なし.
• Failoverの検証はまだ.
• セキュリティについての検討も必要
• より記述量の少ない方法を検討中
謝辞
• 科研費JP16K00197
• 学生諸君
#ipsjpro

More Related Content

PPTX
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
PPTX
LUT-Network Revision2
PDF
OpenStack with OpenFlow
PPTX
Away3D 4.1 パーティクル入門
PDF
クラウドオーケストレーション「OpenStack Heat」に迫る!
PDF
C++ Transactional Memory言語拡張の紹介
PDF
SpectreとMeltdown:最近のCPUの深い話
PDF
Chainer v1.6からv1.7の新機能
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
LUT-Network Revision2
OpenStack with OpenFlow
Away3D 4.1 パーティクル入門
クラウドオーケストレーション「OpenStack Heat」に迫る!
C++ Transactional Memory言語拡張の紹介
SpectreとMeltdown:最近のCPUの深い話
Chainer v1.6からv1.7の新機能

What's hot (20)

PDF
Code jp2015 cpuの話
PDF
Oocon2020 presentation slide @kozukorio
PDF
Cpu cache arch
PDF
CPUの同時実行機能
PPTX
LUT-Network ~Edge環境でリアルタイムAIの可能性を探る~
PPT
Javaでトランザクショナルメモリを使う
PDF
nakameguro_feature.cpp vol.8
PDF
Postgre sql9.3 newlockmode_and_etc
PDF
OSC沖縄2014_JPUG資料
PDF
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
PDF
Jubatusでマルウェア分類
PDF
規格書で読むC++11のスレッド
PDF
イマドキC++erのモテカワリソース管理術
PDF
CyberAgentにおけるMongoDB
PDF
深層学習レポート Day1 (小川成)
PPTX
Jubatus使ってみた 作ってみたJubatus
PDF
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
PPTX
非同期処理の基礎
PDF
JOSUG 9th Study
PDF
C++ マルチスレッドプログラミング
Code jp2015 cpuの話
Oocon2020 presentation slide @kozukorio
Cpu cache arch
CPUの同時実行機能
LUT-Network ~Edge環境でリアルタイムAIの可能性を探る~
Javaでトランザクショナルメモリを使う
nakameguro_feature.cpp vol.8
Postgre sql9.3 newlockmode_and_etc
OSC沖縄2014_JPUG資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
Jubatusでマルウェア分類
規格書で読むC++11のスレッド
イマドキC++erのモテカワリソース管理術
CyberAgentにおけるMongoDB
深層学習レポート Day1 (小川成)
Jubatus使ってみた 作ってみたJubatus
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
非同期処理の基礎
JOSUG 9th Study
C++ マルチスレッドプログラミング
Ad

Similar to Bot Computing and its Application to Solve Minimal Path Problems (20)

PPTX
Iot2017 0304-センサネットワークのセンサ端末群をインターネット上のWikiページで制御する IoTシステムの試作
PPTX
TwitterとWikiを使った自動情報提示システム
PPTX
A Sensor Network System using Arduino, Android and Wiki
PDF
OpenFlowで覚えるネットワーク
PPTX
BotとWikiを使った試験的な並列プログラミング
PDF
Rubyにおけるトレース機構の刷新
PDF
20120721_ishkawa
PDF
20131011_openstack-neutron-vyattameeting
PDF
RouterBOARD with OpenFlow
PDF
High Performance Networking with DPDK & Multi/Many Core
PPT
計算機理論入門08
PDF
A story of porting OpenBSD/luna88k
PPT
20030203 doctor thesis_presentation_makotoshuto
PDF
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
PDF
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
PDF
Nodejuku01 ohtsu
PDF
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
PDF
Lt ingaoho-jsonb+postgeres fdw
PDF
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
PPTX
NW入門
Iot2017 0304-センサネットワークのセンサ端末群をインターネット上のWikiページで制御する IoTシステムの試作
TwitterとWikiを使った自動情報提示システム
A Sensor Network System using Arduino, Android and Wiki
OpenFlowで覚えるネットワーク
BotとWikiを使った試験的な並列プログラミング
Rubyにおけるトレース機構の刷新
20120721_ishkawa
20131011_openstack-neutron-vyattameeting
RouterBOARD with OpenFlow
High Performance Networking with DPDK & Multi/Many Core
計算機理論入門08
A story of porting OpenBSD/luna88k
20030203 doctor thesis_presentation_makotoshuto
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Nodejuku01 ohtsu
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
Lt ingaoho-jsonb+postgeres fdw
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
NW入門
Ad

More from Takashi Yamanoue (20)

PPTX
人が乗れる自動運転電気自動車作成中その4, -version up その1-
PPTX
シン3次元表示装置 ーその1ー
PPTX
Wiki IoT/Bot Computingを使った顔ロボット群の制御
PPTX
IoTLT-Vol93-Wiki-IoT-20221117.pptx
PPTX
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
PPTX
人が乗れる 自動運転電気自動車作成中その3 -自動運転成功!-
PPTX
人が乗れる 自動運転 電気自動車 作成中!
PPTX
着る電光掲示板の新機能  -場所に応じた情報の自動表示-
PPT
Real->Virtual変換システムの開発その1の2
PPT
Real->Virtual 変換システムの開発その1の1
PPTX
スマートフォンで操作する双方向型大型デジタルサイネージシステムの試作
PPTX
Teleport dressor 20200524
PPTX
SeeThroughChameleonDress-on-the-way-ex1
PPTX
PukiWiki と Raspberry Pi と Arduino を連携させてIoT システムを作ってみた話
PPTX
Zoomはぶっ飛ばせないけど... - Portable Cloud の紹介
PPTX
trouble-with-mboed-os
PPTX
簡便な大型幅広デジタルサイネージシステムとその自動運用システム
PPTX
Wiki と Raspberry Pi と Arduino を組み合わせて作成した電気製品の自動運転・遠隔操作システム
PPTX
Bot Computing using the Power of Wiki Collaboration
PPTX
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み
人が乗れる自動運転電気自動車作成中その4, -version up その1-
シン3次元表示装置 ーその1ー
Wiki IoT/Bot Computingを使った顔ロボット群の制御
IoTLT-Vol93-Wiki-IoT-20221117.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
人が乗れる 自動運転電気自動車作成中その3 -自動運転成功!-
人が乗れる 自動運転 電気自動車 作成中!
着る電光掲示板の新機能  -場所に応じた情報の自動表示-
Real->Virtual変換システムの開発その1の2
Real->Virtual 変換システムの開発その1の1
スマートフォンで操作する双方向型大型デジタルサイネージシステムの試作
Teleport dressor 20200524
SeeThroughChameleonDress-on-the-way-ex1
PukiWiki と Raspberry Pi と Arduino を連携させてIoT システムを作ってみた話
Zoomはぶっ飛ばせないけど... - Portable Cloud の紹介
trouble-with-mboed-os
簡便な大型幅広デジタルサイネージシステムとその自動運用システム
Wiki と Raspberry Pi と Arduino を組み合わせて作成した電気製品の自動運転・遠隔操作システム
Bot Computing using the Power of Wiki Collaboration
悪性Botnet包囲網のBotによるWannaCryのようなマルウェアの活動検知の試み

Bot Computing and its Application to Solve Minimal Path Problems