Mercurial > hg > Papers > 2015 > parusu-prosym
changeset 11:6daaf5e03e4d
Add MindMap
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 28 Nov 2015 19:52:32 +0900 |
parents | 7e2f72bafa1b |
children | aaa9a0f50d3f |
files | paper/prosym.bib paper/prosym.pdf paper/prosym.tex prosym.mm |
diffstat | 4 files changed, 146 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/prosym.bib Tue Nov 10 22:30:05 2015 +0900 +++ b/paper/prosym.bib Sat Nov 28 19:52:32 2015 +0900 @@ -10,7 +10,7 @@ } @article{oc:thesis, - author = "{Miwa OSHIRO and Shinji KONO}", + author = "{Miwa OSHIRO}", title = "授業やゼミ向けの画面配信システムTreeVNCの拡張機能", journal = "琉球大学工学部情報工学科平成26年度学位論文(学士) ", year = 2014
--- a/paper/prosym.tex Tue Nov 10 22:30:05 2015 +0900 +++ b/paper/prosym.tex Sat Nov 28 19:52:32 2015 +0900 @@ -76,19 +76,24 @@ 教員が操作する画面をそのまま学生に配信したり、 ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。 -TreeVNC画面配信システム\cite{oc:thesis}\cite{taninari:2012a}は、 -参加したクライアントをバイナリツリー状に接続し、 +TreeVNC\cite{oc:thesis}\cite{taninari:2012a}は参加したクライアントをバイナリツリー状に接続し、 配信コストをクライアントにバランスさせる仕組みになっている。 -なので、多人数が参加しても処理性能が下がらない。 +そのため、多人数が参加しても処理性能が下がらない。 また、RFBプロトコルを用いているので、ケーブルの差し替えなしに 共有している画面の切り替えが可能になっている。 -今研究では、 WAN 、マルチディスプレイへの対応を行った。 +本研究では WAN 、マルチディスプレイへの対応を行った。 WANへの対応として、新しい接続方法を提案し、実装を行った。 また、マルチディスプレイへの対応としては配信する際に、配信するディスプレイ情報を取得し、配信を行うことで、対応した。 \section{画面配信システムTreeVNC} -\subsection*{[RFBプロトコル]} +\subsection{VNCについて} +VNC(Virtual Network Computing) は、 RFBプロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。 +VNC はサーバー側とクライアント(ビューア)側に分かれている。 サーバを起動し、クライアントがサーバに接続を行い遠隔操作を可能とする。 + +VNCを使用すればクライアント側にサーバー側の画面を表示することが可能である。 しかし、多人数のクライアントが1つのサーバーに接続してしまうと処理性能が落ちてしまうという問題点がある。 + +\subsection{RFBプロトコル} RFB(remote frame buffer)プロトコル\cite{rfbProtocol}とは、自身の画面を送信し、ネットワーク越しに他者の画面に表示するプロトコルである。 ユーザが居る側をRFBクライアント側と呼び、Framebufferへの更新が行われる側はRFBサーバと呼ぶ。 Framebufferとは、メモリ上に置かれた画像データのことである。 @@ -98,24 +103,15 @@ 更にRFBクライアントのFramebufferUpdateRequestが来るとそれに答え返信する。 RFBプロトコルは、描画データに使われるエンコードが多数用意されており、また独自のエンコードを実装することもできるプロトコルである。 -\subsection*{[TightVNC]} -TightVNC(Tight Virtual Network Computing)\cite{tightvnc}はJavaを用いて作成されたRFBプロトコルのクライアントである。 -本研究で作成したTreeVNCはTightVNCを元に作成されている。 +\subsection{TreeVNC の構造} +TreeVNC は Java を用いて作成された TightVNC(Tight Virtual Network Computing)\cite{tightvnc} を元に作成されている。 -\subsection*{[多人数で VNC を使用する時の問題点]} -多人数で従来の VNC を使用する際、1つのコンピュータに多人数が同時につながり、 -処理が集中してしまい、性能が大幅に落ちてしまうという問題が生じる。 +TreeVNC は クライアント同士を接続させ、画面描画のデータを受け取ったクライアントが次のクライアントにデータを流す。 -ゼミ等の画面配信者が頻繁に切り替わる場合、 -配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。 - -\subsection*{[TreeVNC の構造]} -多人数で VNC を用いるために、クライアントの接続がサーバに一極集中してしまう問題を解決する。 -そのために、 TreeVNC はサーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。 +TreeVNC はサーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。 バイナリツリーなら、各nodeに最大2台分のクライアントしか接続されない。 -$N$台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は、 -従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各 node が2回ずつコピーするだけで済む。 -TreeVNC は、root への負荷を各 node に分散することにより、処理性能が向上している。 +$N$台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各ノードが2回ずつコピーするだけで済む。 +TreeVNC は ルートへの負荷を各ノードに分散することにより、処理性能が向上している。 \begin{figure}[ht] \begin{center} @@ -125,50 +121,26 @@ \label{fig:tree} \end{figure} -\subsection*{[Multicast や Broadcast を用いたVNC]} -Multicast とは、 -同一ネットワーク内でマルチキャストアドレスを持っている端末に対してデータを送信することである。 -Broadcast とは、 -同一ネットワーク上の全ての端末に対してデータを送信することである。 -どちらの通信方法も、root からのデータ送信は1回でよく、 -1度データの送信を行うとデータの複製はルータが行う。 - -VNC を Multicast や Broadcast の通信方法を用いて実装すると、 -画像データの送信が1度で済むため、負荷分散のために木構造を形成する必要もなくなる。 - -しかし、これらの通信方法でのパケットの扱いには -\begin{itemize} - \item 送信可能なパケットのブロックサイズが 64000byte までであると決まっている - \item パケットが途中で消失してしまっても特定することができない -\end{itemize} -といった性質がある。 - - -VNC でこれらの通信方法を用いて実装する場合、 -パケットの扱いの性質を乗り越えなければならない。 - -送信可能なパケットのサイズが決まっているので、 -画面データは 64000byte 以下に分割し送信しなければならない。 -しかし、現在の TreeVNC で用いている方法では、 -データ分割の処理には時間がかかってしまう。 - -パケットの消失を検知するために、 -各パケットに対してシリアル番号を振り分ける。 -パケットを受信した node 側で、 -シリアル番号が連番で届いているのかどうかを調べれば、消失を検知することが可能である。 -もしパケットが届いていなかった場合は、root に対して再送要求を送信すれば良い。 -しかし、Multicast や Broadcast 通信ではパケットロス率が高かった。 - -これらの通信方法を用いての VNC の実装にはもう更なる工夫が必要である。 +\subsection{TightVNC} +TightVNC(Tight Virtual Network Computing)\cite{tightvnc}はJavaを用いて作成されたRFBプロトコルのクライアントである。 +本研究で作成したTreeVNCはTightVNCを元に作成されている。 -\subsection*{[node 間で行われるメッセージ通信]} +\subsection{多人数で VNC を使用する時の問題点} +多人数で従来の VNC を使用する際、1つのコンピュータに多人数が同時につながり、 +処理が集中してしまい、性能が大幅に落ちてしまうという問題が生じる。 + +ゼミ等の画面配信者が頻繁に切り替わる場合、 +配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。 + +\subsection{node 間で行われるメッセージ通信} RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。 TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。 \begin{table}[h!] + \caption{通信経路とメッセージ一覧} \large \scalebox{0.4} { \begin{tabular}{|l|l|l|} \hline @@ -200,7 +172,6 @@ & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline \end{tabular} } - \caption{通信経路とメッセージ一覧} \label{tb:message} \end{table} @@ -231,7 +202,7 @@ \end{figure} -\subsection*{[配信画面切り替え]} +\subsection{配信画面切り替え} ゼミでは発表者が順々に入れ替わる。発表者が入れ替わる度に共有する画面の切り替えが必要となる。 ゼミを円滑に進めるために、画面の切り替えをスムーズに行いたい。 @@ -280,7 +251,7 @@ そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。 ディスプレイの情報は個々のクライアントでしか取得ができない。 -なので、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 +そのため、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 その座標を root への画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に付加させる。 root は 配信側の VNCServer に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY message に送信された座標を付加する。 VNCServer は要求された座標内の画像データを FRAMEBUFFER\_UPDATE message で root に送信する。 @@ -341,7 +312,7 @@ Direct Connection した node はそのネットワークの root になり、node はそのネットワークの root に接続し、木構造を生成する。 配信側の root は Direct Connection で接続された node に対して Framebuffer Update で 画像データを別ネットワークの node に送信する。 -Framebuffer Update が送信された node はそのネットワークの root なので、子 node に対して Framebuffer Update を送信する。 +Framebuffer Update が送信された node はそのネットワークの root であるため、子 node に対して Framebuffer Update を送信する。 これにより、別ネットワークでの画面共有が可能となる。 @@ -355,7 +326,7 @@ \section{評価} -\subsection*{[木の深さによるメッセージ伝達の遅延]} +\subsection{木の深さによるメッセージ伝達の遅延} VNCServer から受信する画像データ、 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。 接続する人数が増える毎に木の段数は増えていく。 @@ -363,11 +334,11 @@ メッセージが遅延することなく伝達できているかを検証する実験を行った。 -\subsection*{[実験環境]} +\subsection{実験環境} 授業を受講している学生が TreeVNC を使用した状態で実験を行った。 TreeVNC には最大で34名が接続していた。 -\subsection*{[メッセージを使用した実測]} +\subsection*{メッセージを使用した実測} TreeVNC を伝搬するメッセージに、CHECK\_DELAY・CHECK\_DELAY\_REPLY を追加した。 CHECK\_DELAY は root から node の末端まで伝達するメッセージ(図\ref{fig:checkdelay}, 左)、 CHECK\_DELAY\_REPLY は各 node から root まで伝達するメッセージ(図\ref{fig:checkdelay}, 右)である。 @@ -393,7 +364,7 @@ 計算方法を以下のソースコード\ref{calc}に記述する。 各 node にデータを下ろす際も、root にデータが上る際も、 木を伝い受け渡されている。 -なので、データが root から末端 node に伝わる時間は、 +そのため、データが root から末端 node に伝わる時間は、 CHECK\_DELAY を送信した時間と、 CHECK\_DELAY\_REPLY を受信した時間の半分であるといえる。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/prosym.mm Sat Nov 28 19:52:32 2015 +0900 @@ -0,0 +1,110 @@ +<map version="1.0.1"> +<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> +<node CREATED="1445930085318" ID="ID_675137741" MODIFIED="1448621540701" TEXT="prosym"> +<font NAME="SansSerif" SIZE="23"/> +<node CREATED="1445933322023" ID="ID_1627829708" MODIFIED="1445933326193" POSITION="right" TEXT="研究目的"> +<node CREATED="1445935104235" ID="ID_964817693" MODIFIED="1445935136696" TEXT="PCを用いてコミュニケーションの充実を図る"/> +<node CREATED="1445935117122" ID="ID_992983627" MODIFIED="1445935129355" TEXT="円滑にゼミや講義を行う"/> +<node CREATED="1445935141327" ID="ID_1960793402" MODIFIED="1445935159103" TEXT="新機能を実装した。"/> +</node> +<node CREATED="1445931170208" ID="ID_1557707622" MODIFIED="1445931183955" POSITION="right" TEXT="treevnc について"> +<node CREATED="1448707561231" ID="ID_1370896905" MODIFIED="1448707564987" TEXT="通常のVNC"> +<node CREATED="1448707570906" ID="ID_711821521" MODIFIED="1448707578658" TEXT="サーバー1に対して多数のクライアント"/> +</node> +<node CREATED="1445931183956" ID="ID_1017193736" MODIFIED="1445931189139" TEXT="Tight VNC"/> +<node CREATED="1445931191725" ID="ID_1765259491" MODIFIED="1445931197171" TEXT="RFBプロトコル"/> +<node CREATED="1445931801658" ID="ID_1809843378" MODIFIED="1445931808093" TEXT="TreeVNCの構造"> +<node CREATED="1445934896820" ID="ID_1398539703" MODIFIED="1445934903861" TEXT="バイナリツリー"/> +<node CREATED="1445934911108" ID="ID_1630472567" MODIFIED="1445934928697" TEXT="node 間のメッセージ通信"/> +<node CREATED="1448707588022" ID="ID_1657579029" MODIFIED="1448707603776" TEXT="Tight VNC を元に開発(Java)"/> +</node> +<node CREATED="1445931791442" ID="ID_1147767082" MODIFIED="1445931796810" TEXT="画面切り替え"/> +<node CREATED="1445931820354" ID="ID_299141483" MODIFIED="1445931825872" TEXT="Muliticast Queue"/> +</node> +<node CREATED="1445931677448" ID="ID_827096885" MODIFIED="1445931682839" POSITION="right" TEXT="Tree VNCの新機能"> +<node CREATED="1445931727411" ID="ID_1830466166" MODIFIED="1445931731550" TEXT="WANの対応"> +<node CREATED="1445931828231" ID="ID_836904929" MODIFIED="1445933450607" TEXT="Direct ModeでWANへの対応を行う"/> +</node> +<node CREATED="1445931734465" ID="ID_1208797584" MODIFIED="1445931749702" TEXT="QUALITYモード, SPEEDモード"> +<node CREATED="1445935281767" ID="ID_1777115192" MODIFIED="1445935291504" TEXT="windowのoptionで選択可能"/> +</node> +<node CREATED="1445931750285" ID="ID_867416524" MODIFIED="1445931755037" TEXT="マルチディスプレイ対応"> +<node CREATED="1445935293033" ID="ID_334245462" MODIFIED="1445935319856" TEXT="--filterSingleDisplay"/> +<node CREATED="1445935327641" ID="ID_1839126687" MODIFIED="1445935341463" TEXT="shareする人が選択する方式にしたい"/> +<node CREATED="1447059445587" ID="ID_905485729" MODIFIED="1447059538239" TEXT="選択したscreenの左上と右下をserverChangeReqestで送る、その範囲の指定し、rootからupdate reqestを送る"/> +</node> +<node CREATED="1445931756874" ID="ID_566498368" MODIFIED="1445931762971" TEXT="Retinaの対応"> +<node CREATED="1445935344590" ID="ID_1999819197" MODIFIED="1445935363509" TEXT="initDataで拡大率を送る"/> +</node> +<node CREATED="1445931766673" ID="ID_1616760154" MODIFIED="1445938337580" TEXT="別threadでのSCR(server change request)"/> +<node CREATED="1445938308271" ID="ID_822542723" MODIFIED="1445938312573" TEXT="無線LANとの混在"/> +</node> +<node CREATED="1445931697349" ID="ID_1856783845" MODIFIED="1445931701389" POSITION="right" TEXT="Tree VNCの評価"> +<node CREATED="1445933357902" ID="ID_1232683513" MODIFIED="1445933363222" TEXT="比較もする?"/> +<node CREATED="1445938216535" ID="ID_1597156513" MODIFIED="1445938232786" TEXT="ゼミでの使い方や講義のでの使い方"/> +<node CREATED="1445938248614" ID="ID_1377825176" MODIFIED="1445938259113" TEXT="遅延速度"> +<node CREATED="1445938278541" ID="ID_1053633223" MODIFIED="1445938300645" TEXT="OCさんのやつをそのまま使うか、checkdelayの奴をonにするか"/> +<node CREATED="1448706786214" ID="ID_1716984535" MODIFIED="1448707709972" TEXT="容量込みの奴を測定"> +<node CREATED="1448706797946" ID="ID_546956630" MODIFIED="1448707412871" TEXT="極端遅いやつがいる"> +<node CREATED="1448707412872" ID="ID_1332684961" MODIFIED="1448707468295" TEXT="java 1.8 update 25 当たりは動作が重い"/> +<node CREATED="1448707470360" ID="ID_959367251" MODIFIED="1448707496333" TEXT="遅い奴を検出し一番下の深さまで移動する <- これは今後の課題で"/> +</node> +<node CREATED="1448707385327" ID="ID_557647618" MODIFIED="1448707398943" TEXT="グラフは全部乗っける"/> +<node CREATED="1448707400336" ID="ID_1834491492" MODIFIED="1448707650645" TEXT="容量が小さくても時間がかかる場所が"> +<node CREATED="1448707650646" ID="ID_830674535" MODIFIED="1448707737987" TEXT="大容量の画像の送信の後のdelayが残っている?"/> +</node> +<node CREATED="1448707711277" ID="ID_1076173589" MODIFIED="1448707719628" TEXT="一応比例しているところが"/> +</node> +</node> +</node> +<node CREATED="1445931705061" ID="ID_1557032393" MODIFIED="1445931718941" POSITION="right" TEXT="まとめ, 今後の課題"> +<node CREATED="1445932141204" ID="ID_835135352" MODIFIED="1445932143298" TEXT="安定化"> +<node CREATED="1448707502598" ID="ID_613933119" MODIFIED="1448707521380" TEXT="遅いやつを検出して、一番下の深さまで移動"/> +<node CREATED="1445932171459" ID="ID_1070148801" MODIFIED="1445932180803" TEXT="SCRを飛ばせないモードを作る"> +<node CREATED="1448707749967" ID="ID_172170152" MODIFIED="1448707756353" TEXT="最初の一つだけ特別扱い?"/> +<node CREATED="1448707757703" ID="ID_65009830" MODIFIED="1448707764225" TEXT="暗証番号?"/> +</node> +</node> +<node CREATED="1445932144564" ID="ID_1970340121" MODIFIED="1445932157978" TEXT="usabilityの向上"/> +<node CREATED="1445934409865" ID="ID_1565374263" MODIFIED="1445934414215" TEXT="卒論から"> +<node CREATED="1445934325168" ID="ID_1337451527" MODIFIED="1445934328107" TEXT="音声"/> +<node CREATED="1445934328541" ID="ID_991347153" MODIFIED="1445934340050" TEXT="記録?"/> +<node CREATED="1445934340772" ID="ID_862407380" MODIFIED="1445934359690" TEXT="質問・意見の共有"/> +<node CREATED="1445934363595" ID="ID_986217465" MODIFIED="1445934378395" TEXT="MindMapでの書記 "/> +</node> +<node CREATED="1448707538793" ID="ID_282144835" MODIFIED="1448707556378" TEXT="新機能の評価, 評価方法"/> +</node> +<node CREATED="1448621541278" ID="ID_291938664" MODIFIED="1448621545726" POSITION="left" TEXT="コメントfeedback"> +<node CREATED="1448621546345" ID="ID_1754867891" MODIFIED="1448621553205" TEXT="もうちょい構成を考えたほうが良い"> +<node CREATED="1448621768826" ID="ID_561056340" MODIFIED="1448621792201" TEXT="TreeVNCを誰が作ったのか、TightVNCと何が違うのか 明確な区分ができていない"> +<node CREATED="1448638711227" ID="ID_1337077548" MODIFIED="1448638717592" TEXT="いつ作ったか"/> +</node> +<node CREATED="1448622093939" ID="ID_1099493369" MODIFIED="1448622100040" TEXT="そもそも前提がわからない"> +<node CREATED="1448622106105" ID="ID_1049581024" MODIFIED="1448622126823" TEXT="ユーザとかroot, ndoe, VNC Server の関係"/> +<node CREATED="1448638743816" ID="ID_372820006" MODIFIED="1448638762843" TEXT="root node は1クライアントにすぎないのか"/> +</node> +<node CREATED="1448638805819" ID="ID_1237772580" MODIFIED="1448638811593" TEXT="改良"> +<node CREATED="1448638811594" ID="ID_451882228" MODIFIED="1448638830148" TEXT="subsectionに分けたほうが良い(これどうしようかな)"> +<node CREATED="1448707802047" ID="ID_1130760772" MODIFIED="1448707814953" TEXT="treeVNCの概要"/> +<node CREATED="1448707815441" ID="ID_1992106254" MODIFIED="1448707818646" TEXT="新機能"/> +</node> +<node CREATED="1448638831814" ID="ID_1668625971" MODIFIED="1448638854625" TEXT="2章の説明中に改良の動機を作るべき"/> +</node> +</node> +<node CREATED="1448621555565" ID="ID_1326121353" MODIFIED="1448621563795" TEXT="評価の部分が今回の目的と合っていない"> +<node CREATED="1448707834240" ID="ID_645485380" MODIFIED="1448707856966" TEXT="評価を後ろじゃなくて新機の前に作る?"/> +</node> +<node CREATED="1448621565085" ID="ID_842474829" MODIFIED="1448621728666" TEXT="check delayが画像データを含んでいるの?"> +<node CREATED="1448621583215" ID="ID_1385385559" MODIFIED="1448621591649" TEXT="含んでいなかったけど含むデータを撮った"/> +<node CREATED="1448621656423" ID="ID_981721712" MODIFIED="1448621760507" TEXT="あまりにも遅いclientがいる"> +<node CREATED="1448621669406" ID="ID_470168220" MODIFIED="1448621744886" TEXT="遅いclientを検出したらそれを一番下の深さに移動させる"/> +</node> +</node> +<node CREATED="1448621596554" ID="ID_651132384" MODIFIED="1448621616016" TEXT="VPNでいいんじゃいの?"> +<node CREATED="1448621605349" ID="ID_399948822" MODIFIED="1448621628063" TEXT="VPNを含んだ木構造を考えると辛いものが"> +<node CREATED="1448621629988" ID="ID_1162040386" MODIFIED="1448707886715" TEXT="1つだけ別ネットワークのclientが存在することに"/> +</node> +</node> +</node> +</node> +</map>