Mercurial > hg > Papers > 2016 > parusu-thesis
changeset 18:c05bc62b50e6
Update directConnection
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Feb 2016 18:18:22 +0900 |
parents | 4da0d4e178c1 |
children | 70c1c17d8ece |
files | paper/images/directConnection.graffle paper/images/directConnection.pdf paper/images/directConnectionFrameBuffer.graffle paper/images/directConnectionFrameBuffer.pdf paper/images/directConnectionServerChange.graffle paper/images/directConnectionServerChange.pdf paper/images/directConnectionTree.graffle paper/images/directConnectionTree.pdf paper/main.pdf paper/main.tex |
diffstat | 10 files changed, 56 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/main.tex Sun Feb 14 19:56:26 2016 +0900 +++ b/paper/main.tex Mon Feb 15 18:18:22 2016 +0900 @@ -100,8 +100,7 @@ VNCを使用すればクライアント側にサーバー側の画面を表示することが可能である。 しかし、図\ref{fig:vnc}のように多人数のクライアントが1つのサーバーに接続してしまうと処理性能が落ちてしまうという問題点がある。 -また、 ゼミ等の発表で画面配信者が頻繁に切り替わる場合、 -配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。 +また、 ゼミ等の発表で画面配信者が頻繁に切り替わる場合、配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。 \begin{figure}[htbp] \begin{center} @@ -198,6 +197,8 @@ \label{fig:zrlee} \end{figure} +\newpage + \section{通信経路} TreeVNC の通信経路として以下が挙げられる \begin{itemize} @@ -284,6 +285,8 @@ poll メソッドの実行の際に await メソッドが使われているため、 次の put でデータが来るまでスレッドをブロックする。 スレッドをブロックされた場合 新しいデータが put されると CountDownLatch がカウントダウンされるため、 データの読み込みが再開される。 +\newpage + \section{木の再構成} TreeVNC はバイナリツリーでの接続という特性上 Node が切断されたことを検知できずにいると、Node 同士で構成された木構造が崩れてしまい、新しい Node が接続に来た場合に適切な場所に Node を接続することができなくなってしまう。 木構造を崩さないよう、Node 同士の接続を再構成を行う必要がある。 @@ -319,6 +322,8 @@ LOST\_CHILD によって、 切断された全ての Node を検知することができるため、 nodeList の更新が正しく行われる。 よって、新しく接続に来た Node を適切な場所に接続することが可能となる。 +\newpage + \section{共有画面切り替え} ゼミでは発表者が順々に入れ替わる。発表者が入れ替わる度に共有する画面の切り替えが必要となる。 @@ -375,7 +380,7 @@ \begin{figure}[htbp] \begin{center} \includegraphics[scale=0.5]{./images/directConnection.pdf} - \caption{NAT を越えた Node からの接続} + \caption{Direct Connection} \label{fig:directConnection} \end{center} \end{figure} @@ -389,21 +394,28 @@ \begin{figure}[htbp] \begin{center} \includegraphics[scale=0.5]{./images/directConnectionTree.pdf} - \caption{} + \caption{新しい Node の接続} \label{fig:directConnectionTree} \end{center} \end{figure} -\section{Direct Connectionでの画面配信} -配信側の Root Node は Direct Connection で接続された Node に対して FRAMEBUFFER\_UPDATE メッセージで 画像データを送信する。 -FRAMEBUFFER\_UPDATE を受け取った Root Node はデータをそのまま子ノードに流すことで画面配信を行うことができる。 +配信側の Root Node はDirect Connection で接続された Node に対して通常の子 Node と同じように FRAMEBUFFER\_UPDATE メッセージで画像データを送信する。 +FRAMEBUFFER\_UPDATE メッセージを受けった Root Node はそのネットワークの Node に対して FRAMEBUFFER\_UPDATE メッセージを送信する。 + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.5]{./images/directConnectionFrameBuffer.pdf} + \caption{NATを越えたネットワークへの画面配信} + \label{fig:directConnectionFrameBuffer} + \end{center} +\end{figure} \chapter{TreeVNC のリファクタリング} \section{マルチディスプレイ対応} 画面配信側のPCがマルチディスプレイの場合 VNC サーバーからは複数の画面全体の画像データが送信されてしまう。 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。 -そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。 +そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した\ref{parusu:216a}。 ディスプレイの情報は個々のクライアントでしか取得ができない。 そのため、配信側は画面の切り替えを行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 @@ -437,18 +449,17 @@ そのため、 画面切り替えを行う際に切り替え先が VNC サーバーの共有設定をしていない場合 Root Node に接続エラーのダイアログが表示されるという実装になっており、切り替えを行ったクライアントには通知されていなかった。 この問題を解決するために新しくERROR\_ANNOUNCE というメッセージを追加した。 +図\ref{fig:errorAnnounce} は Node3 に対してエラー通知を行っている例を示している。 ERROR\_ANNOUNCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したいクライアントの Node Nuber と エラー内容の文字列を付加して送信する。 付加した Node Number に一致する Node がメッセージを受け取ると、 付加されたエラーの文字列をダイアログで表示する。 エラー通知用のメッセージを追加することで、 各々のクライアントに対して通知を行うことが可能になった。 -図\ref{fig:errorAnnounce} は Node3 に対してエラー通知を行っている例を示している。 - \begin{figure}[htbp] \begin{center} \includegraphics[scale=0.5]{./images/errorAnnounce.pdf} \end{center} \caption{ERROR\_ANNOUNCE メッセージの挙動} - \label{fig:errorAnnounce} + \label{fig:errorAnnounce} \end{figure} \chapter{TreeVNC の評価} @@ -529,15 +540,14 @@ 画像データを受け取る時間が遅い Node をそのまま木構造に配置しているとその子 Node 以下に影響を及ぼす。 そのためネックになっている Node への対処が必要である。 -ボトルネックになっている Node への対処として CHECK\_DELAY\_REPLAY を使用している。 -CHECK\_DELAY\_REPLAY を受け取った Root Node はその Node がボトルネックなっているかの判断を行う。 +ボトルネックになっている Node への対処として CHECK\_DELAY\_REPLAY メッセージを使用している。 +図\ref{fig:fixTree}は 6台の Node が接続している状態で Node1 がネックになっている場合の木の再構成を示している。 +CHECK\_DELAY\_REPLAY メッセージを受け取った Root Node はその Node がボトルネックなっているかの判断を行う。 ボトルネックになっているなら Root Node の nodeList からその Node を削除する。 削除した Node の場所には末端の Node を配置するように CONNECT\_TO メッセージを送信する。 nodeList から削除された Node は接続されたままなので、データの受信は行うが、 木構造には入らないため、ネックになっている Node の下に新しい Node が繋がることはない。 そのためネックになっている Node 以下に影響を及ばすことがない。 -図\ref{fig:fixTree}は 6台の Node が接続している状態で Node1 がネックになっている場合の木の再構成を示している。 - \begin{figure}[htbp] \begin{center} \includegraphics[scale=0.4]{./images/fixTree.pdf} @@ -548,10 +558,37 @@ % 今後の課題 -\chapter{まとめ} -\section{NATを越えた画面切り替え} +\chapter{結論} +\section{まとめ} +本研究では画面配信システム TreeVNC での NAT 対応、 リファクタリングによる機能改良、 TreeVNC の評価を行った。 + +NATを越えに対応した Direct Connection という接続方法を確立し実装した。 +これにより、NAT を越えた別ネットワークのユーザーが TreeVNC に参加することが可能となった。 + +また、リファクタリングによって以下の機能の改良を行った。 +\begin{itemize} + \item マルチディスプレイの場合に画面を選択して配信することが可能になった。 + \item 画面切り替えの際に切り替え用のスレッドを用意することでスムーズな画面切り替えが可能。 + \item 新しくメッセージを追加することでクライアントにエラー通知を行える様になった。 +\end{itemize} + -\section{新機能の評価} +\section{今後の課題} +\subsection{NATを越えた画面切り替え} +今回追加した Direct Connection ではNATを越えたネットワークの画面の配信を行うのみであり、 TreeVNC の利点の1つである画面切り替えを行うことが出来ない。 +そのため、NATを越えたネットワークでの画面切り替えの実装を行う必要がある。 + +\ref{fig:directConnectionServerChange} は Direct Connection での画面切り替えの実装案である。 + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.5]{./images/directConnectionServerChange.pdf} + \caption{NATを越えたネットワークでの画面切り替え} + \label{fig:directConnectionServerChange} + \end{center} +\end{figure} +\subsection{共有機能の追加} + % 参考文献 \def\line{−\hspace*{-.7zw}−} @@ -568,7 +605,7 @@ %GISゼミや英語ゼミに参加した人はその分も入れておく. %順番は重要なので気を付けるように.(提出前に周りの人に確認してもらう.) -\hspace{1zw}本研究の遂行,また本論文の作成にあたり、御多忙にも関わらず終始懇切なる御指導と御教授を賜わりましたhoge助教授に深く感謝したします。 +\hspace{1zw}本研究の遂行,また本論文の作成にあたり、御多忙にも関わらず終始懇切なる御指導と御教授を賜わりました河野真治准教授に深く感謝したします。 また、本研究の遂行及び本論文の作成にあたり、日頃より終始懇切なる御教授と御指導を賜わりましたhoge教授に心より深く感謝致します。