diff presen/sample.html @ 32:ceb02999f1a5

after final check
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Mon, 30 May 2016 01:39:34 +0900
parents b729ee3a8f72
children 9dd4a1aa4475
line wrap: on
line diff
--- a/presen/sample.html	Sun May 29 19:31:26 2016 +0900
+++ b/presen/sample.html	Mon May 30 01:39:34 2016 +0900
@@ -87,7 +87,7 @@
 <!-- === begin markdown block ===
 
       generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0]
-                on 2016-05-29 19:29:59 +0900 with Markdown engine kramdown (1.5.0)
+                on 2016-05-30 01:38:09 +0900 with Markdown engine kramdown (1.5.0)
                   using options {}
   -->
 
@@ -117,8 +117,8 @@
 <!-- _S9SLIDE_ -->
 <h1 id="section-2">研究目的(3/3)</h1>
 <ul>
-  <li>Aliceでは分散トポロジーの管理をTopology ManagerというMeta Computationが行っている</li>
-  <li>本研究では、 多様なネットワーク環境に適応するためにTopology Managerに別ネットワーク・別トポロジーでのノード間接続を実現する設計を行う</li>
+  <li>分散アプリケーションの例題の1つとして画面配信システムTreeVNCをAlice上で実装する中で、NATを介した別ネットワークや別トポロジー上のノードとの接続が必要であることがわかった</li>
+  <li>本研究では、分散トポロジーの管理を行うMeta ComputationであるTopology Managerに別ネットワーク・別トポロジーでのノード間接続を実現するための拡張設計を行う</li>
 </ul>
 
 
@@ -130,20 +130,29 @@
   <li>Aliceの概要
     <ul>
       <li>Code Segment/Data Segment</li>
+      <li>Data Segment Manager</li>
       <li>Computation/Meta Computation</li>
       <li>Topology Manager</li>
     </ul>
   </li>
-  <li>分散アプリケーションの課題
+  <li>Alice上にTreeVNCを実装する際の課題
     <ul>
-      <li>別ネットワークの接続</li>
-      <li>別トポロジーの接続</li>
+      <li>VNCとChatを連携させる課題</li>
+      <li>TreeVNCにおけるNATを越えた接続の課題</li>
     </ul>
   </li>
-  <li>Topology Managerの拡張設計</li>
+  <li>Topology Managerの拡張設計
+    <ul>
+      <li>別トポロジー間の接続のための設計
+        <ul>
+          <li>Topology Nodeの複数対応</li>
+        </ul>
+      </li>
+      <li>別ネットワーク間の接続のための設計</li>
+    </ul>
+  </li>
   <li>他言語等との比較</li>
   <li>まとめ</li>
-  <li>今後の課題</li>
 </ul>
 
 
@@ -167,7 +176,7 @@
   <li>データの依存関係にないCSは並列実行される</li>
   <li>データの依存関係がある場合は Input DS が揃うと順に実行される</li>
   <li>DSはCSに専有されるためロックの記述を必要としない
-<img src="./images/dsandcs2.svg" alt="opt" width="50%" /></li>
+<img src="./images/dsandcs2.svg" alt="opt" width="60%" /></li>
 </ul>
 
 
@@ -187,7 +196,8 @@
 <h1 id="data-segment-manager">Data Segment Manager</h1>
 <ul>
   <li>DS の集合体であるデータベースを Alice では <strong>DS Manager(DSM)</strong> と呼ぶ。  </li>
-  <li>DSM 内の DS には対応する一意の String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。</li>
+  <li>DSM 内の DS には対応する一意の String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。
+<img src="./pictures/key.svg" alt="opt" width="50%" /></li>
 </ul>
 
 
@@ -196,10 +206,10 @@
 <!-- _S9SLIDE_ -->
 <h1 id="data-segment-manager-1">Data Segment Manager</h1>
 <ul>
-  <li>Local DSM … 各ノード固有のデータベース。</li>
-  <li>Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在する。  </li>
+  <li>Local DSM … 各ノード固有のデータベース</li>
+  <li>Remote DSM … 他のノードのLocal DSMのproxy。接続しているノードの数だけ存在する。</li>
   <li>Remote DSMに書き込むと対応するノードのLocalDSMに書き込まれる
-<img src="./pictures/newDSM.svg" alt="opt" width="50%" />//変更</li>
+<img src="./pictures/newDSM.svg" alt="opt" width="50%" /></li>
 </ul>
 
 
@@ -246,7 +256,7 @@
   <li>Topology Node
     <ul>
       <li>各ノード側でTopology Managerとの通信を行うMeta Computation</li>
-      <li>ノードアプリケーションを記述する際にTopology Nodeをnewしておけば以降のTopology Managerとの通信や接続管理を行う  </li>
+      <li>ノードアプリケーションを記述する際にTopology Nodeをnewしておけば以降のTopology Managerとの通信やノード間の接続を行う  </li>
     </ul>
   </li>
   <li>Topology Manager/NodeもCS/DSを用いて実装されている。</li>
@@ -260,7 +270,7 @@
 <ul>
   <li>プログラマがdot形式のトポロジーファイルを用意し、Topology Managerに読み込ませる</li>
   <li>トポロジーファイルにはノードの接続関係と接続する際に指定するRemote DSM名を記す</li>
-  <li>Graphvizでトポロジーファイルを可視化して確認できる</li>
+  <li>Graphvizを用いればトポロジーを描くだけでトポロジーファイルが自動出力されるため構成が容易</li>
 </ul>
 
 <pre lang="dot"><code>digraph test{
@@ -281,7 +291,7 @@
 <ul>
   <li>ファイルを読み込んだTopology Managerを立ち上げる</li>
   <li>各Topology NodeはTopology Managerに参加表明をし接続すべきノードの情報を要求する<br />
-<img src="./pictures/tree1.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/tree1.svg" alt="opt" width="60%" /></li>
 </ul>
 
 
@@ -291,7 +301,7 @@
 <h1 id="static-topology-manager-2">Static Topology Manager</h1>
 <ul>
   <li>参加表明があった順に各ノードにnodeNameを割り当て、接続するべきノードのIPアドレス/ポート番号を送る
-<img src="./pictures/tree2.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/tree2.svg" alt="opt" width="60%" /></li>
 </ul>
 
 
@@ -300,8 +310,9 @@
 <!-- _S9SLIDE_ -->
 <h1 id="static-topology-manager-3">Static Topology Manager</h1>
 <ul>
-  <li>Topology Nodeが受け取った情報をもとにRemote DSMを立ちあげ接続し合うことでTree型のオーバーレイネットワーク作られる<br />
-<img src="./pictures/tree3.svg" alt="opt" width="40%" /></li>
+  <li>Topology Nodeが受け取った情報をもとにRemote DSMを立ちあげ接続し合うことでオーバーレイネットワークが作られる  </li>
+  <li>Topology Managerは接続情報を管理し、実際の接続はTopology Nodeが行う
+<img src="./pictures/tree3.svg" alt="opt" width="60%" /></li>
 </ul>
 
 
@@ -330,54 +341,68 @@
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="treevncnat">TreeVNCのNAT越え</h1>
+<h1 id="alicetreevnc">Alice上にTreeVNCを実装する際の課題</h1>
 <ul>
   <li>TreeVNC
     <ul>
       <li>当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム</li>
-      <li>TightVNCを拡張して作られている
-<img src="./images/treeVNC.svg" alt="right" width="40%" /></li>
+      <li>TightVNCを拡張して作られている</li>
+    </ul>
+  </li>
+  <li>AliceVNC
+    <ul>
+      <li>Alice上に実装したTreeVNC</li>
+      <li>Dinamic Topology ManagerでTree Topologyを構成</li>
     </ul>
   </li>
 </ul>
 
+<p><img src="./images/treeVNC.svg" alt="opt" width="40%" /></p>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="alicevncalicechat">課題1 - AliceVNCとAliceChatの接続</h1>
+<ul>
+  <li>AliceChat
+    <ul>
+      <li>Alice上に実装したチャット</li>
+      <li>Dinamic Topology ManagerでStar Topologyを構成</li>
+    </ul>
+  </li>
+  <li>既存のAliceVNCとAliceChatをコードの変更を抑えつつ連携させたい
+    <ul>
+      <li>画面のスナップショットをチャットに載せる</li>
+      <li>チャットの内容を画面にコメントとして流す</li>
+    </ul>
+  </li>
+  <li>別トポロジーのアプリケーションへの接続をサポートする機能が必要</li>
+</ul>
+
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="treevncnat-1">TreeVNCのNAT越え</h1>
+<h1 id="nat">課題2 - NATを越えた接続</h1>
 <ul>
-  <li>TreeVNCを学外からも画面共有ができるよう拡張したい</li>
-  <li>ソースコードが膨大で複雜であったためNAT越えの実装には至らなかった</li>
-  <li>グローバルIPを持っていることを前提としたノードに直接IPを指定して直下の子になるDirect Connectionを実装し受信のみを可能にしている
-<img src="./pictures/directConnection.svg" alt="right" width="40%" /></li>
+  <li>TreeVNCでは学外からも画面共有ができるよう拡張したいNAT越えの要求がある</li>
+  <li>ソースコードが複雜で他のコードも大きく修正しならなかったため、NAT越えの実装には至らなかった</li>
+  <li>グローバルIPを持っていることを前提としたノードに直接IPを指定して直下の子になるDirect Connectionを実装し受信のみを可能にしている</li>
 </ul>
 
+<p><img src="./pictures/directConnection.svg" alt="opt" width="60%" /></p>
+
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="treevncnat-2">TreeVNCのNAT越えの欠点</h1>
+<h1 id="treevncnat">課題2 - TreeVNCのNAT越えの欠点</h1>
 <ul>
   <li>複数の別ネットワークからの接続があるとルートノードにネットワーク数分の負荷がかかる</li>
   <li>どちらもプライベートネットワークだった場合に通信できない(中継サーバのプログラムを用意しなければならない)</li>
   <li>分散アプリケーションにおけるNATを越えた通信は重要だがプログラマが実装するのは容易ではない  </li>
-</ul>
-
-
-</div>
-<div class='slide '>
-<!-- _S9SLIDE_ -->
-<h1 id="alicevncalicechat">AliceVNCとAliceChatの接続</h1>
-<ul>
-  <li>AliceVNC:Alice上に実装したTreeVNC(Tree Topology)</li>
-  <li>AliceChat:Alice上に実装したチャット(Star Topology)</li>
-  <li>既存のAliceVNCとAliceChatをコードの変更を抑えつつ連携させたい
-    <ul>
-      <li>画面のスナップショットをチャットに載せる</li>
-      <li>チャットの内容を画面にコメントとして流す</li>
-    </ul>
-  </li>
+  <li>別ネットワークのアプリケーションへの接続をサポートする機能が必要</li>
 </ul>
 
 
@@ -386,9 +411,8 @@
 <!-- _S9SLIDE_ -->
 <h1 id="topology-manager----">Topology Managerの拡張設計 -  別トポロジーへの接続</h1>
 <p>以降の機能をMeta Meta Computationとして実装<br />
-1. 接続を要求する側のいずれかの Node が接続先 Topology Manager(A)のIPアドレスを自身を管理するTopology Manager(B)のDSMに保存。<br />
-<em>ここでTopology Managerに保存することでRootNodeが落ちてもトポロジーの再構成時にまた接続要求が出せる</em><br />
-<img src="./pictures/private1.svg" alt="opt" width="50%" /></p>
+1. 接続を要求する側のいずれかの Node が接続先 Topology Manager(A)のIPアドレスを自身を管理するTopology Manager(B)に保存。<br />
+<img src="./pictures/private1.svg" alt="opt" width="70%" /></p>
 
 
 </div>
@@ -397,7 +421,7 @@
 <h1 id="topology-manager-----1">Topology Managerの拡張設計 -  別トポロジーへの接続</h1>
 <ol>
   <li>Topology Manager(B)はRootNode(B)にTopology Manager(A) への接続をするよう要求
-<img src="./pictures/private2.svg" alt="opt" width="50%" /></li>
+<img src="./pictures/private2.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -406,8 +430,8 @@
 <!-- _S9SLIDE_ -->
 <h1 id="topology-manager-----2">Topology Managerの拡張設計 -  別トポロジーへの接続</h1>
 <ol>
-  <li>RootNode(B) が Topology Manager(A) と接 続し、自身の接続先ノードの情報を取得
-<img src="./pictures/private3.svg" alt="opt" width="50%" /></li>
+  <li>RootNode(B) が Topology Manager(A) と接続し、自身の接続先ノードの情報を取得
+<img src="./pictures/private3.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -417,7 +441,8 @@
 <h1 id="topology-manager-----3">Topology Managerの拡張設計 -  別トポロジーへの接続</h1>
 <ol>
   <li>取得した情報をもとに RootNode(A) に接続<br />
-<img src="./pictures/private4.svg" alt="opt" width="50%" /></li>
+<em>※①でTopology Managerに保存することでRootNodeが落ちてもトポロジーの再構成時にまた接続要求が出せる</em><br />
+<img src="./pictures/private4.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -426,11 +451,12 @@
 <!-- _S9SLIDE_ -->
 <h1 id="topology-manager">複数のTopology Managerへの対応</h1>
 <ul>
-  <li>Topology Nodeは割り当てられたnodeNameをDSとして保持しTopology Managerと通信</li>
-  <li>Topology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする必要がある<br />
-<img src="./pictures/somehostname.svg" alt="right" width="40%" /></li>
+  <li>この機能を実現するにはTopology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする必要がある</li>
+  <li>Topology Nodeは割り当てられたnodeNameをDSとして保持してTopology Managerと通信を行うため、nodeNameの衝突を避けなければならない</li>
 </ul>
 
+<p><img src="./pictures/somehostname.svg" alt="opt" width="50%" /></p>
+
 
 </div>
 <div class='slide '>
@@ -438,8 +464,8 @@
 <h1 id="local-dsm">Local DSMの切り替えによる対応</h1>
 <ul>
   <li>通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理</li>
-  <li>指定するDSMを変えるだけでTpology Manager/Nodeのコードを大きく変えずにTopology Managerの複数対応が可能<br />
-<img src="./pictures/somehostname2.svg" alt="right" width="40%" /></li>
+  <li>Tpology Manager/Nodeの働きはそのままに、指定するLocal DSMを変えるだけでTopology Managerの複数対応が可能<br />
+<img src="./pictures/somehostname2.svg" alt="opt" width="50%" /></li>
 </ul>
 
 
@@ -448,10 +474,10 @@
 <!-- _S9SLIDE_ -->
 <h1 id="key">Keyの切り替えによる対応</h1>
 <ul>
-  <li>DSMを管理するclassがstaticのためDSMの複数生成ができない</li>
+  <li>DSMを管理するclassがstaticのためLocal DSMが1つしか生成できない</li>
   <li>staticを抜くにはAliceのコードを大幅に変更しなければならない</li>
   <li>nodeNameのDSを管理するkeyにManagerごとの番号を付け加えKeyによって切り替えている<br />
-<img src="./pictures/somehostname3.svg" alt="right" width="40%" />//変更</li>
+<img src="./pictures/somehostname3.svg" alt="opt" width="50%" /></li>
 </ul>
 
 
@@ -464,7 +490,7 @@
   <li>各プライベートネットワーク内を管理するPrivate Topology Manager</li>
   <li>グローバルIPアドレスを持ったGlobal Topology Managerを1つ立てる</li>
   <li>TopologyNodeが複数対応できるためPrivate/Global Topology Managerに接続<br />
-<img src="./pictures/overNAT.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/overNAT.svg" alt="opt" width="50%" /></li>
 </ul>
 
 
@@ -478,7 +504,7 @@
   <li>1つのノードへの接続数は最大4</li>
   <li>Topology Managerの「参加表明のあったノードで木を構成」仕様は変わらない</li>
   <li>NAT越えはTopology ManagerのMeta Meta Computationと言える<br />
-<img src="./pictures/3Dtree.svg" alt="opt" width="40%" />//変更</li>
+<img src="./pictures/3Dtree.svg" alt="opt" width="50%" /></li>
 </ul>
 
 
@@ -488,7 +514,7 @@
 <h1 id="topology-manager-----6">Topology Managerの拡張設計 -  別ネットワークへの接続</h1>
 <ol>
   <li>接続を要求する側のいずれかのノードがGlobal Topology ManagerのIPアドレスを自身を管理するTopology ManagerのDSMに保存
-<img src="./pictures/global1.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/global1.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -498,7 +524,7 @@
 <h1 id="topology-manager-----7">Topology Managerの拡張設計 -  別ネットワークへの接続</h1>
 <ol>
   <li>Topology ManagerはRootNodeにGlobal Topology Managerへの接続をするよう要求
-<img src="./pictures/global2.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/global2.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -508,7 +534,7 @@
 <h1 id="topology-manager-----8">Topology Managerの拡張設計 -  別ネットワークへの接続</h1>
 <ol>
   <li>RootNodeがGrobal Topology Managerと接続し、自身のIPアドレスを送る。Global Topology Manager が受け取ったIPアドレスがプライベートアドレスであれば、ノードに対してNATの外側IPアドレス/ポート番号を要求される。RootNode はそれに返答。
-<img src="./pictures/global3.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/global3.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -518,7 +544,7 @@
 <h1 id="topology-manager-----9">Topology Managerの拡張設計 -  別ネットワークへの接続</h1>
 <ol>
   <li>UDP hole punching 行われ、Network1のRootNodeとNetwork2のRootNodeが接続される
-<img src="./pictures/global4.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/global4.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -528,7 +554,7 @@
 <h1 id="topology-manager-----10">Topology Managerの拡張設計 -  別ネットワークへの接続</h1>
 <ol>
   <li>もし接続が確立されなければ、Global Topology Manager がデータ中継用の CSを用意しデータを中継する
-<img src="./pictures/global5.svg" alt="opt" width="40%" /></li>
+<img src="./pictures/global5.svg" alt="opt" width="70%" /></li>
 </ol>
 
 
@@ -536,6 +562,8 @@
 <div class='slide '>
 <!-- _S9SLIDE_ -->
 <h1 id="alice1---erlang">Aliceと他言語等との比較(1) - Erlang</h1>
+<p>Ericssonが開発した並列指向関数型プログラミング言語</p>
+
 <ul>
   <li>共通点
     <ul>
@@ -556,6 +584,8 @@
 <div class='slide '>
 <!-- _S9SLIDE_ -->
 <h1 id="alice2---akka">Aliceと他言語等との比較(2) - Akka</h1>
+<p>アクターモデルのScalaおよびJava向けの並列および分散処理フレームワーク</p>
+
 <ul>
   <li>共通点
     <ul>
@@ -578,30 +608,7 @@
 <ul>
   <li>別トポロジー・別ネットワークのアプリケーションとの接続を可能にするため、分散トポロジーの構成・管理をするMeta ComputationであるTopology Manager/Nodeの拡張設計を行った。</li>
   <li>DSM の切り替えにより Topology Node を複数の Topology Manager に対応させ、Meta Meta Computation として NAT 越えの機能を追加することで、Topology Manager/Node のコードを大きく変えず自由度の高い通信が可能になると期待される。</li>
-  <li>しかし、それを実現するにはAlice の DSM を管理する class の static を取り除かなければならず、それは容易ではなかった。</li>
-</ul>
-
-
-</div>
-<div class='slide '>
-<!-- _S9SLIDE_ -->
-<h1 id="section-6">今後の課題</h1>
-<ul>
-  <li>DSMのレイヤー分け
-    <ul>
-      <li>staticのないコードで再設計し、Local DSMをメタレイヤー、トポロジーごとのレイヤーなどに分ける</li>
-    </ul>
-  </li>
-  <li>APIの再設計
-    <ul>
-      <li>put/updateに対しtake/peekがcreate()・setKey()の操作はわかりにくい</li>
-    </ul>
-  </li>
-  <li>DSの型情報のマネジメント
-    <ul>
-      <li>型情報がないのでpeek/takeする際にわかりにくい</li>
-    </ul>
-  </li>
+  <li>しかし、それを実現するにはAliceのDSMを管理するclassのstaticを取り除かなければならず、それは容易ではなかったためAlice自体の再設計を行ったうえで実装を行いたい。</li>
 </ul>
 
 <style type="text/css">