view report.tex @ 2:b59646b8471a

update
author oc
date Tue, 28 Oct 2014 17:59:44 +0900
parents 57a52fb8840e
children f281e372d8f2
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvips]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
%\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}

\begin{document}
\title{授業やゼミ向けの画面共有システムTreeVNCの設計と実装}
\author{115747H 大城美和 {}{} 指導教員 : 河野真治}
\date{}
\maketitle
\thispagestyle{fancy} 

\section{はじめに}

% TreeVNCが作られた理由
普段授業を行う際、プロジェクタを使用し授業を進めることが多い。この場合、後ろの席から見えにくく、不便に感じる。そこで、VNCを使用し手元のパソコンに画面を出力することによって、この問題は解消される。
従来の画面共有システムVNCでは、多人数で接続すると画像データ提供側にアクセスが集中し、処理性能が低下してしまい授業の進行についていかなくなってしまう。画面表示の切り替えの際も、VNCを一度切断し、発表者の画面に接続をし直す必要が出てくる。

% 先行研究
本研究室では、授業やゼミ向けの画面共有システムであるTreeVNCの開発を行っている。TreeVNCは、クライアントをツリー状に接続させ、その上から順番にデータを流していくという方法を取り、アクセスを分散させ処理性能の低下を防いでいる。画面を切り替える際もボタンひとつで済む様に設計されていて、再接続をする必要がない。

% 現在のTreeVNCの問題
% 新たに実装を行うとかいうことを書いていく
本研究では、プレゼンテーションを快適に聴講できること、参加者同士が充分なコミュニケーションを取れることを目的として、TreeVNCに新たな機能の実装を行う。



\section{VNCとは}
VNC(Virtual Network Computing)は、RFBプロトコルを使用し遠隔操作を行うリモートデスクトップソフトである。VNCはサーバ側とクライアント(ビューア)側に分かれていて、サーバを起動し、クライアントがサーバに接続を行い遠隔操作を可能にする。


\section{TreeVNCとは}
TreeVNCは、TightVNCのjava版のビューアを元に
作成された画面共有システムである。
従来のVNCとは違って、接続に来たクライアント
をツリー状に接続させ、上からデータを流していく。
この方法を使用しアクセスを分散させ、
多人数でも性能を低下せずに、画面共有を行うことができる。
接続しているクライアントがボタンひとつで
ホストになることができ、画面切り替えのために
再接続する必要がない。

\begin{figure}[!h]
  \begin{center}
    \includegraphics[width=3cm, bb=0 0 172 156]{pic/TreeVNC.pdf}
%    \includegraphics[width=3cm]{pic/TreeVNC.pdf}
%    \includegraphics[width=3cm, bb=0 0 251 246]{pic/emblem-bitmap.pdf}
  \end{center}
  \label{fig:figure1}
  \caption{TreeVNCの図}
\end{figure}


% TreeVNCの接続方法の図を入れる


\section{TreeVNCのデバッグ}
機能向上のためTreeVNCをデバッグし、大幅な変更を加えた。


  \subsection{port番号の変更}
  TreeVNCに接続しているnodeすべてがport番号を保持するように設計し直した。
  nodeがTreeVNCに接続する際に使用されていないport番号を探し、そのport番号を保持する。
  TreeVNCには、子nodeからrootへと送信するmessageがある(Screen Change Request, lost Parent等)。
  今まではこれらmessageを、nodeからrootへ直接messageを送信していた。
  その際、node側では送信専用・root側では受信専用のportを固定の番号で開き、使用していた。

  今回設計し直したことによって、
  messageのやり取りの際の、余計な通信経路を削除した。
  そして、port番号が重複することなく、
  パソコン1台でTreeVNCを複数立ち上げることができるようになった。


  \subsection{Treeの構成の変更}

  有線と無線で別の木構造を形成するように設計し直した。

  無線での接続の場合、有線と比べてデータの受け渡しの速度が低下する。
  有線nodeと無線nodeを同じ木構造に接続すると、
  無線のnodeがデータ送受信のボトルネックになってしまう可能性がある。

  TreeVNCは、rootがnodeListというリストを持って木構造を管理している。
  有線と無線で違う木構造を形成する場合、
  このnodeListをネットワークインターフェース毎に作成しておく。
  新しいnodeを接続する場合、nodeのネットワークインターフェースを取得し、
  どのnodeListに登録されるかを決める。
  こうすることによって、有線と無線で別の木構造を形成することができる。

\begin{figure}[!h]
  \begin{center}
    \includegraphics[clip, width=5cm, bb=0 0 353 142]{pic/MultiNetworkTree.pdf}
  \end{center}
  \caption{マルチネットワークに対応したTreeVNCの図}
  \label{fig:figure2}
\end{figure}



  \subsection{ホスト切り替え時の挙動の修正}
  ホストを切り替える際にviewerを閉じる様、設計した。
  また、元のホストでは、viewerが立ち上がる様にした。
  viewerを閉じていないと、ビデオフィードバックが起こり、
  その結果が他のユーザに共有されてしまう。今までだと手動でviewerを最小化する必要があった。



  \subsection{子nodeの再接続時の挙動の修正}
  親nodeとの接続が切れた場合、接続していたnodeは再接続が必要となる。
  その際、画像データを受け取るスレッドが動作したままであった。
  そのため、再接続時に画像データの整合性が取れなくなり、エラーが生じる。
  この問題を解決するために、再接続をする際に一度スレッドを停止し、
  親nodeとの通信が確立した際に立ち上げる処理を追加した。


  \subsection{CheckDelayの再実装}
  CheckDelayを使用し、データの受け渡しの速度を計測を行う。
  rootがCheckDelayを、画像データと共にnodeに送信し、
  受信したnodeは、CheckDelayReplyをrootへ返信するよう実装した。
  CheckDelayを送信した時間と、CheckDelayReplyを受信した時間から、
  root - node間のデータ通信の速度を判定することができる。




\section{まとめ}




\section{今後の課題}
  \subsection{画像データの遅延}
  全画像データの書き換えが立て続けに起こってしまった場合、データの受け渡し処理で遅延が発生する。
  解決策として、クライアント側で最新のデータのみを出力するといった実装を行う。


  \subsection{エラーハンドリング}
  clientで起こったエラーメッセージがroot側に表示されてしまうという問題がある。
  どのclientのエラーかを検出した後、そのclientのIDを取得し、木構造を下に辿ってエラーメッセージを含むデータをclientに送信する。下へと降る際、各nodeでIDの確認をし、一致した箇所でエラーメッセージを出力するような実装を行う。


%\section{新機能の実装}
%%参加者同士の充分なコミュニケーションを提供するために、以下の機能が考えられる。
%TreeVNCを使用し、参加者が充分なコミュニケーションを行うために、以下の機能が考えられる。


  \subsection{音声データの共有}
  TreeVNCに、画像データと共に音声データを追加する。この機能を追加することによって、遠隔からでもプレゼンテーションや授業に参加できる。


  \subsection{解像度の変更}
  現在のTreeVNCは、画像データ全体を送信している。これでは共有する画面によってサイズが違い、発表者毎に表示する大きさを手元で変更しなければならない。
  画面サイズをHDサイズ(1920x1080)に固定すれば、この手間を省くことができる。


  \subsection{画面の大きさを共有する側で変更できる}
  どの画面を共有するのかを、ホスト側で指定できるようにする。マルチディスプレイを共有する場合、2つの画面が共有されてしまい、本来共有する必要のないデータまで送信することになる。
  ホストが枠を指定し、枠の大きさの画像データを共有する機能を追加する。






\begin{thebibliography}{9}

\bibitem{1}

\end{thebibliography}
\end{document}