Mercurial > hg > Papers > 2016 > nozomi-sigos
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">