view prepaper/finalPre.tex @ 25:004612152453

Add fit screen section
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Wed, 17 Feb 2016 11:24:39 +0900
parents ad8f3cea4a16
children 81199769134b
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
\usepackage{url}
%\pagestyle{fancy}
\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\input{dummy.tex}
\begin{document}
\title{PC画面配信システムTreeVNCの NAT への対応}
\author{125716B 氏名 {伊波}{立樹} 指導教員 : 河野 真治}
\date{}
\maketitle
\thispagestyle{fancy} 

\section{Abstract}
Screen sharing system TreeVNC multicast high resolution PC screen using tree structured network over client's PCs.
Copying costs are balanced among these PC instead of centralize 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.

本研究ではTreeVNCの改良として、NATへの対応、 マルチディスプレイへの対応等のリファクタリングを行うとともに、TreeVNC 有用性を示すために画像データの遅延時間計測を行った。

\section{画面共有を利用したコミュニケーション}
授業やゼミ等で、それぞれが PC 端末を持っている場合では、
PC の機能を活かしたコミュニケーションが可能である。

通常の授業では先生の用意した資料、 PC 画面を見ながら授業が進むことが多い。 
ゼミでは発表者を切り替えながら発表を行う。

通常これらの画面を表示するためにプロジェクタが使用されている。
しかし、プロジェクタでは通常の授業の際、参加者はプロジェクタに集中するため、手元の PC をほぼ使用することができない。
更に手元の PC を使う際はプロジェクタと PC を行き来するため、目に負担がかかってしまう。
またゼミの際には発表者を切り替えるたびにプロジェクタにケーブルを差し替える必要がある。
ケーブルの差し替えの際に発表者の PC によってアダプターの種類や解像度の設定によって正常に PC 画面を表示できない場合もある。

画面配信システム TreeVNC\cite{taninari:2011a}は発表者の画面を参加者の PC に表示する。
そのため、参加者は不自由なく手元の PC を使用しながら授業を受ける事が可能になる。
更に発表者の切り替えの際もケーブルの差し替えずに共有する画面の切替を可能としている。

Tree VNC は VNC\cite{vnc} を使用した画面配信を行っている。
しかし通常の VNC では配信側に全ての参加者が接続するため、多人数の際の処理性能が落ちてしまう。
Tree VNC では有線でネットワークに接続した参加者をバイナリツリー状に接続し、 配信コストをクライアントに分散させる仕組みになっている。
そのため、授業で先生の画面を表示する際、多人数の生徒が参加しても処理性能が下がらない。
また、ツリーのルートが参照している VNC サーバーを変更することで、共有する画面の切替が可能となる。

しかし TreeVNC を授業やゼミで使用している中、 様々な問題が発生した。
NATを越えたネットワーク接続に対応しておらず、遠隔地などで授業やゼミに参加することが出来ない。
また、ゼミの際に、マルチディスプレイを使用して画面配信を行う際、すべての画面が配信され、不必要な画面まで表示されてしまう。

そこで、本研究では上記の問題点を解決し、TreeVNCの有用性を評価することで授業やゼミを円滑に行えることを目標とする。

\section{画面配信システムTreeVNC}
VNC(Virtual Network Computing) は、 RFBプロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。

TreeVNC は Java を用いて作成された TightVNC(Tight Virtual Network Computing)\cite{tightvnc} を元に作成されている。

TreeVNC は クライアント同士を接続させ、画面描画のデータを受け取ったクライアントが次のクライアントにデータを流す方式を取っている。
また、サーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。
バイナリツリー状に接続することで、$N$ 台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は従来の VNC ではサーバ側で$N$ 回する必要があるが、TreeVNCでは各ノードが2回ずつコピーするだけで済む。

\begin{figure}[htbp]
    \begin{center}
        \includegraphics[width=60mm]{./pic/treeVnc.pdf}
    \end{center}
    \caption{構成される木構造}
    \label{fig:tree}
\end{figure}

\section{NAT への対応}
遠隔地からでもゼミや授業に参加できるよう、 NATを越えたネットワークから TreeVNC への接続を可能にした。

図\ref{fig:directConnection} にNATを越えたネットワークからの接続を示す。
別ネットワークからTreeVNCに参加する際、 直接配信側のネットワークの Root Node に接続を行う。
この接続を Direct Connection と呼ぶ。

Direct Connection した Node はそのネットワークの Root Node になる。 
そのネットワークの他の Node はそのネットワークの Root Node に接続し、木構造を生成する。

配信側の Root Node は Direct Connection で接続された Root Node に対して Framebuffer Update で 画像データを送信する。
Framebuffer Update が送信された Root Node は そのネットワークの Node に対して Framebuffer Update を送信する。

これにより、NATを越えたネットワークの画面共有が可能となる。

\begin{figure}[htbp]
    \begin{center}
        \includegraphics[width=80mm]{./pic/directConnection.pdf}
        \caption{遠隔地 Node からの接続}
        \label{fig:directConnection}
    \end{center}
\end{figure}

\section{マルチディスプレイ対応}
画面配信側のPCがマルチディスプレイの場合、 VNC サーバーからは複数の画面全体の画像データが送信されてしまう。

授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。
そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。

ディスプレイの情報は個々のクライアントでしか取得ができない。
そのため、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。
その座標を Root Node への画面切り替えを要求する SERVER\_CHANGE\_REQUEST メッセージに付加させる。 
Root Node は 配信側の VNC サーバー に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY メッセージに送信された座標を付加する。 
VNC サーバーは要求された座標内の画像データを FRAMEBUFFER\_UPDATE メッセージで Root Node に送信する。 
これにより、一画面のみの表示が可能となる。

図\ref{fig:multidisplay} は Display1 のみを画面共有する例を示している。

\begin{figure}[htbp]
    \begin{center}
        \includegraphics[width=70mm]{./pic/shareScreenToMultiDisplay.pdf}
    \end{center}
    \caption{マルチディスプレイへの対応}
    \label{fig:multidisplay}
\end{figure}

\section{画面切り替えの安定化}
画面切り替えを行う際、 配信中の画面を停止した後に画面の切り替え処理を実行していた。
しかし、 切り替え先の VNC サーバーへの接続に時間がかかったり、 切り替え先の設定ミスなどで画面の切替がスムーズに行えない場合があった。

そこで、 画面切り替えを行う際に新しく切り替え用のスレッドを生成し処理する変更を行った。
Root Node は SERVER\_CHANGE\_REQUEST を受け取ると、 配信状態を維持したまま、画面切り替え用に新しくスレッドを生成する。
切り替え用のスレッドは切り替えに必要なデータの設定、 VNC サーバー への接続など通常の切り替え処理を実行する。
切り替えが完了した後に、 現在配信中の画面を停止し、画面の切替を行う。
切り替え用のスレッドを用意することで、配信状況を維持したままスムーズな画面切り替えが可能になった。

\section{クライアントへのエラー通知}
TreeVNC には接続しているクライアントへのエラーの通知を行うことが出来なかった。
そのため、 画面切り替えを行う際に切り替え先が VNC サーバーの共有設定をしていない場合 Root Node に接続エラーのダイアログが表示されるという実装になっており、切り替えを行ったクライアントには通知されていなかった。

この問題を解決するために新しくERROR\_ANNOUNCE というメッセージを追加した。
図\ref{fig:errorAnnounce} は Node3 に対してエラー通知を行っている例を示している。
ERROR\_ANNOUNCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したいクライアントの Node Nuber と エラー内容の文字列を付加して送信する。
付加した Node Number に一致する Node がメッセージを受け取ると、 付加されたエラーの文字列をダイアログで表示する。
エラー通知用のメッセージを追加することで、 各々のクライアントに対して通知を行うことが可能になった。

\begin{figure}[htbp]
    \begin{center}
        \includegraphics[width=70mm]{./pic/errorAnnounce.pdf}
    \end{center}
    \caption{ERROR\_ANNOUNCE メッセージの挙動}
    \label{fig:errorAnnounce}
\end{figure}

\section{TreeVNC の評価}

\section{まとめ}
本研究では画面配信システム TreeVNC での NAT 対応、 リファクタリングによる機能改良、 TreeVNC の評価を行った。 
NATを越えに対応した Direct Connection という接続方法を確立し実装した。
これにより、NAT を越えた別ネットワークのユーザーが TreeVNC に参加することが可能となった。
また、リファクタリングによって以下の機能の改良を行い、安定性の向上をおこなった。

\section{今後の課題}
今回追加した Direct Connection では NAT を 越えたネットワークの画面の配信を行うのみであ り、 TreeVNC の利点の 1 つである画面切り替え を行うことが出来ない。そのため、NAT を越えた ネットワークでの画面切り替えの実装を行う。

\nocite{*}
\bibliographystyle{junsrt}
\bibliography{reference}
\end{document}