Mercurial > hg > Papers > 2016 > parusu-thesis
changeset 29:81e6e6f33521
Update
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 17 Feb 2016 22:06:25 +0900 |
parents | 1e36dc43391b |
children | f690dec3cbd5 |
files | paper/main.pdf paper/main.tex paper/reference.bib prepaper/finalPre.pdf prepaper/finalPre.tex |
diffstat | 5 files changed, 106 insertions(+), 54 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/main.tex Wed Feb 17 18:57:25 2016 +0900 +++ b/paper/main.tex Wed Feb 17 22:06:25 2016 +0900 @@ -8,34 +8,36 @@ \input{dummy} %% font -\lstset{% - language={java},%使用言語 - basicstyle={\small},%書体 - commentstyle={\small\itshape},%コメントの書体 - keywordstyle={\small\bfseries},%キーワードの書体 - %identifierstyle={\small},% - %ndkeywordstyle={\small},% - stringstyle={\small},%文字列の書体 - frame={trlb},%外枠 - breaklines=true,%改行 - columns=[l]{fullflexible},% - xrightmargin=0zw,% - xleftmargin=3zw,% - numbers=left,%行番号の表示 - numberstyle={\scriptsize},%行番号の書体 - numbersep=1zw,% - stepnumber=1, - lineskip=-0.5ex,% - captionpos=b,%キャプションの位置 - moredelim=**[s][\color{red}]{\"compressed}{\"}, +\lstset{ + language=java, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize},% + identifierstyle={\footnotesize},% + commentstyle={\footnotesize\itshape},% + keywordstyle={\footnotesize\bfseries},% + ndkeywordstyle={\footnotesize},% + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible},% + xrightmargin=0zw,% + xleftmargin=1zw,% + aboveskip=1zw, + numberstyle={\scriptsize},% + stepnumber=1, + numbersep=0.5zw,% + lineskip=-0.5ex, + numbers=left } \renewcommand{\lstlistingname}{Code} \setlength{\itemsep}{-1zh} + \title{PC画面配信システムTreeVNCの NAT への対応} %\title{Supporting NAT in Screen Sharing System TreeVNC} \icon{ - \includegraphics[width=80mm,bb=0 0 595 642]{fig/ryukyu.pdf} %%元は 642じゃなくて842 + \includegraphics[width=80mm,bb=0 0 595 642]{fig/ryukyu.pdf} %%元は 642じゃなくて842 } \year{平成27年度 卒業論文} \belongto{琉球大学工学部情報工学科} @@ -184,12 +186,12 @@ \begin{table}[htbp] \begin{center} - \caption{ポート一本あたりの通信量(N はノード数, d はデータ量)} - \begin{tabular}{|l|l|l|} \hline - & 通常の VNC & TreeVNC \\ \hline - 通信量 & N * d & (2 + 1) * d \\ \hline - \end{tabular} - \label{tb:treeVncTheory} + \caption{ポート一本あたりの通信量(N はノード数, d はデータ量)} + \begin{tabular}{|l|l|l|} \hline + & 通常の VNC & TreeVNC \\ \hline + 通信量 & N * d & (2 + 1) * d \\ \hline + \end{tabular} + \label{tb:treeVncTheory} \end{center} \end{table} @@ -249,7 +251,7 @@ \scriptsize \begin{tabular}{|l|l|l|} \hline 通信経路 & message & 説明 \\ \hline \hline - & FIND\_ROOT & TreeVNC接続時にRoot Nodeを探す。 \\ \cline{2-3} + & FIND\_ROOT & TreeVNC接続時にRoot Nodeを探す。 \\ \cline{2-3} send direct message & WHERE\_TO\_CONNECT & 接続先をRoot Nodeに聞く。 \\ \cline{2-3} (Node to Root) & LOST\_CHILD & 子Nodeの切断をRoot Nodeに知らせる。 \\ \hline \hline @@ -460,11 +462,11 @@ \end{center} \end{figure} -\section{NATを越えた画面切り替え} +\section{NATを越えた共有画面切り替え} 図\ref{fig:directConnectionServerChange} は Direct Connection での画面切り替えの実装案である。 まず Direct Connection した ネットワークのクライアントから SERVER\_CHANGE\_REQUEST メッセージが送信される。 SERVER\_CHAGEN\_REQUEST メッセージを受け取った そのネットワークの Root Node は Direct Connection した先の Root Node へ SERVER\_CHANGE\_REQUEST を -1 を付加して送信する。 - -1 を送信することで、 受け取った Root Node は別のネットワークからの画面切り替え要求ということを判断することができる。 +-1 を送信することで、 受け取った Root Node は別のネットワークからの画面切り替え要求ということを判断することができる。 別ネットワークからの切り替え要求を受け取った Root Node は読み込み用と書き込み用のソケットを入れ替える。 ソケットを入れ替えることで、 切り替え要求した Root Node のデータを受け取ることが可能となる。 @@ -484,13 +486,20 @@ しかし、接続状態を維持したままの入れ替えは実装が複雑になっており、今回追加した Direct Connection ではNATを越えたネットワークの画面の配信を行うのみであり、 画面切り替えを行うことが出来ない。 -% 全て章に \chapter{マルチディスプレイ対応} \section{マルチディスプレイ時の問題点} -画面配信側の PC がマルチディスプレイの場合 VNC サーバーからは複数の画面全体の画像データが送信されてしまう。 +画面配信側の PC がマルチディスプレイの場合、 図\ref{fig:multiDisplay}のように VNC サーバーからは複数の画面全体の画像データが送信されてしまう。 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。 -そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した\cite{parusu:2016a}。 +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.6]{./images/multiDisplay.pdf} + \end{center} + \caption{マルチディスプレイでの送信} + \label{fig:multiDisplay} +\end{figure} +\section{ディスプレイの選択} +マルチディスプレイでの問題を解決するため、画面を共有する際にディスプレイを選択させ、画面共有を行う機能を追加した\cite{parusu:2016a}。 ディスプレイの情報は個々のクライアントでしか取得ができない。 そのため、配信側は画面の切り替えを行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 @@ -509,29 +518,55 @@ \label{fig:multidisplay} \end{figure} -\chapter{画面切り替えの安定化} + +\chapter{共有画面切り替えの安定化} % もうちょい細かく Tight VNC はシングルthread でやっていた % ユーザーが途中でキャンセルされると辛い とかの図を入れると1章分あるか? % protoclContext % protocolContext とか connectionPresenter とかのクラスdiagramで書くと良い -画面切り替えを行う際、 配信中の画面を停止した後に画面の切り替え処理を実行していた。 -しかし、 切り替え先の VNC サーバーへの接続に時間がかかったり、 切り替え先の設定ミスなどで画面の切替がスムーズに行えない場合があった。 +% コード乗っけても問題ない +\section{画面切り替えの問題点} +TightVNC では VNC サーバーへの接続を 1つのスレッドで行っていた。 +そのため、 Tree VNC でも画面切り替えを行う際 配信中の画面を停止した後に VNC サーバーへの接続を行っていた。サーバー +しかし、 切り替え先の VNC サーバーへの接続に時間がかかったり、 切り替え先のクライアントに共有確認した際にキャンセルすると TreeVNC が停止するという問題があった。 + +\section{切り替え用スレッドの生成} +そこで、 画面切り替えを行う際に新しく切り替え用のスレッドを生成し処理する変更を行った。 +実際に切り替えのスレッドを生成している inhelitClients メソッドを Code \ref{src:inhelitClients} に示す。 -そこで、 画面切り替えを行う際に新しく切り替え用のスレッドを生成し処理する変更を行った。 -Root Node は SERVER\_CHANGE\_REQUEST を受け取ると、 配信状態を維持したまま、画面切り替え用に新しくスレッドを生成する。 -切り替え用のスレッドは切り替えに必要なデータの設定、 VNC サーバー への接続など通常の切り替え処理を実行する。 +inhelitClients(Code \ref{src:inhelitClients}) は 3行目でConnectionPresenterクラスを新しく作っている。 +ConnectionPresenter クラスは切り替えに必要な情報や処理が入っているクラスである。 + +8〜13行目は新しくスレッドを生成して実行している。このスレッドでは ConnectionPresenter クラスの startVNCConnection メソッドを読んでいる。 +\lstinputlisting[label=src:inhelitClients, caption=切り替え用スレッドの生成]{src/InhelitClients.java} + + +\section{切り替え用スレッドの動作} +図\ref{fig:serverChangeThread}は画面切り替えの際に切り替え用スレッドを用いたときの通信の流れである。 +まず共有先の Node から切り替え用のSERVER\_CHANGE\_REQUEST メッセージが送信される。 +メッセージを受け取った Root Node は 切り替え用のスレッドを生成し、切り替えの処理を任せて、現在の配信の続行する。 +切り替え用のスレッドではまず切り替えに必要なデータの設定、 VNC サーバー への接続など通常の切り替え処理を実行する。 切り替えが完了した後に、 現在配信中の画面を停止し、画面の切替を行う。 -切り替え用のスレッドを用意することで、配信状況を維持したままスムーズな画面切り替えが可能になった。 + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.5]{./images/serverChangeThread.pdf} + \end{center} + \caption{切り替え用スレッドの動作} + \label{fig:serverChangeThread} +\end{figure} -\chapter{クライアントへのエラー通知} -% こっちも問題から定義して~ + +\chapter{各 Node へのエラー通知} -TreeVNC には接続しているクライアントへのエラーの通知を行うことが出来なかった。 -そのため、 画面切り替えを行う際に切り替え先が VNC サーバーの共有設定をしていない場合 Root Node に接続エラーのダイアログが表示されるという実装になっており、切り替えを行ったクライアントには通知されていなかった。 +\section{Root Node へのエラーメッセージの表示} +TreeVNC には接続している各 Node へのエラーの通知を行うことが出来なかった。 +そのため、 画面切り替えを行う際に切り替え先が VNC サーバーの共有設定をしていない場合 Root Node に接続エラーのダイアログが表示されるという実装になっており、切り替えを行った Node には一切通知されなかった。 +\section{ERROR\_ANNOUNCE メッセージ} この問題を解決するために新しくERROR\_ANNOUNCE というメッセージを追加した。 図\ref{fig:errorAnnounce} は Node3 に対してエラー通知を行っている例を示している。 -ERROR\_ANNOUNCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したいクライアントの Node Nuber と エラー内容の文字列を付加して送信する。 +ERROR\_ANNOUNCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したい Node の Node Nuber と エラー内容の文字列を付加して送信する。 付加した Node Number に一致する Node がメッセージを受け取ると、 付加されたエラーの文字列をダイアログで表示する。 エラー通知用のメッセージを追加することで、 各々のクライアントに対して通知を行うことが可能になった。 @@ -543,6 +578,8 @@ \label{fig:errorAnnounce} \end{figure} +通知を行えるようになると、ユーザーに対して共有設定の方法などが簡単に通知することができる。 + \chapter{TreeVNC の評価} \section{画像データ伝達の遅延} VNC サーバー から受信する画像データ、 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。 @@ -617,7 +654,7 @@ \newpage -\chapter{ボトルネックになっている Node への対処} +\section{ボトルネックになっている Node への対処} 画像データを受け取る時間が遅い Node をそのまま木構造に配置しているとその子 Node 以下に影響を及ぼす。 そのためネックになっている Node への対処が必要である。 @@ -639,7 +676,8 @@ % 今後の課題 -\chapter{まとめ} +\chapter{結論} +\section{まとめ} 本研究では画面配信システム TreeVNC での NAT 対応、 リファクタリングによる機能改良、 TreeVNC の評価を行った。 NATを越えに対応した Direct Connection という接続方法を確立し実装した。 @@ -662,6 +700,11 @@ 今回実装したマルチディスプレイ選択の画面配信は PC の画面サイズに合わせてフルサイズで拡大・縮小する fit screen ボタンに対応しておらず、一画面のサイズの調節を行えない。 そのためマルチディスプレイの fit screen 機能を実装する必要がある。 +現在の TreeVNC は TightVNC を直接編集しているため、コードが複雑になっている。 +そのため新しい機能を入れるにしてもリファクタリングから始める必要があった。 +当研究室で開発している分散フレームワーク Alice\cite{nozomi:2016a} の例題として記述された AliceVNC は TightVNC のコードの変更点を最小限に抑え、 複雑度も低いことがわかっている。 +そのため TreeVNC で今回追加した機能を AliceVNC で再設計することが望ましい。 + %\section{Alice での実装} % 参考文献
--- a/paper/reference.bib Wed Feb 17 18:57:25 2016 +0900 +++ b/paper/reference.bib Wed Feb 17 22:06:25 2016 +0900 @@ -54,3 +54,11 @@ month = "jan", year = 2016 } + +@article{nozomi:2016a, + author = "{Nozomi TERUYA and Shinji KONO}", + title = "分散フレームワークAliceのPC画面配信システムへの応用", + journal = "第57回 プログラミング・シンポジウム", + month = "jan", + year = 2016 +}
--- a/prepaper/finalPre.tex Wed Feb 17 18:57:25 2016 +0900 +++ b/prepaper/finalPre.tex Wed Feb 17 22:06:25 2016 +0900 @@ -2,6 +2,7 @@ \usepackage[dvipdfmx]{graphicx} \usepackage{picins} \usepackage{fancyhdr} +\usepackage{abstract} \usepackage{url} %\pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会} @@ -19,24 +20,24 @@ \pagestyle{empty} \input{dummy.tex} +\renewcommand{\abstractname}{Abstract} \begin{document} \title{PC画面配信システムTreeVNCの NAT への対応} %\title{Supporting NAT in Screen Sharing System TreeVNC} \author{125716B 氏名 {伊波}{立樹} 指導教員 : 河野 真治} \date{} +\twocolumn [ \maketitle -\thispagestyle{fancy} - -\section{Abstract} +\begin{onecolabstract} An implementation of Screen sharing system is presented. TreeVNC supports multicasting high resolution PC screen using tree structured network over PCs. Copying costs are distributed instead of the centralized heavy costs on a VNC server. It also possible to change screen server dynamically without changing display cables. -TreeVNC is useful in a lecture which contains 40-60 students or small seminar. - -We add several improvements on TreeVNC, such as new connection method for supporting NAT, screen change in a separated thread, multiple screen selection, notification of connection errors. - +TreeVNC is useful in a lecture which contains 40-60 students or small seminar. +We add several improvements on TreeVNC, such as new connection method for supporting NAT, screen change in a separated thread, multiple screen selection, notification of connection errors. We also show the delay time distribution in real environments +\end{onecolabstract}] +\thispagestyle{fancy} \section{画面共有を利用したコミュニケーション} 授業やゼミ等で、それぞれが PC 端末を持っている場合では、