view prepaper/finalPre.tex @ 40:fdb0ac1a90a4 default tip

Fix
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Thu, 18 Feb 2016 09:24:13 +0900
parents a55afdfb536b
children
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\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}}琉球大学主催 工学部情報工学科 卒業研究発表会}
\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}
\renewcommand{\abstractname}{Abstract}
\begin{document}
\title{PC画面配信システムTreeVNCの NAT への対応}
%\title{Supporting NAT in Screen Sharing System TreeVNC}
\author{125716B 氏名 {伊波}{立樹} 指導教員 : 河野 真治}
\date{}
\twocolumn [
\maketitle
\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.  
We also show the delay time distribution in real environments
\end{onecolabstract}]
\thispagestyle{fancy} 

\section{画面共有を利用したコミュニケーション}
授業やゼミ等で、それぞれが 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=50mm]{./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 サーバーからは複数の画面全体の画像データが送信されてしまう。
そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した\cite{parusu:2016a}。

ディスプレイの情報は個々のクライアントでしか取得ができない。
そのため、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。
その座標を 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 というメッセージを追加した。
ERROR\_ANNOUNCE メッセージは Root Nodeから木構造を辿りながら末端の Node に通信を行うメッセージで、エラー通知したいクライアントの Node Nuber と エラー内容の文字列を付加して送信する。
付加した Node Number に一致する Node がメッセージを受け取ると、 付加されたエラーの文字列をダイアログで表示する。
エラー通知用のメッセージを追加することで、 各々のクライアントに対して通知を行うことが可能になった。

\section{TreeVNC の評価}
VNC サーバー から受信する画像データ、 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。
接続する人数が増える毎に木の段数は増えていく。 そこで Root Node から木の末端の Node までの画像データ伝達の遅延を検証する実験を行った。

今回授業を受講している学生が TreeVNC を使用した状態で実験を行った。
TreeVNC には最大で17名が接続していた。 
バイナリツリーで木を構成した場合、 Node 数が17台だと深さが4となる。

図\ref{fig:depth}は深さ4 の遅延の分布を示した散布図である。
X軸はメッセージ伝達にかかった秒数(ms)、 Y軸は画像データのサイズ(Byte)である。
画像データの伝達はほぼ1秒以内に収まっているが、容量が小さい場合でも時間がかかる場合がある。
それはその送信の前に大容量の画像を送信した後の回線のDelayが残っているためだと考えられる。

\begin{figure}[htbp]
    \begin{center}
        \includegraphics[width=60mm]{./pic/depth4.eps}
    \end{center}
    \caption{データサイズと遅延の関係 : 深さ4}
    \label{fig:depth}
\end{figure}

また、この実験で1つだけ極端に遅い Node が見られた。
このような Node を木に配置した場合、その Node の 子 Node 以下に影響を及ぼすおそれがある。

\section{ボトルネックになっている Node への対処}
画像データを受け取る時間が遅い Node をそのまま木構造に配置しているとその子 Node 以下に影響を及ぼす。
そのためネックになっている Node への対処が必要である。

図\ref{fig:fixTree}は 6台の Node が接続している状態で Node1 がネックになっている場合の木の再構成を示している。
Root Node はその Node がボトルネックなっているかの判断を遅延の実験で使用したメッセージを使って行う。
ボトルネックになっているなら Root Node の nodeList からその Node を削除する。
削除した Node の場所には末端の Node を配置するように CONNECT\_TO メッセージを送信する。
nodeList から削除された Node は接続されたままなので、データの受信は行うが、 木構造には入らないため、ネックになっている Node の下に新しい Node が繋がることはない。
そのためネックになっている Node 以下に影響を及ばすことがない。

\begin{figure}[htbp]
    \begin{center}
        \includegraphics[width=100mm]{./pic/fixTree.pdf}
    \end{center}
    \caption{ボトルネックになっている Node への対処}
    \label{fig:fixTree}
\end{figure}

\section{まとめ}
本研究では画面配信システム TreeVNC での NAT 対応、 マルチディスプレイ対応、共有画面切り替えの安定化、 各 Node へのエラー通知、TreeVNC の評価を行った。

NATを越えに対応した Direct Connection という接続方法を確立し実装した。
これにより、NAT を越えた別ネットワークのユーザーが TreeVNC に参加することが可能となった。

マルチディスプレイの場合に画面を選択して配信することが可能になった。

画面切り替えの際に切り替え用のスレッドを用意することでスムーズな画面切り替えが可能。

新しく ERROR\_ANNOUNCE メッセージを追加することで各Nodeにエラー通知を行える様になった。

今回の画像データの遅延実験を行い、 ボトルネックになっているノードがあることがわかった。
また、ボトルネックになっているノードへの対処を行った。

また今後の課題として音声配信機能の実装、マルチディスプレイ時の表示画面サイズの調整を行う

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