Mercurial > hg > Papers > 2016 > nozomi-sigos
changeset 31:b729ee3a8f72
first change
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 29 May 2016 19:31:26 +0900 |
parents | 3f7064e09310 |
children | ceb02999f1a5 |
files | presen/sample.html presen/sample.markdown |
diffstat | 2 files changed, 154 insertions(+), 168 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/sample.html Sun May 29 18:10:35 2016 +0900 +++ b/presen/sample.html Sun May 29 19:31:26 2016 +0900 @@ -87,52 +87,63 @@ <!-- === 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 18:07:15 +0900 with Markdown engine kramdown (1.5.0) + on 2016-05-29 19:29:59 +0900 with Markdown engine kramdown (1.5.0) using options {} --> -<p>Topology Managerをもっとかっこよくアピール -前半もっとクリーンナップ</p> + +<!-- _S9SLIDE_ --> +<h1 id="section">研究目的(1/3)</h1> +<ul> + <li>当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。</li> + <li>ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す。 </li> + <li>スケーラビリティと信頼性の向上のため、Aliceでは当研究室が提案しているデータを Data Segment、タスクを Code Segment という単位で分割して記述するプログラミング手法を採用している。</li> +</ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section">目次</h1> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-1">研究目的(1/3)</h1> +<h1 id="section-1">研究目的(2/3)</h1> <ul> - <li>当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。</li> - <li>ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す。 </li> - <li>信頼性とスケーラビリティ向上のため、Aliceでは当研究室が提案しているデータを Data Segment、タスクを Code Segment という単位で分割して記述するプログラミング手法を採用している。</li> + <li>さらに処理をComputationとMetaComputationに階層化し、コアな仕様とそれを支える複雑な例外処理に分離する。</li> + <li>分散環境構築などの複雑な処理をAliceがMeta Computationとして提供するため、仕様の変更を抑えた拡張が可能となる。</li> + <li>例えば、分散アプリケーションでNATを越えて通信するように拡張したい場合、コアな処理は変えずMeta Computationに指定する分散トポロジーを変更するだけで良い。</li> + <li>拡張する際にメインのコードを破壊しないため変更前の信頼性を保つことができる。</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-2">研究目的(2/3)</h1> +<h1 id="section-2">研究目的(3/3)</h1> <ul> - <li>Aliceでは、処理をComputationとMetaComputationに階層化し、コアな仕様と複雑な例外処理に分離する。//コアな仕様の例</li> - <li>分散環境構築などの複雑な処理はAliceがMeta Computationとして提供する</li> - <li>仕様を大きく変更することなくプログラムの挙動が変えられる//分散処理とかの拡張なら指定だけで良い</li> - <li>変更前の信頼性を保ったまま拡張可能にする</li> + <li>Aliceでは分散トポロジーの管理をTopology ManagerというMeta Computationが行っている</li> + <li>本研究では、 多様なネットワーク環境に適応するためにTopology Managerに別ネットワーク・別トポロジーでのノード間接続を実現する設計を行う</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-3">研究目的(3/3)</h1> +<h1 id="section-3">目次</h1> <ul> - <li>Aliceでは分散トポロジー管理の Meta Computation である Topology Manager</li> - <li>本研究では、 Topology Managerに NAT越えを実現するための設計を行う</li> - <li>そしてその設計が Alice アプリケーション同士の接続も可能にすることを示す -↑逆? -Topologyの課題をかく</li> + <li>Aliceの概要 + <ul> + <li>Code Segment/Data Segment</li> + <li>Computation/Meta Computation</li> + <li>Topology Manager</li> + </ul> + </li> + <li>分散アプリケーションの課題 + <ul> + <li>別ネットワークの接続</li> + <li>別トポロジーの接続</li> + </ul> + </li> + <li>Topology Managerの拡張設計</li> + <li>他言語等との比較</li> + <li>まとめ</li> + <li>今後の課題</li> </ul> @@ -176,8 +187,7 @@ <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 の保存、取得を行う。 -<img src="./images/KeyDS.svg" alt="opt" width="50%" />//変更</li> + <li>DSM 内の DS には対応する一意の String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。</li> </ul> @@ -189,7 +199,7 @@ <li>Local DSM … 各ノード固有のデータベース。</li> <li>Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在する。 </li> <li>Remote DSMに書き込むと対応するノードのLocalDSMに書き込まれる -<img src="./images/remote_datasegment.svg" alt="opt" width="50%" />//変更</li> +<img src="./pictures/newDSM.svg" alt="opt" width="50%" />//変更</li> </ul> @@ -239,8 +249,7 @@ <li>ノードアプリケーションを記述する際にTopology Nodeをnewしておけば以降のTopology Managerとの通信や接続管理を行う </li> </ul> </li> - <li>Topology Manager/NodeもCS/DSを用いて実装されている。 -<img src="./pictures/topologynode.svg" alt="right" width="40%" />//変更</li> + <li>Topology Manager/NodeもCS/DSを用いて実装されている。</li> </ul> @@ -263,10 +272,6 @@ node2 −> node1[label=”left”] } </code></pre> -<p># Static Topology Manager -* ファイルを読み込んだTopology Managerを立ち上げる -* 各Topology NodeはTopology Managerに参加表明をし接続すべきノードの情報を要求する<br /> -<img src="./pictures/tree1.svg" alt="opt" width="70%" /></p> </div> @@ -274,8 +279,9 @@ <!-- _S9SLIDE_ --> <h1 id="static-topology-manager-1">Static Topology Manager</h1> <ul> - <li>参加表明があった順に各ノードにnodeNameを割り当て、接続するべきノードのIPアドレス/ポート番号を送る -<img src="./pictures/tree2.svg" alt="opt" width="70%" /></li> + <li>ファイルを読み込んだTopology Managerを立ち上げる</li> + <li>各Topology NodeはTopology Managerに参加表明をし接続すべきノードの情報を要求する<br /> +<img src="./pictures/tree1.svg" alt="opt" width="40%" /></li> </ul> @@ -284,8 +290,18 @@ <!-- _S9SLIDE_ --> <h1 id="static-topology-manager-2">Static Topology Manager</h1> <ul> + <li>参加表明があった順に各ノードにnodeNameを割り当て、接続するべきノードのIPアドレス/ポート番号を送る +<img src="./pictures/tree2.svg" alt="opt" width="40%" /></li> +</ul> + + +</div> +<div class='slide '> +<!-- _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="70%" /></li> +<img src="./pictures/tree3.svg" alt="opt" width="40%" /></li> </ul> @@ -306,29 +322,46 @@ <h1 id="section-4">障害発生時の対応</h1> <ul> <li>KeepAliveというMeta Computationがノードの生存確認を行う</li> - <li>一定時間内にノードから応答がない場合、そのノードとの接続を切断し、再接続すべきノードの情報をTopologyManagerに要求する</li> + <li>Closed Event ManagerというMeta Computationは切断・再接続時に指定</li> + <li>これらのMeta ComputationはTopology Manager内でも使用されるため、Meta Meta Computationとも言えるされたCSを実行する</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-5">障害発生時の対応</h1> +<h1 id="treevncnat">TreeVNCのNAT越え</h1> <ul> - <li>Closed Event ManagerというMeta Computationは切断・再接続時に指定されたCSを実行する</li> - <li>再接続時に特定の処理を行いたい場合はCSを書いてClosed Event Managerに登録する</li> - <li>これらのMeta ComputationはTopology Manager内でも使用されるため、Meta Meta Computationとも言える</li> + <li>TreeVNC + <ul> + <li>当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム</li> + <li>TightVNCを拡張して作られている +<img src="./images/treeVNC.svg" alt="right" width="40%" /></li> + </ul> + </li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treevnc">TreeVNC</h1> +<h1 id="treevncnat-1">TreeVNCのNAT越え</h1> <ul> - <li>当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム</li> - <li>TightVNCを拡張して作られている -<img src="./images/treeVNC.svg" alt="right" width="40%" /></li> + <li>TreeVNCを学外からも画面共有ができるよう拡張したい</li> + <li>ソースコードが膨大で複雜であったためNAT越えの実装には至らなかった</li> + <li>グローバルIPを持っていることを前提としたノードに直接IPを指定して直下の子になるDirect Connectionを実装し受信のみを可能にしている +<img src="./pictures/directConnection.svg" alt="right" width="40%" /></li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="treevncnat-2">TreeVNCのNAT越えの欠点</h1> +<ul> + <li>複数の別ネットワークからの接続があるとルートノードにネットワーク数分の負荷がかかる</li> + <li>どちらもプライベートネットワークだった場合に通信できない(中継サーバのプログラムを用意しなければならない)</li> + <li>分散アプリケーションにおけるNATを越えた通信は重要だがプログラマが実装するのは容易ではない </li> </ul> @@ -351,45 +384,11 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="treevncnat">TreeVNCのNAT越え</h1> -<ul> - <li>TreeVNCを学外からも画面共有ができるよう拡張したい</li> - <li>ソースコードが膨大で複雜であったためNAT越えの実装には至らなかった</li> - <li>グローバルIPを持っていることを前提としたノードに直接IPを指定して直下の子になるDirect Connectionを実装 -<img src="./images/directConnection.svg" alt="right" width="40%" /></li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="treevncnat-1">TreeVNCのNAT越えの欠点</h1> -<ul> - <li>複数の別ネットワークからの接続があるとルートノードに台数分の負荷がかかる</li> - <li>どちらもプライベートネットワークだった場合に通信できない(中継サーバのプログラムを用意しなければならない)</li> - <li>分散アプリケーションにおけるNATを越えた通信は重要だがプログラマが実装するのは容易ではない </li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="alice">Aliceの課題まとめ</h1> -<ul> - <li>別トポロジー、別ネットワークのアプリケーションに接続したい</li> - <li>コード変更を抑えつつトポロジーの拡張をサポートする機能がTopology Managerに必要</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> <h1 id="topology-manager----">Topology Managerの拡張設計 - 別トポロジーへの接続</h1> -<ol> - <li>接続を要求する側のいずれかの Node が接続先 Topology Manager(A)のIPアドレスを自身を管理するTopology Manager(B)のDSMに保存。<br /> +<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="70%" />//変更</li> -</ol> +<img src="./pictures/private1.svg" alt="opt" width="50%" /></p> </div> @@ -398,7 +397,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="70%" />//変更</li> +<img src="./pictures/private2.svg" alt="opt" width="50%" /></li> </ol> @@ -408,7 +407,7 @@ <h1 id="topology-manager-----2">Topology Managerの拡張設計 - 別トポロジーへの接続</h1> <ol> <li>RootNode(B) が Topology Manager(A) と接 続し、自身の接続先ノードの情報を取得 -<img src="./pictures/private3.svg" alt="opt" width="70%" />//変更</li> +<img src="./pictures/private3.svg" alt="opt" width="50%" /></li> </ol> @@ -418,7 +417,7 @@ <h1 id="topology-manager-----3">Topology Managerの拡張設計 - 別トポロジーへの接続</h1> <ol> <li>取得した情報をもとに RootNode(A) に接続<br /> -<img src="./pictures/private4.svg" alt="opt" width="70%" />//変更</li> +<img src="./pictures/private4.svg" alt="opt" width="50%" /></li> </ol> @@ -427,10 +426,9 @@ <!-- _S9SLIDE_ --> <h1 id="topology-manager">複数のTopology Managerへの対応</h1> <ul> - <li>Topology Managerは各ノードにnodeNameを割り当て管理</li> <li>Topology Nodeは割り当てられたnodeNameをDSとして保持しTopology Managerと通信</li> - <li>Topology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする<br /> -<img src="./pictures/somehostname.svg" alt="opt" width="40%" />//変更</li> + <li>Topology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする必要がある<br /> +<img src="./pictures/somehostname.svg" alt="right" width="40%" /></li> </ul> @@ -440,7 +438,7 @@ <h1 id="local-dsm">Local DSMの切り替えによる対応</h1> <ul> <li>通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理</li> - <li>Tpology Manager/Nodeのコードを大きく変えずにTopology Managerの複数対応が可能<br /> + <li>指定するDSMを変えるだけでTpology Manager/Nodeのコードを大きく変えずにTopology Managerの複数対応が可能<br /> <img src="./pictures/somehostname2.svg" alt="right" width="40%" /></li> </ul> @@ -462,6 +460,7 @@ <!-- _S9SLIDE_ --> <h1 id="topology-manager-----4">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> <ul> + <li>Aliceではトポロジー管理がアプリケーションから分離しているため、Topology Managerを増やすことでトポロジーの拡張が可能</li> <li>各プライベートネットワーク内を管理するPrivate Topology Manager</li> <li>グローバルIPアドレスを持ったGlobal Topology Managerを1つ立てる</li> <li>TopologyNodeが複数対応できるためPrivate/Global Topology Managerに接続<br /> @@ -474,10 +473,12 @@ <!-- _S9SLIDE_ --> <h1 id="topology-manager-----5">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> <ul> - <li>各プライベートネットワークのRootNodeをGlobal Topology Managerが木構造に接続</li> - <li>Global Topology Manager foresutoに木を構成</li> - <li>1つのノードへの接続数は最大4 -<img src="./pictures/3Dtree.svg" alt="right" width="40%" />//変更</li> + <li>Private Topology Managerがプライベートネットワーク内で木構造を構成</li> + <li>各RootNodeをGlobal Topology Managerが木構造に接続(森構造)</li> + <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> </ul> @@ -485,16 +486,6 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="topology-manager-----6">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> -<ul> - <li>Topology Managerの「参加表明のあったノードで木を構成」仕様は変わらない</li> - <li>NAT越えはTopology ManagerのMeta Meta Computationと言える </li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="topology-manager-----7">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> <ol> <li>接続を要求する側のいずれかのノードがGlobal Topology ManagerのIPアドレスを自身を管理するTopology ManagerのDSMに保存 <img src="./pictures/global1.svg" alt="opt" width="40%" /></li> @@ -504,7 +495,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="topology-manager-----8">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> +<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> @@ -514,7 +505,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="topology-manager-----9">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> +<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> @@ -524,7 +515,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="topology-manager-----10">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> +<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> @@ -534,7 +525,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="topology-manager-----11">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> +<h1 id="topology-manager-----10">Topology Managerの拡張設計 - 別ネットワークへの接続</h1> <ol> <li>もし接続が確立されなければ、Global Topology Manager がデータ中継用の CSを用意しデータを中継する <img src="./pictures/global5.svg" alt="opt" width="40%" /></li> @@ -583,7 +574,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-6">まとめ</h1> +<h1 id="section-5">まとめ</h1> <ul> <li>別トポロジー・別ネットワークのアプリケーションとの接続を可能にするため、分散トポロジーの構成・管理をするMeta ComputationであるTopology Manager/Nodeの拡張設計を行った。</li> <li>DSM の切り替えにより Topology Node を複数の Topology Manager に対応させ、Meta Meta Computation として NAT 越えの機能を追加することで、Topology Manager/Node のコードを大きく変えず自由度の高い通信が可能になると期待される。</li> @@ -594,7 +585,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-7">今後の課題</h1> +<h1 id="section-6">今後の課題</h1> <ul> <li>DSMのレイヤー分け <ul>
--- a/presen/sample.markdown Sun May 29 18:10:35 2016 +0900 +++ b/presen/sample.markdown Sun May 29 19:31:26 2016 +0900 @@ -2,29 +2,33 @@ author: 照屋のぞみ 河野真治 profile:琉球大学 工学部 情報工学科 -Topology Managerをもっとかっこよくアピール -前半もっとクリーンナップ - -# 目次 - - # 研究目的(1/3) * 当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。 * ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す。 -* 信頼性とスケーラビリティ向上のため、Aliceでは当研究室が提案しているデータを Data Segment、タスクを Code Segment という単位で分割して記述するプログラミング手法を採用している。 +* スケーラビリティと信頼性の向上のため、Aliceでは当研究室が提案しているデータを Data Segment、タスクを Code Segment という単位で分割して記述するプログラミング手法を採用している。 # 研究目的(2/3) -* Aliceでは、処理をComputationとMetaComputationに階層化し、コアな仕様と複雑な例外処理に分離する。//コアな仕様の例 -* 分散環境構築などの複雑な処理はAliceがMeta Computationとして提供する -* 仕様を大きく変更することなくプログラムの挙動が変えられる//分散処理とかの拡張なら指定だけで良い -* 変更前の信頼性を保ったまま拡張可能にする +* さらに処理をComputationとMetaComputationに階層化し、コアな仕様とそれを支える複雑な例外処理に分離する。 +* 分散環境構築などの複雑な処理をAliceがMeta Computationとして提供するため、仕様の変更を抑えた拡張が可能となる。 +* 例えば、分散アプリケーションでNATを越えて通信するように拡張したい場合、コアな処理は変えずMeta Computationに指定する分散トポロジーを変更するだけで良い。 +* 拡張する際にメインのコードを破壊しないため変更前の信頼性を保つことができる。 # 研究目的(3/3) -* Aliceでは分散トポロジー管理の Meta Computation である Topology Manager -* 本研究では、 Topology Managerに NAT越えを実現するための設計を行う -* そしてその設計が Alice アプリケーション同士の接続も可能にすることを示す -↑逆? -Topologyの課題をかく +* Aliceでは分散トポロジーの管理をTopology ManagerというMeta Computationが行っている +* 本研究では、 多様なネットワーク環境に適応するためにTopology Managerに別ネットワーク・別トポロジーでのノード間接続を実現する設計を行う + +# 目次 +* Aliceの概要 + * Code Segment/Data Segment + * Computation/Meta Computation + * Topology Manager +* 分散アプリケーションの課題 + * 別ネットワークの接続 + * 別トポロジーの接続 +* Topology Managerの拡張設計 +* 他言語等との比較 +* まとめ +* 今後の課題 # Data Segment と Code Segment * Aliceではデータを **Data Segment(DS)** 、タスクを **Code Segment(CS)** という単位に分割して依存関係を記述することでプログラミングを行う。 @@ -45,13 +49,12 @@ # Data Segment Manager * DS の集合体であるデータベースを Alice では **DS Manager(DSM)** と呼ぶ。 * DSM 内の DS には対応する一意の String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。 -![opt](./images/KeyDS.svg){:width="50%"}//変更 # Data Segment Manager * Local DSM … 各ノード固有のデータベース。 * Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在する。 * Remote DSMに書き込むと対応するノードのLocalDSMに書き込まれる -![opt](./images/remote_datasegment.svg){:width="50%"}//変更 +![opt](./pictures/newDSM.svg){:width="50%"}//変更 # Computation と Meta Computation * Aliceでは、計算の本質的な処理をComputatin、Computationとは別のレベルでそれを支える処理をMeta Computationとして分けて考える。 @@ -91,18 +94,19 @@ node2 −> node1[label=”left”] } ``` + # Static Topology Manager * ファイルを読み込んだTopology Managerを立ち上げる * 各Topology NodeはTopology Managerに参加表明をし接続すべきノードの情報を要求する -![opt](./pictures/tree1.svg){:width="70%"} +![opt](./pictures/tree1.svg){:width="40%"} # Static Topology Manager * 参加表明があった順に各ノードにnodeNameを割り当て、接続するべきノードのIPアドレス/ポート番号を送る -![opt](./pictures/tree2.svg){:width="70%"} +![opt](./pictures/tree2.svg){:width="40%"} # Static Topology Manager * Topology Nodeが受け取った情報をもとにRemote DSMを立ちあげ接続し合うことでTree型のオーバーレイネットワーク作られる -![opt](./pictures/tree3.svg){:width="70%"} +![opt](./pictures/tree3.svg){:width="40%"} # Dynamic Topology Manager * 参加するノード数があらかじめ決まっているとは限らない @@ -111,17 +115,25 @@ # 障害発生時の対応 * KeepAliveというMeta Computationがノードの生存確認を行う -* 一定時間内にノードから応答がない場合、そのノードとの接続を切断し、再接続すべきノードの情報をTopologyManagerに要求する +* Closed Event ManagerというMeta Computationは切断・再接続時に指定 +* これらのMeta ComputationはTopology Manager内でも使用されるため、Meta Meta Computationとも言えるされたCSを実行する + +# TreeVNCのNAT越え +* TreeVNC + * 当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム + * TightVNCを拡張して作られている +![right](./images/treeVNC.svg){:width="40%"} -# 障害発生時の対応 -* Closed Event ManagerというMeta Computationは切断・再接続時に指定されたCSを実行する -* 再接続時に特定の処理を行いたい場合はCSを書いてClosed Event Managerに登録する -* これらのMeta ComputationはTopology Manager内でも使用されるため、Meta Meta Computationとも言える +# TreeVNCのNAT越え +* TreeVNCを学外からも画面共有ができるよう拡張したい +* ソースコードが膨大で複雜であったためNAT越えの実装には至らなかった +* グローバルIPを持っていることを前提としたノードに直接IPを指定して直下の子になるDirect Connectionを実装し受信のみを可能にしている +![right](./pictures/directConnection.svg){:width="40%"} -# TreeVNC -* 当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム -* TightVNCを拡張して作られている -![right](./images/treeVNC.svg){:width="40%"} +# TreeVNCのNAT越えの欠点 +* 複数の別ネットワークからの接続があるとルートノードにネットワーク数分の負荷がかかる +* どちらもプライベートネットワークだった場合に通信できない(中継サーバのプログラムを用意しなければならない) +* 分散アプリケーションにおけるNATを越えた通信は重要だがプログラマが実装するのは容易ではない # AliceVNCとAliceChatの接続 * AliceVNC:Alice上に実装したTreeVNC(Tree Topology) @@ -130,48 +142,32 @@ * 画面のスナップショットをチャットに載せる * チャットの内容を画面にコメントとして流す -# TreeVNCのNAT越え -* TreeVNCを学外からも画面共有ができるよう拡張したい -* ソースコードが膨大で複雜であったためNAT越えの実装には至らなかった -* グローバルIPを持っていることを前提としたノードに直接IPを指定して直下の子になるDirect Connectionを実装 -![right](./images/directConnection.svg){:width="40%"} - -# TreeVNCのNAT越えの欠点 -* 複数の別ネットワークからの接続があるとルートノードに台数分の負荷がかかる -* どちらもプライベートネットワークだった場合に通信できない(中継サーバのプログラムを用意しなければならない) -* 分散アプリケーションにおけるNATを越えた通信は重要だがプログラマが実装するのは容易ではない - - -# Aliceの課題まとめ -* 別トポロジー、別ネットワークのアプリケーションに接続したい -* コード変更を抑えつつトポロジーの拡張をサポートする機能がTopology Managerに必要 - # Topology Managerの拡張設計 - 別トポロジーへの接続 +以降の機能をMeta Meta Computationとして実装 1. 接続を要求する側のいずれかの Node が接続先 Topology Manager(A)のIPアドレスを自身を管理するTopology Manager(B)のDSMに保存。 *ここでTopology Managerに保存することでRootNodeが落ちてもトポロジーの再構成時にまた接続要求が出せる* -![opt](./pictures/private1.svg){:width="70%"}//変更 +![opt](./pictures/private1.svg){:width="50%"} # Topology Managerの拡張設計 - 別トポロジーへの接続 2. Topology Manager(B)はRootNode(B)にTopology Manager(A) への接続をするよう要求 -![opt](./pictures/private2.svg){:width="70%"}//変更 +![opt](./pictures/private2.svg){:width="50%"} # Topology Managerの拡張設計 - 別トポロジーへの接続 3. RootNode(B) が Topology Manager(A) と接 続し、自身の接続先ノードの情報を取得 -![opt](./pictures/private3.svg){:width="70%"}//変更 +![opt](./pictures/private3.svg){:width="50%"} # Topology Managerの拡張設計 - 別トポロジーへの接続 4. 取得した情報をもとに RootNode(A) に接続 -![opt](./pictures/private4.svg){:width="70%"}//変更 +![opt](./pictures/private4.svg){:width="50%"} # 複数のTopology Managerへの対応 -* Topology Managerは各ノードにnodeNameを割り当て管理 * Topology Nodeは割り当てられたnodeNameをDSとして保持しTopology Managerと通信 -* Topology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする -![opt](./pictures/somehostname.svg){:width="40%"}//変更 +* Topology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする必要がある +![right](./pictures/somehostname.svg){:width="40%"} # Local DSMの切り替えによる対応 * 通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理 -* Tpology Manager/Nodeのコードを大きく変えずにTopology Managerの複数対応が可能 +* 指定するDSMを変えるだけでTpology Manager/Nodeのコードを大きく変えずにTopology Managerの複数対応が可能 ![right](./pictures/somehostname2.svg){:width="40%"} # Keyの切り替えによる対応 @@ -181,20 +177,19 @@ ![right](./pictures/somehostname3.svg){:width="40%"}//変更 # Topology Managerの拡張設計 - 別ネットワークへの接続 +* Aliceではトポロジー管理がアプリケーションから分離しているため、Topology Managerを増やすことでトポロジーの拡張が可能 * 各プライベートネットワーク内を管理するPrivate Topology Manager * グローバルIPアドレスを持ったGlobal Topology Managerを1つ立てる * TopologyNodeが複数対応できるためPrivate/Global Topology Managerに接続 ![opt](./pictures/overNAT.svg){:width="40%"} # Topology Managerの拡張設計 - 別ネットワークへの接続 -* 各プライベートネットワークのRootNodeをGlobal Topology Managerが木構造に接続 -* Global Topology Manager foresutoに木を構成 +* Private Topology Managerがプライベートネットワーク内で木構造を構成 +* 各RootNodeをGlobal Topology Managerが木構造に接続(森構造) * 1つのノードへの接続数は最大4 -![right](./pictures/3Dtree.svg){:width="40%"}//変更 - -# Topology Managerの拡張設計 - 別ネットワークへの接続 * Topology Managerの「参加表明のあったノードで木を構成」仕様は変わらない * NAT越えはTopology ManagerのMeta Meta Computationと言える +![opt](./pictures/3Dtree.svg){:width="40%"}//変更 # Topology Managerの拡張設計 - 別ネットワークへの接続 1. 接続を要求する側のいずれかのノードがGlobal Topology ManagerのIPアドレスを自身を管理するTopology ManagerのDSMに保存